There are many diverse talents among technologists. Some excel when challenged with creating new applications. Others love to maintain and enhance existing systems. Others thrive when developing system-level tools and utilities. Still others gain validation from designing and implementing exceptional user experiences. One of the most intriguing and compelling skill sets is that of the diagnostician.
Complex and vexing problems arise throughout software development projects. Developers are constantly diagnosing and solving these problems which make the diagnostic skill set part of every developer’s repertoire to varying degrees. Having been exposed to many software projects and many developers, I’ve noticed that diagnostic abilities are a key discriminator between good developers and great developers. Further, I’ve also noticed that the more exceptional diagnosticians often eventually find themselves in leadership roles. I have asked myself what distinguishes the skills of a great diagnostician and what these skills might have to do with career progression. I have come up with some key factors that I believe are implicated in the phenomenon:
The best diagnosticians maintain a broad view of the systems they develop. They may be experts in some parts of the system, but they understand the coupling between components and the flow of information between them. They are able to understand the system at multiple levels from logical design to physical implementation. This holistic view represents a mental map of the system and helps the diagnostician to navigate rapidly through its parts. This ability to create and maintain a big picture view is also commonly found in those who end up leading technology endeavors.
Deep Bag of Tricks
Complex problems frequently require complex solutions. Master diagnosticians maintain a deep and varied set of tools to help them explore problems. I have witnessed developers abandoning their canned tools altogether and resort to lowest common denominators techniques akin to print statements and traps when the most advanced tools give up the ghost. Innate resourcefulness and a willingness to try anything are traits found in many leaders.
Avoids Wild Goose Chases
Getting stuck on a problem is a common occurrence when diagnosing a software problem. The best diagnosticians seem to have an intuition about when they are traveling down a fruitless path. They actively and quickly eliminate fruitless paths and move onto other opportunities. Put another way; they focus on the goal of solving the problem and follow problems wherever they lead. The best leaders intuitively temper dogmatism with pragmatism to find more efficient paths to goals.
Values Accuracy over Guesswork
Making assumptions and testing hypotheses are part and parcel of the diagnostician’s trade. However, great diagnosticians temper guesswork with accurate assessments of their findings. How many times have you seen a developer insist that the source of the problem must be XYZ only to find out later that they were far off the mark? The best diagnosticians spend very little time being attached to their assumptions. They accept the evidence and move on. Leadership also requires testing assumptions based upon data and changing course when the evidence does not fit the assumptions.
Keeps Their Ego at Bay
It’s human to believe that our own efforts are probably not the cause of problems. In software development, it’s all too easy to assume that the problem is caused by someone else’s code. The best diagnosticians often assume that their software could very well be the cause of the problem and will look there first. They park their egos at the door in their search for the answer leaving no stone unturned. Leaders that are best at empowering teams frequently exhibit this same ego-less approach to social interactions. They are not afraid to admit mistakes and change course as a result.
Avoids the Blame Game
It’s all too common too for technical staff to point the finger at each other when difficult problems emerge. Master diagnosticians avoid this game altogether. They know that blame is pointless and harmful to the diagnostic relationship where collaboration is the key to efficiently solving the problem. Great leaders also focus on moving disparate teams toward a goal and know that cohesion is more effective than division.
I’ve made it my business to keep on the lookout for great diagnosticians. Frequently, these are the people who make the best leaders since they understand the overall structure of the system, know how to explore paths to solutions efficiently, value accuracy, and seek to operate with low egos and high collaboration. I see the best diagnosticians as “diamonds in the rough” when considering people for positions of technical leadership. Whatever the business or technology domain might be, I encourage the reader to keep an eye out for the best diagnosticians. I think you will find that the best among them could be your own raw materials for the next wave of leaders within your organization.