Super Hero

A couple of years after moving to the US I began work for a healthcare startup that was dealing with some serious reliability and deliverability issues. For any service provider inconsistency can destroy your chances of success, but in the literal life or death scenarios presented to us in patient care the dedication that is required and expected by your supporting staff is even more meaningful. You ask your team to make sacrifices that interfere with their families, friends, vacations and holidays. It amounts to real loses in your quality of life that may not be easy to recover.

As a lead developer in that kind of environment my job was two-fold ensure our operations continued to run as smoothly as possible by organizing, training and leading tier 3 development support. In parallel we were also tasked with providing improvements to the system that would in turn reduce our tier 3 burdens.

What we all  began to notice very early on is that the disrepair of our system began to encourage really bad habits that included a very high tolerance for risk taking in production. Now the  problems we were solving were serious, the ramifications of not resolving those problems would be disastrous. The methods for solving production problems bifurcated into two strategies, that included Lone Hero developer and the coordinated  development teams (heretofore referred to as the Avengers!)

Lone Heroes (Developer equivalent of Tony Stark)

Our team contained a lot of really smart people who had already cut their teeth in a variety of different jobs. Coming to this organization was, for many, the opportunity to put years of disciplined training to the test. What I noticed at first is that this took the form of high risk updates that mostly worked but would occasionally cause more problems. Even when it did not cause more problems it led to a entrenched tribal knowledge that team members either would not or could not formally pass to others.

Let me be clear no one ever thought this was purposeful, but the work atmosphere rewarded the solo effort in informal yet powerful ways, and so others would replicate the same behavior. Now most developers who tackle problems over the course of hours or even days will tell you there is a particular kind of rush and exhilaration you feel when you find a solution to a complex problem. Once you get the rush of success it is addictive, but it can easily become toxic especially if you are unable to unwind or release that energy. The levels of concentration one requires, reminds me of those cats chasing a laser pointer, if they see the moving red dot nothing will distract them from the a fruitless hunt, it becomes a self sustaining cycle.

Avengers (Coordinated & Talented Dev Teams)

Well functioning and mature developer teams have one thing in common. Process.

It can be informal or formal, but it is a contract that all members must willing adhere to, even if it means working at an abbreviated pace (and in the beginning it always does). The whole point is accountability and repeatability, these two pillars provide the atmosphere for the most junior of developers to respectfully challenge the work of the most senior developers and then expect fully reasoned answers.

Your particular process may be in the form of code reviews, peer programming, stand up meetings, war rooms, or business/functional documents. The lone heroes tend to buck against the process, this is normal, as they have gained significant success by working alone. While this attitude remains a burden assiduously avoided, it is not unexpected, and thus not beyond a measure of control.

There can be a real trick in convincing talented individual performers to work together in an unselfish way, but it can be accomplished with a strong and compelling vision of a future that overrides our need to be at the fore front of individual success. Thankfully, the managers and developers  I have worked with have always valued balanced and productive teams over super heroes.