This post is over 6 months old. Some details, especially technical, may have changed.

Technology Techsmology

There is an old adage,

Projects don't fail because of technology decisions

The younger me would have got all uppity and defensive when he heard this statement. As a developer/architect type whose main goal is to make key technology decisions on a project (not to mention as a person who likes to grandiously consider themselves a craftsman) this does seem rather belittling. Are you telling me all my decisions are fairly irrelevant? I'll just stay in bed then shall I?

But you know what? The statement is also completely true.

But hey, wait - do you want to know something else? Yes? Good.

The world of technology is not black and white, projects aren't either a success or a failure, it's simply not a binary system. Projects may not fail, but they could be late. They could be well over budget. They could have code bases so toxic that you need to hire contractors to do the work because no one wants to touch it. They could be so overly laden in patterns and complex architecture that even small changes take weeks or months to implement (and who foots the bill for that?).

Technology decisions can indirectly ruin the morale of your staff, muddy the relationship with your customers and generate really high turnover of staff in your company (which may be a good fit for some companies but you can never foster excellence if you don't nurture talent).

This statement can also be used as a weapon - a weapon to excuse bad decisions and hold back change (both good and bad, in short it stiffles learning). People cling to technologies that they used in the past, for fear of more pain with other technologies. They shoehorn their existing skillset into problem domains that aren't a good fit. When this happens, at the extreme you end up with specialists that simply can't adapt to shifts in technology fast enough.

So yeah, projects don't fail because of technology decisions. But you know what - if your dentist turned round to you with an evil grin and a rusty chisel and Maslow's Hammer citing - "No surgery ever went wrong because of a lack of anesthetic" - you're not likely to get in to that chair and open wide. And even if you did (maybe, you're drunk, maybe people keep telling you this dentist is the best, whatever) the experience would be painful, recovery time would be longer and subsequent treatments would probably be more painful. A rather shambling metaphor I admit but I write what my brain dictates - I have not choice in the matter.

Finally, I fully accept that many of these decisions are out of our control. Customers, especially big ones, generally have the final say, they've potentially invested a lot of time on a certain stack and have a lot of legacy (read: code that still works) solutions in play. True, but one of our goals is to at least inform these people of the alternatives and let them make an informed decision - maybe not today but soon enough the cost of developing and maintaining new systems built on out-of-support JDKs will come under scrutiny and they'll need to consider alternatives, alternatives that you've already enlightened them about.

Published in Architecture on November 05, 2012