Comments by "" (@defeqel6537) on "Continuous Delivery"
channel.
-
1
-
1
-
1
-
1
-
My (as practical as I can make them) learnings:
1) abstract the platform with the requirements you have, but learn from existing abstractions (there is a reason POSIX APIs tend to use byte streams, and HW interfaces tend to use memory addresses); both specificity and generality are important, and usually at odds with each other
2) test your system's behavior using automated tests
3) tests should run quickly and produce repeatable results
4) the "unit" in unit tests is the test, and does not relate to the size of the code/system under test
5) (at least) for unit testing, use in-memory (fake) implementations of abstracted platform services, avoid "mock testing" where you specify behavior on test-by-test basis
6) get feedback for your system as early and as often as possible (see continuous integration, continuous deployment)
7) use a source control system
8) neither implementation code, nor test code is holy, feel free to remove code and tests when no longer needed (changed requirements, or test case covered by another test)
9) prefer removing code to modifying code when behavior / specification changes
10) learn software patterns and anti-patterns, and their "when, where and why"s
11) spend time learning new APIs with Proof of Concept implementations before implementing them
Additionally:
- learn to communicate with other people, this includes your code, some diagramming skills can help
- find comfort: whether talking about production environment, testing systems, build systems, programming languages, frameworks & APIs, editors, keyboard or key mappings, do your best to reduce discomfort / friction in your day-to-day
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
@Mio2k10 I agree, and disagree. Generally, yeah, fully refined increments should be preferred, but as long as it is flagged out, or similar, I'm starting to see a benefit with WIP state changes being merged too. I do think merging WIP requires care though, otherwise may lead to just frustrating your team members.
As for testing, my point was that the tests (usually) shouldn't rely on what the code looks like, so they may be written quite early on, after a bit of planning.
As for test types, I prefer unit tests, by which I mean code I control the inputs and outputs for. IMO people should avoid micro-testing, where they try to test each function or class separately (unless those are your deliverables, in which case thoroughly test them).
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1