In case you missed them, here is a curated list of the best posts from the past week of The DevOps Zone. This week: You can't have exactly-once-delivery, how to stop worrying and get productive, evolution in software development (an allegory), how acknowledgement is the best motivator, and why software testers should learn to code.
There is no such thing as exactly-once delivery. We must choose between the lesser of two evils, which is at-least-once delivery in most cases. This can be used to simulate exactly-once semantics by ensuring idempotency or otherwise eliminating side effects from operations. Once again, it’s important to understand the trade-offs involved when designing distributed systems. There is asynchrony abound, which means you cannot expect synchronous, guaranteed behavior. Design for failure and resiliency against this asynchronous nature.
There is no shortage of task management software or sites. But one doesn’t need anything fancy. In most cases one doesn’t need more than a simple editable list (a.k.a. a text editor, or a notepad,) and a timer. By planning, knowing where one is going, controlling the effort, and monitoring progress, we are as organized and methodical as we can be, with minimal overhead.
Evolution can be cited as a metaphor for iterative development: every new iteration (or commit at an ideal smallest scale) produces a shippable, new version of the software that has evolved from the previous one. We can take some lessons where patterns observed over million of years of evolution apply to a software development scenario.
Using estimates as motivation *may* be effective in the short term, but in the long term I believe it is dangerous and more likely to negatively affect motivation. As an alternative, in the talk I briefly reviewed Dan Pink's work on motivation that centers on Autonomy, Mastery, and Purpose
By arming testers with some coding skills, they will be better able to evaluate the program to ensure it's meeting expectations. They can also work more successfully with developers to execute changes and reduce any issues with the overall product.