Chris Sterling has a Thoughtful Blog Post about the IT Manager’s (nearly inevitable) decision to take on tech debt in order to hit a project date.
Here’s the comment I left on his bog in reply:
It depends. I agree, in general, that IT managers are behaving in ways that seem rational for the system that are participating in – if by rational we mean that they are figuring out the things that get them rewarded and doing those things.
That is moral relativism; you can use the same logic to excuse the American Slave-Holding Southerner in 1860.
So while I may not like the behavior, and I might not even think it’s right, I admit that it’s nearly impossible for an IT line manager to rise above it.
I don’t look to IT managers to solve this problem. It is not the IT manager that actually /does/ the shortcut of “bad” technical debt; he simply exhorts and begs and pleads the tech staff to go faster.
It is the tech staff that makes the hacks, and thus the tech staff that needs to change behavior.
How do they do that? It’s pretty simple(1). Give estimates that are /responsible/. When asked to compress, negotiate scope, not features. Constantly improve our craft. Periodically reflect on the work we are doing. Mentor others and seek mentors. Most importantly, never, ever make the same moral mistake of the Nazi Prison Guard when taking on tech debt: “I was just following orders.”
I’m not saying put you company out of business because you need to take a “principled stand”, I’m saying technical folks need to take responsibility for our tech debt and not blame management(2).
Now, I don’t want to eliminate all tech debt. I don’t even think that is possible. But if we can reduce it by a sizable fraction – say cut the average (bad) tech debt of a shop in half – we will significant increase the velocity of software development, thus increasing the financial stability of our companies, and our own sense of health and well-being.
The void of bad code is a pretty big hole – an empty bucket. If what we do can be a sizable splash into that bucket, well, I would be pleased.
(1) – I said simple, not easy. Personally, I am interested in mental constructs designed to make the personal choice t “do the right thing” less painful and more rewarding. I shared one in the workshop: Limit moral hazard in the workspace by getting the dev closer to the customer.
(2) – If you look carefully at my comments during “the weaker brother” at the tech debt workshop, that is one thing I consistently did – took personal responsibility for my tech debt choices, instead of blaming the management bull-whip. We need more of it.