In the previous installment of our instruction about how to kill your software development capacity (https://softwareforprofit.com/2020/02/09/killing-software-development-capacity-part-2-philosophizing/), we discussed the danger of spending all your time thinking about software without actually delivering any.
It is important that we also look at the opposite side of the tension between thinking and doing.
As we said in the previous piece, making rapid, intuitively driven decisions can be a powerful way to make progress. In a lot of cases, it is perfectly effective – since human beings can rapidly perform with a fairly high degree of accuracy without explicitly thinking through the things they are doing.
In his biography about Steve Jobs, Walter Isaacson said of the man that he sought the simplicity that comes from truly understanding the problem, not that which comes from ignoring complexity.
Gaining understanding about a thing is a matter of learning about its details and the logical connections between them. In any real world situation this means understanding a vast quantity of information. And the sum effect of this understanding is that when it is acted upon, the action is more thoroughly optimized for the context it exists within.
All action that isn’t harmonized for a specific purpose is eliminated. This leads to simplicity, elegance and most notably effectiveness.
Think about hitting a baseball. It’s an activity that is fairly obvious on the surface. You grab a bat, someone throws a ball, and you swing at it in order to propel it back at the field. To be really great at hitting a baseball, though, takes a mastery of a number of different details. Control of your own body, from your feet to your head. Ability to make rapid judgements about the speed and trajectory of the ball as it approaches. And the timing to not only hit the ball but to place it between the right angle centered on the batter’s location.
Players spend years thinking about and mastering all of these details. And through this they gain a very, very informed intuition. An intuition so powerful that in the short amount of time that it takes for the ball to travel from the pitcher’s mound to the batter, any number of minor adjustments and corrections can be made.
The simplicity and elegance of a professional ball player hitting a baseball is the culmination of study and practice. The sum effect of understanding countless variables. Showing itself as an informed intuition supporting the subtle but really mind-boggling act of hitting a baseball.
Again, a 10 year old might pick up a bat and swing it at a slowly-tossed ball. But hitting a ball traveling at 90 miles per hour while subtly changing its direction such that it isn’t caught by one of the highly-skilled opposing players – that is something different.
And the same is true for software delivery. Any 10 year old with a keyboard can print “Hello World” on the screen. It takes an intuition informed by years of study and practice to adapt to the whims of screaming stakeholders, delivering software that meets a need while operating amongst an internet intent on bringing it down.
The things we study are agile, and TDD. SOLID and Site Reliability practices. And much more. And each of these domains are worlds of details within themselves. With every single detail we master we add to a powerfully informed intuition that will make our delivery of software that much more valuable to the people we build it for.
And after all – making amazing software is what it’s all about.
So let’s – Play Ball!!