Development is War.
So my mind operates on analogies/similes/metaphors, and I often find it difficult to explain concepts to people without a proper analogy. Today I came across a great one that I’d like to share. While I’m using developers as an example, it also applies to DBAs and most of IT- it’s just more pronounced in the dev world since there’s usually so many of them.
Development is war. It’s a never-ending series of fast-paced, multi-fronted episodes that take place in multiple theaters. Developers are broken into squads to fight different fronts, and there’s a whole command structure in place over top of it. You may win a battle (finish an application), but normally it results in you moving to the next fight. This continues on forever. Foreign Legions (H1B) and Mercenaries (contractors) also fit into the equation. Directors take on the role of a generals, business and marketing people of bureaucrats, and upper management assumes the role of the rulers.
I have a friend who’s a developer at a company with morale problems. Like many companies, the recession has hit them hard. Three rounds of layoffs, 10% paycuts, and outsourcing have done quite a bit of damage, but it’s the continued poor management that has lead to a morale death spiral.
Poor management decisions have angered many of the better developers, often being pulled off an important project to work on the pet project of a low level bureaucrat. Contracts are signed with vendors before developers even know about the project. Questions like “what is the SLA?” and “How much load can you handle?” are never asked. Accountability is a word often extolled, but rarely practiced.
The talented, knowledgeable developers have begun to flee. Upper management has made no efforts to hang onto the people, and have even admitted that they will not do anything about the exodus. These are the same developers who have taken a crumbling system and over the last three years rebuilt it into something far, far better. Their true value is not in what they’ve done, but what they will do. The younger and more inexperienced developers look up to them and learn from them. These talented developers can mentor, answer questions and prevent design mistakes before they get into production.
What makes these talented developers so important? They are usually a combination of three traits:
- Experience- they’ve been developing for 25 years and have had multiple jobs, so they’ve been exposed to many styles and pitfalls. Often wary of fads.
- History- They’ve been with the company for 13 years and know the systems, why cruft exists, and what exists that can be reused. Hesitant to change the status quo.
- Raw Talent- The most infuriating type- brash, cocky, yet brilliant. They’ll come up with an awesome new product that will bring the customers in (let them prototype, but not implement).
These are the three types of people you need on your team. The rest of us are mere peons. We do the grunt work, but rely on these guys to lead us. Without them, bad design and implementation decisions are made.
Now, to come back to the war analogy- these senior developers are the Heroes. They’re the King Arthurs, Conan the Barbarians, and Hercules. They rally the troops and lead the charge. Without them, all is lost- this is something that is often forgotten by those in power.
When times are tough and cuts need to be made, sometimes a hero is sacrificed. When one is killed in a sacrificial move (layoff), there is mourning and anger, but those left press on and find others to follow.
Now, you can lose a lot of peons, or one or two heroes, and morale will still be good, but when you take continual losses, the troops begin to wonder- how long before we’re overwhelmed? Do we have the manpower to still succeed? The rulers (upper management) may hire some mercenaries (contractors) to fill the ranks, but at the end of the day they don’t care what happens- they’re there to get paid then get out. It’s not the same thing- you need leaders.
The troops still press forward, shaken. Meanwhile the rules continue to pick fights (new projects), switch priorities, and stretch the teams further and further. Worse is when they hire a group of mercenaries who talk a big game but don’t know how to fight (code). If they’d let someone who knew how to code do the vetting, it could have been caught before they get on the battlefield and get annihilated.
With all the losses, sacrifices, and overall ineptitude, one of those heroes finally realizes they’re on the wrong side. In disgust, they throw down their weapon and walk away. Some call them traitors, some are saddened to see them go, and yet others will follow them out. The rulers never bother to ask why they left- they’re too narcissistic, or worse, they don’t care. They don’t need that hero to lead the troops- THEY are the leader, not the hero. Besides, they can just hire more mercenaries (you know, the ones with dubious motives).
So, what happens when ALL of the heroes start to walk away? The [smart] peons follow suit. Some will try to hide and hope no one notices them. The end result is an aimless, weakened force of mediocrity with no leadership. You can’t win a war with a couple of peasants too dumb to even bring a pitchfork (let alone a sword) to battle. They just don’t have what it takes to do it by themselves.
This is where my friend’s company is at right now. The surrounding army of 80 IT people has dwindled down to half it’s size. They had been fortunate to have a large collection of heroes- close to 20% of the troops were incredibly talented. Now all that’s left? Three (including him). All three have doubts as to why they’re still there, and are looking to abandon ship.
As for me? I’m just a lowly peon. If I was in their shoes, I’d stick around just for spite. I’d stay, surrender, and watch with a smile as the rulers who destroyed everything good are beheaded, and new rulers put in their place.
But hey, that’s the fortunes of war.