Basic tools 🛠️
I’ve been developing software for a pretty long time. Though I’m not a gray beard yet, neither figuratively nor literally, I’ve gained enough experience to see some patterns emerge. One of them has to do with what tools one uses to solve a problem.
- The beginner developer uses basic tools to solve a problem because it’s all they know. They lack both the skill to use advanced tools and the understanding of why they might want to.
- The intermediate developer learns to use more advanced tools, and finds many ways to apply them. They may often take pride in using these tools, viewing it as proof of their advancement.1
- The advanced developer knows and understands the advanced tools, including their strengths and limitations. However, experience has taught them that many technologies cost more than they’re worth.2 They often prefer basic tools, saving the advanced tools for when they are truly needed.3
This results in the counter-intuitive pattern that beginners and advanced developers often choose the same basic tools. This phenomenon is captured by the “bell curve” meme, which highlights how advanced developers may come full circle, returning to simpler solutions but for complex reasons.
This meme obviously does not capture all the nuance, but I still think it captures the essence pretty well. Beginners use basic tools due to lack of skill, while advanced developers choose them because they know they’re often enough. It reminds me of the marksmanship maxim, slow is smooth, smooth is fast.
The big question in my mind is, can you go from beginner to advanced without having to write all those unnecessarily complex solutions of the intermediate developer? I’m asking for a friend. 😉
-
We can all use a reminder that feeling smart is a warning sign from time to time. ↩︎
-
A great example of when basic tools are the best, is this anecdote about Niklaus Wirth. ↩︎
-
I’ve written about using simple technology before, such as in Does this scale down? and Use boring technology. ↩︎