{"id":28766854,"url":"https://github.com/danjamk/app-rewrite-analysis","last_synced_at":"2026-02-25T21:04:20.678Z","repository":{"id":297786962,"uuid":"997901028","full_name":"danjamk/app-rewrite-analysis","owner":"danjamk","description":"A simple model on the impacts of tech debt and software rewrite","archived":false,"fork":false,"pushed_at":"2025-06-11T16:20:32.000Z","size":276,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-17T12:05:34.214Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danjamk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-07T12:42:35.000Z","updated_at":"2025-06-11T16:20:35.000Z","dependencies_parsed_at":"2025-06-07T13:40:18.052Z","dependency_job_id":"2ab375cf-a8ba-480d-8d61-7609a6e71dab","html_url":"https://github.com/danjamk/app-rewrite-analysis","commit_stats":null,"previous_names":["danjamk/app-rewrite-analysis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danjamk/app-rewrite-analysis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjamk%2Fapp-rewrite-analysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjamk%2Fapp-rewrite-analysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjamk%2Fapp-rewrite-analysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjamk%2Fapp-rewrite-analysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danjamk","download_url":"https://codeload.github.com/danjamk/app-rewrite-analysis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjamk%2Fapp-rewrite-analysis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29839964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T20:42:33.054Z","status":"ssl_error","status_checked_at":"2026-02-25T20:42:21.322Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-17T12:05:32.667Z","updated_at":"2026-02-25T21:04:20.673Z","avatar_url":"https://github.com/danjamk.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Legacy Code and Technical Debt\n## A model to help decide to refactor or rewrite\n\nAfter years of passionate investment into an application, there comes a time when you will be challenged\nto push on and refactor a problematic platform or to rewrite it.  This is a difficult and scary proposition.\n\nBeing an engineer, I wanted to create a model that could help with the decision process.  Included here\nis a simple model you can take and modify to enhance your own analysis.  \n\nNote, there are MANY intertwined factors that should influence your decision, and this analysis is only a small part.  \nI provided some additional food for thought below.\nRegarding this model's accuracy: It is limited.  I find the power in a model is not its accuracy or answer, but what the creation process does in understanding the issue and the sensitivity of various factors.\n\nThe final note: AI tools are **RADICALLY changing** the velocity curve of development.  The model has a place to input an estimate\nbut my example does not represent the magnitude of this potential. \n\nThe Excell based model is here: [Rebuild-analysis-model.xlsx](Rebuild-analysis-model.xlsx)\n\n### Development Velocity comparison for a rewrite\n![Rebuild vs. Rewrite velocity](feature-velocity.png)\n\n### Relative Costs of development over time\n\u003ca href=\"https://danjamk.github.io/app-rewrite-analysis/feature_cost_curve.html\" target=\"_blank\"\u003eInteractive Relative cost chart\u003c/a\u003e\n\n![Relative Cost](relative-costs.png)\n\n## Other Factors to consider\nHere are more key factors to consider when deciding between rewriting vs. refactoring:\n\n**Technical Factors**\n- **Code maintainability** - How difficult is it to make changes, fix bugs, or add features to the current codebase?\n- **Architecture limitations** - Does the current structure fundamentally prevent you from achieving business goals or scaling requirements?\n- **Technology stack obsolescence** - Are you using deprecated frameworks, unsupported languages, or technologies that make hiring difficult?\n- **Performance bottlenecks** - Are there systemic performance issues that can't be resolved through optimization?\n- **Security vulnerabilities** - Does the current system have fundamental security flaws that are expensive to patch?\n\n**Business Factors**\n- **Time to market** - Refactoring typically allows faster delivery of new features while rewriting delays everything\n- **Risk tolerance** - Rewrites carry higher risk of scope creep, missed deadlines, and introducing new bugs\n- **Team expertise** - Does your team understand the existing system better than they would a greenfield project?\n- **Customer impact** - Can you afford to pause feature development, or do you need continuous delivery?\n- **Budget constraints** - Rewrites are typically more expensive and take longer than initially estimated\n\n**Hybrid Considerations**\n- **Strangler fig pattern** - Can you gradually replace components while keeping the system running?\n- **Incremental refactoring** - Can you improve the codebase piece by piece rather than all at once?\n- **Domain boundaries** - Are there clear modules that could be rewritten independently?\n\nHere are two thoughtful and somewhat contrasting views on the topic to help you think more as well.\n- [Modernizing Legacy Code: Refactor, Rearchitect, or Rewrite?](https://vfunction.com/blog/modernizing-legacy-code-refactor-rearchitect-or-rewrite/)\n- [Code Rewriting: When and Why](https://waverleysoftware.com/blog/code-rewriting-when-and-why/)\n\nThis article is not directly related to this topic, but I feel it is core to the underlying topic with some great data.  \n[Developer Velocity: How software excellence fuels business performance](https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/developer-velocity-how-software-excellence-fuels-business-performance)\n\n\n## References on for the model\n\n1. **TinyMCE White Paper: Opportunity Cost of Technical Debt** (2023)  \n   URL: https://www.tiny.cloud/technical-debt-whitepaper/  \n   *Discusses the magnitude of technical debt issues, citing Microsoft's 2017 study showing 58% of developer time spent on code comprehension, and McKinsey's finding that 30% of CIOs believe more than 20% of technical budget is diverted to tech debt resolution.*\n\n2. **CodeScene: The Business Costs of Technical Debt** (PDF)  \n   URL: https://codescene.com/hubfs/calculate-business-costs-of-technical-debt.pdf  \n   *Provides metrics linking code quality to business impact and automated code review methodologies.*\n\n\n**Note:** The specific numerical progressions shown in the cost curves (e.g., 1x → 7.5x → 18x multipliers) represent synthesized patterns based on these research findings rather than direct empirical measurements from a single study. The research consistently shows that technical debt significantly increases development costs over time, but specific quantitative progressions vary by organization and context.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanjamk%2Fapp-rewrite-analysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanjamk%2Fapp-rewrite-analysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanjamk%2Fapp-rewrite-analysis/lists"}