The Key to Successful Software
With a title like that, you’re probably expecting to hear about the elusive silver bullet–that one ingredient that makes projects finish on-time and within budget. We all know that that’s a pipe dream … or is it? If there were three things that were the most critical factors in determining if a software endeavour were to succeed, what would those be? What would the most important of those three be? One word: People (capatilisation intentional).
Joel Spolsky runs a successful software company, and ‘casts to the masses on a regular basis; and guess what makes him excited? Figuring out the best way to get the very best people on board. He’s identified the proverbial Goose (that lays the golden egg) and things can only get better. Developers have the latest toys at their disposal; enormous, luxurious displays, motorised desks and their own offices (with a view!). Because Joel has realised that once you’ve bagged the alpha geek, the story is only beginning—a really productive “smart and gets things done” geek works best when surrounded by the most scintillatingly cool toys (multi-screen/big screen and really fast machine) and quiet … yes quiet (or put another way–”freedom from interruption/distraction”) makes an enourmous difference to productivity. Justin Etheredge echoes some of these sentiments in this well-written whinge-fest. Joel has spared no expense in clearing the path for his people because he groks it. That being said though, not just anyone is hired at FogCreek and often good people are overlooked, but at the end of the day it’s all in aid of attracting the Best of the Best because once again … he groks it.
When the lone hero development model breaks down due to sheer project size, we need to move onto teams … or groups of co-working people. It’s just an extension, so excellent people beget excellent teams and as Martin Fowler points out, it isn’t methodologies that succeed or fail, it’s teams that succeed or fail. Excellent teams will always succeed.