Software development is like golf in that your chosen path to the pin is a primary problem.
The choice involves weighing your capabilities (people), the course (technology), and the conditions (market).
Confident you can do anything? Bring out the big guns and send it over that treeline on the left. If you make it, you must land it among that sea of traps. This is the most common choice in software development, and the #1 reason why we so frequently turn “par 5″s into 10, 15, and 20s.
Don’t have a team of Tigers? Then go long down the center if you can avoid that large sand trip on the left and lake beyond it. But is this abstract little map accurate enough? Does it tell us about the 50 yards of soggy turf there in the middle? How about wind howling left to right over the lake? Unless you’ve played this hole before you don’t know. What makes software development so tricky is by definition we never play the same hole twice. Technology is changing around us, even while we make our own changes.
Want to make sure you don’t turn a par 5 into a 10? Land it short of the traps on the fairway and take it from there with comfortable strokes. There’s a price to pay for this caution: no holes in one for you. You’re less likely to be a hero this way, but in team-scale software development, the hero model will fail you are sure as a week in Vegas, anyway.
And, sometimes, the conditions are particularly bad. In the downturn of 2008/2009, one could say the conditions for technology products are analogous to “a raging hurricane, with chance of nearby volcanic eruption and ash over the course.” So take care. Be humble. And may you keep both your work in progress and your golf scores down.
(apologies to all software developers offended by an anology from the “sport of salespeople and CEOs”. Think of it as an analogy to bridge the divide)