This was inspired by a coworker making production changes late one Friday afternoon. Someone commented that making changes right before the weekend is Wild West crazy, and wearing a cowboy hat would be appropriate.
That got me thinking - over time, behavioural patterns emerge which reflect the attitudes and habits of developers. The following are the main personalities as I see them.
Typical quote: "Everybody ready? Stick to the plan, guys.”
- Has full overview of current status and consequences of potential changes
- Makes backups of everything before starting
- Makes no production changes unless absolutely necessary
- Analysis, changes and result are all documented
- Uses test scripts during development
- Uses automatic build and deployment scripts
Watching the Engineer in action is like: "Morning Mood" by Edvard Grieg
Typical quote: "Cover me, I'm going in!"
- Has a strategy for deployment, execution and fallback
- Often uses automated test, build and/or deployment scripts
- Seldom enters a live situation without cover from squad members
- Can improvise when needed, but makes rational decisions which can be documented and defended afterwards
- Has a documented plan, and documents the results
Watching the Soldier in action is like: "Ride of the Valkyries" by Richard Wagner
The Silent Assassin
Typical quote: "...[faint swoosh]..."
- Confident of own ability, always works alone
- Likes to apply changes manually rather than use build/deployment scripts
- Makes improvised changes without notification
- Leaves no documentation or clues to what changes were made
- Seldom makes backups
- Risky tactics, but gets the job done somehow
- Damaging consequences are not discovered until it's too late
Watching the Silent Assassin in action is like: "Flight of the Bumble Bee" by Nikolai Rimsky-Korsakov
Typical quote: "YIIIIEHAAAA!"
- Shoots from the hip, deploys untested code and config changes
- Lone gunman, often works alone ("this server ain't big enough for the two of us")
- Often skips automated scripts in favor of manual changes to save time
- Makes production changes at random times, without notifying customers and colleagues
- Chance of successful outcome is like a duel - 50/50
- If the site/server survives, it is often full of "bullet holes"
Watching the Cowboy in action is like: "The Good, the Bad & the Ugly" by Ennio Morricone
Typical quote: "AAAARGH! Take THIS! And THAT!"
- Works without a plan, just attacking randomly until it somehow works, or breaks completely
- Applying random untested changes without realizing the consequences
- Improvises and applies changes manually rather than using automated build/deployment scripts
- Provides no documentation of changes
- Leaves the site/server in a ravaged state afterwards
Watching the Berserker in action is like: "Carmina Burana: O Fortuna" by Carl Orff
Typical quote: "Oops, I did it again."
- Works alone, often at times when no-one else is available to help (nights, weekends)
- Makes changes without notifying customers or colleagues
- Takes no backups, documents nothing
- Uses no automated scripts for testing, build or deployment
- Manually deploys untested code and config changes
- Limited troubleshooting ability
Watching the Clown in action is like: "Requiem: Dies Irae" by Wolfgang Amadeus Mozart
We actually have these hanging on our office wall as a reminder of our responsibility.
Which hat is yours?
We've all met variants of these developers. We've probably all been a little of each type ourselves at some point. These are of course tongue-in-cheek sterotypes, but there's an element of truth in all of them.
I'd like to think most of us aspire to be a mix of the Engineer and the Soldier, circumstances allowing.
Which hats have you encountered? Are there any hats missing?
Which type of hat belongs to you?