Tools of The Effective Developer: Make It Work – First!
I’ve come across many different types of developers during my nearly two decades in the business. In my experience there are two developer character type extremes: the ones that always seek and settle with the simplest solution, and the ones that seek the perfect solution, perfect in terms of efficiency, readability or code elegance.
Developers from the first group constantly create mess and agony among fellow developers. The second group contain developers that never produce anything of value since they care more for the code than they do for the result. The optimal balance is somewhere in between, but regardless of what type of developer you are: you should always start by making it work, meaning implement the simplest solution first.
Why spend time on an implementation that isn’t likely to be the final one, you might ask. Here’s why:
- The simple solution helps evolving the unit-testing safety net.
- The simple solution provide rapid feedback, and may prevent extensive coding of the wrong feature. It is like a prototype on the code level.
- The simple solution is often good enough, and – with a working solution ready – you are less inclined to proceed and implement a more complex solution unless you really have to. Thus avoiding premature optimization and premature design, that makes you add features that might be needed in the future.
- With the simple solution in place, most integration and programming interfacing is done. That makes it easier to implement a more complex solution.
- While implementing the simple solution, your knowledge of the system increases. This helps you make good decisions later on.
This may all sound simple enough to you. After all, the habit of Making It Work First comes naturally to many developers. Unfortunately, for me, I’m not one of those developers. I still let more or less insignificant design issues consume an unnecessary amount of time. The thing is, it is hard to find the perfect design on the first try. The perfect design may not even exist, or cost too much to be worth the effort.
That is why I struggle to attain the habit of Making It Work First.
Previous posts in the Tools of The Effective Developer series: