My personal plan, instead of retiring, is to work on inventing solutions to the issues plaguing large and complex software projects. One of my primary sub-goals under this mission, is to create a new programming language that'll handle complexity excellently, while also making it hard for a programmer to write bugs in it (strong static type system, deep static analysis, thorough linting, some kind of automatic proofing or verification, paradigms that make writing bugs less likely, paradigms that handle modularization and complexity gracefully, etc).
Overall, when there are big problems in the world (poverty, human rights abuses, climate change, bad software), I want to try to use my skills and abilities toward solving those problems, rather throwing my hands in the air, and giving into hopelessness.
with respect i think it's a combination. business demands value delivery and features on a constant basis, and programmers are constantly layering crap over crap in order to deliver. nobody stops and says "hey, wait a second - let's pause, and figure out how we're going to invest now to make the changes you're asking for easier in the future." programmers need to learn to identify when this is happening (a technical skill) and demand change, and product needs to learn to listen and understand the consequences of not heeding this advice. because after 5 - 10 years of 100 different people working on a given system, the complexity becomes unmanageable, and the business grinds to a halt. and then heads start to roll. and yet the people demanding the new features now are never going to have suffer the consequences, because they'll be off to another venture in 5 - 10 years.
You are describing one set of organizational and cultural problems with software engineering that can only be solved through a cultural and political approach
Other organizations and cultures have different sets of problems.
Agreed. A new language will not solve garbage in, garbage out problems. A lot of times even when a BA tries to untangle the mess of business practices by carefully documenting it and proving that a better way exists, some stakeholders can still find it challenging adapting to a well intended change.
My personal plan, instead of retiring, is to work on inventing solutions to the issues plaguing large and complex software projects. One of my primary sub-goals under this mission, is to create a new programming language that'll handle complexity excellently, while also making it hard for a programmer to write bugs in it (strong static type system, deep static analysis, thorough linting, some kind of automatic proofing or verification, paradigms that make writing bugs less likely, paradigms that handle modularization and complexity gracefully, etc).
Overall, when there are big problems in the world (poverty, human rights abuses, climate change, bad software), I want to try to use my skills and abilities toward solving those problems, rather throwing my hands in the air, and giving into hopelessness.