Yes, true, but to me this sounds a bit idealistic. I want to add this not as a rebuttal, but consideration.
It’s extremely important that software engineers know how to avoid technical debt by not being sloppy when they begin to “Make it Work.” Paying down tech debt can easily be skipped unless a team is highly diligent. Sooo many companies suffer from this. If the programmer(s) can’t give a shit at the start, or have the knowledge and experience to set up a basic structure that won’t implode, then “Make it Right” becomes “Rebuild It.”
I think this really cannot be stressed enough: Know Your Shit. You will only save everyone time and money and you will be so thankful you avoided making what you feel are the least sloppy mistakes. Making something that works doesn’t mean it has to take longer to make it right. Knowing how/what/why of basic structuring as you begin building is the skill of a master professional. Starting clean and simple is probably the best thing a programmer can do for the project. Complexity/Time = Risk. When a team has started sloppy, “Make it Right” becomes a cost/benefit analysis that is often only considered from a short term perspective as there are more features to build and reducing tech debt is seen as a waste of time and money because it can kill the progress of what is being shipped. Yeah, this sounds crazy, but we’ve all seen it and it pulls your sanity apart.
Your company may preach that they aren’t waterfall, but they are. In almost every company, there’s always some stakeholder who promises what cannot be delivered by a certain time. The entire engineering/product dev teams do scrum, velocity becomes a quota and asses are on the line. The project managers lose sight of shipping what is “done” for each release and upper level directors and product owners are caught in a CYA spiral that becomes a vortex of dread. Where did it all start, aside from badly managed expectations by incompetent business stakeholders? Sloppy, unskilled programming. Know Your Shit.
I am ok with it if some of you think I sound like a raving, burned out lunatic. Now get off my lawn, damnit.