So programmers should write bad software to keep their jobs? And civil engineers should build bad bridges to build them again a bit later? And doctors?
So programmers should write bad software to keep their jobs? And civil engineers should build bad bridges to build them again a bit later? And doctors?
Because digital bits are easily preserved, it was a tempting fantasy that we could build perfect software cathedrals immune to the ravages of time. Of course what we found is that in the physical world, matter decays, but the laws of physics remain constant. In the digital world, the matter stays the same, but the environment decays.
It's different because civil engineers and doctors will get sued if they mess up. Software engineers are generally not held responsible for their own work. Even big software consulting firms like IBM have had their share of multimillion dollar failed projects and the repercussions for them have been minimal - They still keep getting big contracts from governments around the world; they say that no one ever got fired from choosing IBM... Maybe they should be!
There is a tendency to put all the responsibility on project managers who don't understand the code. Companies are terrified of giving their engineers any leverage so they will do everything in their power to avoid it; that means hiring more project managers, implementing more strict project management practices (e.g. rigidly adhering to all Agile/Scrum practices), using more advanced project management tools (e.g. Jira instead of Trello), using more rigid frameworks and platforms (e.g. TypeScript instead of JavaScript), more thorough testing (100% unit and integration test coverage), etc...
Success in the tech industry is so centralized (winner-takes-it-all) that the efficiency of programming practices don't matter at all. Most top engineers at top companies are good at comming up with complex solutions which give them more leverage over their employers.
When conducting job interviews, companies don't differentiate between engineers who love coding from those who love money. That's a big mistake. At least on a subconscious level, the engineer who prefers money is mentally hardwired to increase complexity while the other engineer is hardwired to reduce complexity.
The entropy of the creation and evolution of software gets tangled. We can do our utmost best, but unless we spend an equal (or sometimes greater) amount of time untangling (refactoring), and unless customers' needs suddenly become simple and static and uniform so we don't need to be adding features, we'll still have jobs.
Here is a quote from that article:
"The costs to develop a new antibiotic drug are no less expensive compared to development of drugs for other therapeutic areas, yet the commercial potential and return on investment for companies developing new antibiotics are significantly lower than drugs to treat chronic conditions such as diabetes or heart disease," said Gary Disbrow, deputy director of the Biomedical Advanced Research and Development Authority, which sits within the U.S. Department of Health and Human Services.
[1]https://www.businessinsider.com/major-pharmaceutical-compani...