February 14, 2020

Heading, Speed and Acceleration

I have three observations based on past software projects that I’ve worked on, they are heading, speed and acceleration.

Heading means doing the wrong thing well is usually not useful, except as a learning exercise.  A “high velocity” sprint when none of that code should have been written at all, is catastrophically unproductive. This applies to whole companies but also projects, teams and individuals. If you spend a single day writing code that ends up being 100% useless, again except for the learning value, it is a huge waste of time, calories and electricity.

You could say well someone else is setting the direction I’m just doing the work? That applies to working at Walmart but building software is so complex and so hard it takes everyone on the team helping to set the direction.

Speed relates to this saying from the military “slow is smooth and smooth is fast”. That means go as fast as possible so long as you are not making mistakes that negate all of your speed. Going slower in the small often leads to going faster in the large.

I’ve worked on projects that went 1000 mph and ones that went 10 mph, and both were going as fast as they could without things getting rough. Maximum safe speed depends highly on what you are building, is it a bridge over a stream or are you colonizing Mars? Have you colonized Mars before?

Keep in mind though on slower and harder projects you can still have individual teams or people going 1000 mph if you have carved out something that’s cut-n-dry, or they have built it before. Or the goal is simply to learn and the results will be thrown away.

Finally the degree that acceleration contributes to the the success of a software project long term is hard to overstate. Imagine it takes you three months to build a house, but you spend a year and now you have a machine that can stamp out 100 houses in three seconds. That’s how software works. You build things that accelerate building more things, and there is no speed limit.

I don’t like the term “tech debt” because it implies the best you can do is something “that has no glaring problems” when in fact the best you can do is something so amazing it will revolutionize your entire industry. A Honda Civic has no “tech debt” but if you enter it in an F1 race you will come in last.

So heading, speed, acceleration are all things to keep in the back of your mind as you code away.

No comments:

Post a Comment