Enterprisey technology stacks

Almost all large companies I have come across have some standards regarding the technology stack that they are using.

The main reason behind this is economy, that developers should be able to rotate between projects and that operations should only have to worry about a limited number of software products. Something like that anyway

However nice this seems, it never delivers on its promise. It is much like the Gantt charts - looks nice, promises a lot, delivers zilch. Not counting the enormous upgrade cost when the whole stack is upgraded after 20 years - COBOL anyone?

It is like a bakery standardizing on a given type of flour, salt and sugar and keeping all ovens at the same temperature, so that the bakers are familiar with the environment should they start working in another part of the bakery.

So you have your chocolate cakes baked using the same ingredients as your sour dough bread, and of course the whole thing is a mess. After a while the bakers start changing oven temperatures without telling anyone - not out of rebellion but because they have to. Different cakes are baked in different ways, and software is just the same.

There is hope though; I was delighted to read this interview with Werner Vogels, CTO of Amazon:

Developers of our services can use any tools they see fit to build their services. Developers themselves know best which tools make them most productive and which tools are right for the job. If that means using C++, then so be it. Whatever tools are necessary, we provide them, and then get the hell out of the way of the developers so that they can do their jobs.

That is one man that understands development.

While writing this, Matt wonders how to get stuff past the acceptance red tape. I have no good answer. Guerilla coding is the insubordinate way. Nagging for a very long time has worked a few times. But I probably lean towards Alistair Cockburns analogy with the old joke:

Paddy stopped cutting the hedge as the big car drew up beside him and an English visitor enquired, “Could you tell me the way to Balbriggan, Please?” Paddy wiped his brow. “Certainly, sor. If you take the first road to the left… no still that wouldn’t do… drive on for about four miles then turn left at the crossroads… no that wouldn’t do either.” Paddy scratched his head thoughtfully. “You know, sor, if I was going to Balbriggan I wouldn’t start from here at all.”

Meaning, Matt might be in the wrong place to do what he wants to do.

Finally - if an organization should standardize on something it should be protocols. HTTP for example. Build it, make it accessible with external API’s, and implement it the way you see fit. Just like Amazon does it. Loosely coupled large grained components the way EJB’s never were.