Vectorium Blog Posts

Insights from the Vectorium team on software, technology, digital transformation and engineering culture.

How to Take Over an Unfinished Software Project

Taking over an unfinished software project starts with access, backups, a technical audit, and critical user flows. Use this practical checklist to decide whether to continue, partially rewrite, or rebuild.

·

When a software project stalls, the first reaction is often: “We should rebuild it from scratch.” That can be the right answer, but it is usually too early to decide.

Before replacing anything, you need to understand what still works, what is missing, why delivery stopped, and whether the current system can be taken over safely.

Having the source code is not enough. A real handover also includes the repository history, database, infrastructure, domains, third-party services, mobile store accounts, deployment process, and the credentials needed to operate the product.

Start by securing access and backups

Before a new team changes code, collect the assets needed to reproduce and operate the system:

    Source repository access and commit history A recent database backup Cloud and server access Domain and DNS access App Store and Google Play accounts, if applicable Payment, email, SMS, analytics, and other third-party accounts Environment variables and API credentials Design files and product documentation The current bug list and unfinished feature list

    If these pieces are missing, the technical handover is not complete.

    For GitHub-hosted projects, repository ownership can be transferred between users or organisations. GitHub documents the transfer process and notes that permissions and related settings should still be reviewed after the move. See the official GitHub repository transfer guide.

    Audit the code before deciding to rewrite

    Old or inconsistent code can make a rewrite feel attractive. The problem is that a rewrite also discards working business rules, integrations, edge cases, and decisions that may have taken months to discover.

    A short technical audit should answer one practical question:

    Can this system be developed safely and sustainably from its current state?

    At minimum, review the following areas:

    AreaWhat to verifySetupCan the project be started in a clean environment?ArchitectureAre critical modules understandable and changeable?DataAre schema, migrations, and backups under control?TestsAre important user flows protected by tests?DeploymentCan releases be repeated without manual guesswork?SecurityAre there exposed secrets, outdated dependencies, or access-control gaps?

    Security reviews are more useful when they are based on a repeatable standard rather than personal preference. The OWASP Application Security Verification Standard provides a structured reference for reviewing application security controls.

    Continue, partially rewrite, or rebuild?

    After the audit, the project usually falls into one of three paths:

    ConditionLikely approachThe system runs, the data model is sound, and problems are limitedContinue on the existing codebaseThe core is usable but some modules are difficult to maintainRewrite selected partsThe architecture, data model, or security foundation is fundamentally unsafeEvaluate a broader rebuild

    A percentage-complete estimate is often misleading. A product can have 25 finished screens out of 30 and still be far from usable if authentication, payments, checkout, or another critical workflow does not work.

    A better question is: how many critical user journeys work end to end?

    What should the first week look like?

    The first days of a takeover should reduce uncertainty rather than add new features.

      Inventory repositories, accounts, servers, services, and databases. Create fresh backups and record the current production state. Run the project in a clean development or staging environment. Test the critical user journeys. List blockers that prevent a stable release. Reduce the first recovery milestone to the smallest useful scope.

      The goal is not to promise a delivery date immediately. The goal is to make the unknowns visible and decide what should be fixed first.

      What should you ask the previous team to hand over?

      A written checklist makes the transition easier for both sides:

        Repository access or repository transfer Production and staging access Database backup Domain and DNS credentials CI/CD configuration Mobile store accounts Third-party service accounts Design files API documentation Known bugs and unfinished features

        Repository access alone is not a complete handover. The product owner should also control the accounts and infrastructure required to run the product.

        Review access if the system contains personal data

        If the application stores customer, employee, or other personal data, old accounts, production permissions, secrets, and data exports should be reviewed as part of the takeover.

        For teams operating under the GDPR, Article 5 requires personal data to be adequate, relevant, and limited to what is necessary for the stated purpose. The principle is useful during a takeover because it encourages teams to review what data is collected, where it is stored, and who still needs access. See the official GDPR text on EUR-Lex.

        Five questions to ask the incoming development team
          What will you verify before changing the product? How will you decide between continuing, refactoring, and rebuilding? How will you test without putting the live system at unnecessary risk? How will you define the first stable release? If your team leaves later, can another team take over the system without starting from zero?

          The last question matters. A good rescue effort does not only restore delivery. It also makes the product easier to operate, document, and hand over again.

          Common mistakes during a software project takeover

          Starting feature work before the system can be reproduced

          If nobody can reliably run the project outside the current production environment, adding features increases risk. First make the system reproducible.

          Rewriting because the code looks unfamiliar

          Unfamiliar code is not automatically bad code. A rewrite should be justified by concrete architectural, security, maintainability, or product constraints.

          Ignoring infrastructure and third-party dependencies

          A product can depend on payment providers, scheduled jobs, object storage, push notifications, DNS settings, and external APIs that are not obvious from the application repository. These dependencies need to be mapped before ownership changes.

          Trying to rescue everything at once

          The fastest path back to delivery is often a smaller stable release. Recover the essential workflow first, then improve the rest in controlled iterations.

          Conclusion

          The right first step in an unfinished software project is not a new feature and not an automatic rewrite. It is a structured technical assessment of access, data, code quality, deployment, security, and the product's critical user flows.

          Sometimes the existing system should be continued. Sometimes a few modules should be replaced. In other cases, a rebuild is the safer option. The decision should come after a focused technical audit, not before it.

          If you need to take over an existing product, stabilise it, and continue development, you can review our custom software development service or tell us about the current project.