The most important goal in designing software is understandability
ntietz.com
ntietz.com
And yes if N hours spent on making a design more understandable gives a better value/cost, than any other usage of those N hours, then it is the right choice. But that happens very rarely in my experience.
Having said that, the #1 most valuable thing you can do IMHO is to make the software architecture simple and automatically testable. That is almost guaranteed to give you a better ROI than any other activity.
Try being a ceo and tell your employees: all I care about is high top line and small bottom line. It smacks of talorism.
I'm working on a 5 million line commercial successful software service in C. Its been hacked on for years with little refactoring. There's no guides, architectures docs, or even engineering notes for the systems most important concepts. It's a pain in ass! It works and it's a mess.
In other words, you just proved my point.
The fact that it is a pain in the ass for you working on it has nothing to do with the ROI of the software. Think like a business person not a developer.
If the potential value of someting is saving/preventing future costs that thus would not occur, was that real or not?
ROI is an external viewpoint on a blackbox investment at a point in time. At best it is a speculation based on assumptions and beliefs when discussing the future.
What is the ROI of seatbelts and airbags in your car? 0 right up to the point where you get into an accident.
And yes all plans and speculations are based on assumptions and beliefs about the future. Obviously. ROI is what you use to measure if your assumption/beliefs are correct after you make a change.
For example, the claim that spending $ making the software more understandable will increase ROI is easily tested. However what you really need to test against is the ROI of spending the same $ adding features instead.
The article argues that the ROI of improving the software always in all cases is a better ROI than any other possible investment. That is simply not true.