Comments by "" (@defeqel6537) on "Continuous Delivery"
channel.
-
19
-
16
-
12
-
11
-
10
-
10
-
6
-
5
-
5
-
4
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
Tooling is an interesting topic. There are some basics, like debugging, though that can be a rather large topic by itself, but overall you can waste quite a bit of time by exploring different tools, without necessarily finding much benefit. Language servers, fuzzy search and editor (whatever your preference) shortcuts are probably the most impactful for day-to-day workflow, personally I like to explicitly trigger the (language server) suggestions, but that's a matter of preference. For a good flow, I also prefer my tools to be very light, so my thoughts don't start to wander. Beyond that, it's difficult to estimate what tooling to spend the time to learn, especially since much of the time the decision of which tools to use is out of our hands as individual developers.
3
-
3
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
@SteinGauslaaStrindhaug Yeah, I guess it depends on the culture. Personally, I don't really put things in Slack / Teams, nor read it very often, and just make backlog items with the relevant information and inform the team the next day about it. I don't like to interrupt or be interrupted while focusing.
I guess, the example of build server being broken would be an exception to that, as that should be fixed as soon as someone notices, so should be communicated ASAP, but other things can usually wait until the next morning (e.g. new alignment meetings with other teams, requirement changes, reporting a new bug, etc.)
2
-
2
-
2
-
1
-
1
-
1
-
1
-
1
-
1
-
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