The biggest problem in the software development profession is that it is not enough to just develop an app or a system that works as expected. Relatively speaking, to design and code something that works as expected is the easiest part. The real issue is related to maintainability. Which is why most of the effort when building software goes to refactoring.
I'd say that, in my experience, when it comes to quality software products, more than 90% of the activities related to software development are spent on refactoring. All the best practices (XP, clean code, TDD, etc.) are proposed with one goal in mind: to enable and ease refactoring.
If a software product is not being maintained by continuously refactoring it, such a product quickly deteriorates into an unmanageable mess. Next thing you know, the team is deployed on yet another complete rewrite. What a waste!
After spending some time developing apps with the assistance of AI, I've come to the conclusion that refactoring and maintainability may gradually cease to be the center stage in software development activities. Since more and more code will be written and reviewed by AI, it becomes less and less critical that the code is readable, well structured, easy to understand, easy to reason about, and easy to improve. It is now the job of the machines to keep maintaining the code they have written. Our job is to guide the machines toward what needs to be implemented; their job is to deal with the nitty-gritty -- how to implement it and how to improve it.
Discussion about this post
No posts
The right direction for modern software developers
I feel like that assumes that the AI is expansive enough to detect and work around masses of spaghettish code. Is it? I fear the AI will end up hitting the same issues we do but it'll be obfuscated from us.