Os desenvolvedores não conseguem concordar com a direção do código. Você deve refatorar ou reescrever do zero?
Quando os desenvolvedores entram em conflito sobre a direção do código, escolher entre uma refatoração e uma reescrita é fundamental. Para tomar uma decisão informada:
- Avalie a escalabilidade e a flexibilidade da base de código para determinar se melhorias incrementais serão suficientes.
- Considere o tempo e os recursos disponíveis; uma reescrita completa pode ser muito cara.
- Avalie os riscos e benefícios potenciais de cada abordagem para o sucesso de longo prazo do seu projeto.
Você já enfrentou essa escolha em seus projetos? Que fatores influenciaram sua decisão?
Os desenvolvedores não conseguem concordar com a direção do código. Você deve refatorar ou reescrever do zero?
Quando os desenvolvedores entram em conflito sobre a direção do código, escolher entre uma refatoração e uma reescrita é fundamental. Para tomar uma decisão informada:
- Avalie a escalabilidade e a flexibilidade da base de código para determinar se melhorias incrementais serão suficientes.
- Considere o tempo e os recursos disponíveis; uma reescrita completa pode ser muito cara.
- Avalie os riscos e benefícios potenciais de cada abordagem para o sucesso de longo prazo do seu projeto.
Você já enfrentou essa escolha em seus projetos? Que fatores influenciaram sua decisão?
-
If the written code has fundamental issues, such as not following basic patterns like SOLID principles or core OOP concepts, it is better to rewrite it from scratch. However, if only specific details need improvement, refactoring is preferable. Overall, the first choice is refactoring, followed by rewriting if necessary.
-
Rewriting an older codebase is often risky. It may cover many subtle bugs and edge cases that are difficult to unravel. Rewriting means re-exposing all of these issues. Incremental refactoring is often the safer strategy in this case. Of course there are exceptions. For example, if the technology is so outdated that the ongoing maintenance costs of even a refactored codebase will outweigh any short term benefits.
-
Sí, me he enfrentado a esta decisión y siempre depende del contexto. Cuando el código es difícil de mantener pero aún funcional, prefiero refactorizar por etapas para minimizar riesgos y costos. Sin embargo, si la base de código es un obstáculo insalvable por ejemplo, tecnologías obsoletas o deuda técnica extrema una reescritura puede ser la mejor opción a largo plazo. Factores clave en mi decisión incluyen el impacto en el negocio, la capacidad del equipo para manejar una reescritura y si hay una oportunidad de mejorar significativamente la arquitectura sin detener el desarrollo.
-
Ali Ahmad
Sr. Software Engineer | Team lead | JavaScript & Typescript | Microservices | AWS & DevOps
I've faced the refactor vs. rewrite dilemma often and found the decision rarely hinges on technical factors alone. My approach: First, quantify technical debt using metrics (code coverage, complexity scores, deployment failures) to move beyond opinion-based debates. Then consider three critical factors beyond the code itself: 1) Team continuity -Who built the original system and are they still available? 2) Business timing -Is market pressure allowing for the learning curve of a rewrite? 3) Incremental value - Can we deliver improvements while refactoring? I've learned hybrid approaches often win - strategically rewriting critical components while refactoring others, delivering value continuously rather than making an all-or-nothing bet.
-
It’s a risk reward thing: I have rarely seen an epic rewrite pulled off successfully, in no small part because the rewrite usually needs to have feature parity with the legacy app that has had years (if not decades) to improve. In the rare cases I’ve seen it succeed, it takes a strategic and intentional commitment from the c-suite to spend upwards of 3x to 5x the annual dev budget of the legacy app in order to get to actually achieve feature parity on a timeline your customer base will tolerate. So to me the decision to do the epic rewrite comes down to the true commitment of the people controlling the budget. As the epic rewrite is usually tough to swallow, I have seen a lot of professional success with incremental strangler strategies
Classificar este artigo
Leitura mais relevante
-
Design de softwareVocê está diante de um dilema de qualidade de código. Como você prioriza novos recursos do projeto?
-
Práticas de engenharia de softwareSua equipe resiste a priorizar a qualidade do código. Como você pode convencê-los de sua importância?
-
Engenharia de ComputaçãoOs desenvolvedores entram em conflito sobre decisões técnicas. Como você navega em direções conflitantes do projeto?
-
Desenvolvimento de softwareVocê se depara com uma crise de projeto. Como você pode manter a qualidade do código de alto nível?