Every software engineer reaches a point in their career where they begin to lean towards one of two problem-solving paradigms, one called a wizard, and another called a barbarian.
Wizards tend to take their time solving issues, leading to slow code delivery and missed deadlines. Barbarians like to brute force their way through problems, finding a "good enough" solution as fast as possible, ultimately producing potentially unstable, bug-ridden code.
The end goal is to find a middle ground between a wizard's thorough understanding and a barbarian's focus on delivery. I strive to guide my developers to this compromise until they have found the mental discipline, organization, and work strategies to maintain situational awareness when sinking into problems.
The Thoughtful Wizard
A wizard craves deep dives. Once a problem presents itself to this engineer, every possible path forward must be considered before choosing the "correct" one. If the wizard takes too long in their research, which often happens, they could run out of time and hastily write a subpar solution.
The Zealous Barbarian
A barbarian wants to execute and do it quickly. As soon as the engineer gets something working, it's time to ship. Often this leads the barbarian to do too little research and have an incomplete understanding of the problem.
I found myself stuck in one of these camps as a junior developer. It was hard to balance deadlines with the boundless volume of knowledge I wanted to consume. I would fail to deliver value to my customer or project because of my ongoing research and lack of proper time management.
Balance The Powers
To tap into both sides of this paradigm and find a happy balance, developers should specifically schedule time for research and time for coding. Engineers working towards the middle should review their own pull requests and schedule code postmortems with an archetypal counterpart on their team.
Having one mentor for each paradigm, and mentoring a more junior developer, can likewise go a long way towards helping a developer find balance.
Over the years, I have had the great pleasure of working with immensely talented people. We have forged complex software together — celebrating victories and supporting one another through defeats. Our diverse team primarily fuels our success. Some people lean more towards the wizard paradigm, others towards barbarian. Each one brings different qualities to the table, and I've watched most of them grow into balanced engineers who can slow down for research and speed up when timely delivery is essential.