They way this report is framed made me angry.

Stripe, first of all, your report misrepresents software development reality.

You present software maintenance as a massive waste of time and money. But that’s just not true. Maintenance is how software stays relevant.

Laws and regulations change, technology platforms change, features rise and fall in importance, the users themselves change over time. There are endless justifications for ongoing software maintenance.

For as long as software serves a useful purpose, it will need maintenance.

Yet you present maintenance as somehow bad, when in reality maintenance is the natural consequence and an essential aspect of software development, and it has always been so.

You’re also pandering to an ignorant attitude that believes software can be written free from bugs and perfectly formed from the outset. Thus all it takes, thinks the ignorant executive, is for my coders to be better than they are.

You highlight the cost of “bad code”.

You don’t provide a definition of bad code, so here’s mine:

Bad code is code that is hard to understand and/or hard to modify without breaking things and introducing errors.

If you know software developers, you know we are, on the whole, vocal and assertive about the avoidance and elimination of bad code. Look at what we talk about at conferences, in blog posts, and on twitter.

Writing and learning about good code is a consuming passion for many developers. Search for “clean code” to see countless examples.
How do we avoid writing bad code in the first place? That is a billion-dollar question (or $85bn as you say).

Everyone without exception agrees we should not write bad code, yet bad code persists.

Bad code is a function of ambiguous requirements, unreasonable deadlines, lack of training and support, lack of a proper testing regime, lack of appropriate project sponsorship, internal politics, lack of funding, and so on.

Yes, some engineers will at times be lazy, thoughtless, short-sighted. Just like their managers. Just like their manager's manager.

But in the round, bad code exists primarily because of human, social, and political problems we all share.

And then consider how we eliminate bad code. We do that with maintenance of the code, Stripe, this is the very thing your report damns as waste.

To maintain software, we refactor, we add tests, we discuss and debate, we tease apart and reconstruct. To the software developer, maintenance is normal and expected. It’s part of the job. You build it, then you support and maintain it.

The reason I’m so hot about this is that I know (from watching it happen again and again) how many executive level managers will interpret your report. They will think it’s because their programmers are lazy, feckless, indolent, and narcissistic.

It’s cognitively and politically much easier to blame bad code on an engineer’s attitude than the ecosystem in which they work.
And these executive level managers will vent their frustration on those same engineers and look for quick wins like off-shoring.

"If we’re going to suffer from bad code, at least let’s get it cheaply."

Or the exec might crank up their attitude of command-and-control to bring those apparently miscreant coders to order. Misery for the coder, and never works out well.

Stripe, your report does not help us get better. You’re throwing fuel on the fire.

(Originally posted most of this Twitter, wanted it here to increase the chance of someone relevant at Stripe seeing it)