I'm currently working on a multiplayer lobby server and I've found myself rewriting it three times now, and I'm hoping this will be the final iteration. The first attempt had potential, but I overused arrays, which negatively impacted performance. The second version improved performance with better lookups and message systems, but I ended up with issues like coupled logic and multiple sources of truth. In this third round, I've applied lessons learned and restructured the code into smaller modules with a solid data scheme, ensuring only one source of truth. This entire process spanned about one to two weeks, factoring in daily life distractions like work and social outings. I've realized what works and what doesn't, which makes it easier to avoid common pitfalls. Now I'm curious: How often do you find yourselves rewriting your applications? Does having a solid plan beforehand help? And in the industry, how common is it for developers to acknowledge mistakes in their code but opt to continue with it instead of fixing it?
5 Answers
I think it's pretty frequent to plan rewrites, especially moving from a rough initial prototype in something like Python to a more robust implementation in C++. It's important to recognize when things are off track, even if it means admitting mistakes. Often, if people don't have a list of issues with their designs, it doesn't mean the code is flawless but rather they haven't identified the areas that need improvement. There's a well-known caution against complete rewrites of mature products; instead, it's better to refactor and enhance what you have while preserving the benefits of years of fixes.
Experience has taught me that even if a codebase feels like it needs a total rewrite, it often just needs a series of smaller changes. It sounds like with your transition from version 2 to 3, you managed to refine it rather than completely start over, which is great! A solid plan can be useful, but there will always be unexpected challenges along the way. There's also this concept called 'Worse is Better,' which suggests that sometimes it's more efficient to quickly implement imperfect solutions to learn what actually needs fixing.
Overall, full rewrites are a rare occurrence in a professional setting. They're usually a methodical effort over time rather than an immediate reaction to issues. Most developers look to patch and refactor incrementally to keep the product viable while managing the constraints of deadlines and other stakeholders.
In my experience, major rewrites are quite uncommon and usually take place over an extended period rather than all at once. It’s often more about gradual adjustments. Of course, in personal projects, I might try rewrites when I see better solutions, but full rewrites are less practical in industry settings.
I refactor small parts of my code regularly, but a complete overhaul of a program is rare for me. Usually, it's about improving readability and maintainability rather than starting from scratch. If it's work-related, I tweak bits during projects. For personal projects, it happens occasionally, especially when I want to experiment with different approaches.

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically