Development Productivity Philosophy
Wisdom… My approach is to first understand the product, the value it provides, the developers that build it, and the processes they employ to do so. I identify friction, risk, points of pain, and bottlenecks. One cannot know which direction to go until one first knows where one is. Often, the most valuable skill is not being able to solve a problem, but knowing which problems to solve.
Discipline… Next comes the application of tools, techniques, and workflow change to reduce friction, manage risk, alleviate pain, and open bottlenecks. This can frequently be a challenging part of the process, because it may involve shifting perspectives and behaviors. It can take time to see the positive results, and sometimes the greatest benefit is simply not seeing the negative results that one otherwise would have seen. In the long run, the goal requires what Friedrich Nietzsche referred to as a “long obedience in the same direction”.
Software Release Equanimity… Of course, this is that goal. Released code will have bugs. Production servers will malfunction. Networks will behave nondeterministically. These are simply realities and – like suffering – we cannot escape them; however, we can control how we respond to them. Automation gives us confidence that builds and releases are consistent and repeatable. Versioning code and release artifacts allows us to know the content of our deployments with certainty. Continuous testing gives us assurance that new changes have not broken existing functionality. Monitoring deployed products gives insight into ways they can be improved. Combined, these enable us to accelerate the speed of development and respond with resilience to unforseen problems. The fear and stress of software releasing can be replaced with peace… and perhaps even joy. (Especially if revenue increases.)
To contact me via email, use zen at buildbuddha.com.