---
title: "The software development process, week by week"
canonical: https://wavect.io/software-development-guide/software-development-process/
language: en
description: "A healthy custom software project moves through five phases: a first call to check fit, a discovery phase that turns the idea into a scoped plan, a build that …"
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

How a build runs

# The software development process, week by week

A healthy custom software project moves through five phases: a first call to check fit, a discovery phase that turns the idea into a scoped plan, a build that ships working software in weekly increments, quality work that runs through the whole build, and a complete handover that leaves you owning everything. This guide walks what happens in each phase, how long the whole thing takes, and what you should be able to see at every step. If you cannot click working software within the first weeks of the build, something is wrong.

Short answer

A software project runs from a first call through discovery, ships in weekly reviewable increments, and ends with documentation, tests, observability, and a complete handover.

Best for

- Founders hiring a software agency for the first time
- Teams comparing how different agencies actually work
- Buyers who want checkpoints to hold a vendor to
- Anyone unsure what happens between contract and launch

Not for

- Teams with a mature in-house delivery process that already works
- Buyers who want to disappear for three months and collect a finished product
- Projects with nobody available for a weekly review

// 01

## Compare the options

How a healthy process differs from agency theatre, phase by phase.

| Phase | A healthy build | Warning signs |
| --- | --- | --- |
| First call | Fit and scope questions, and a clear no if it is not a match. | A price quoted on the spot for an unscoped build. |
| Discovery | Requirements, architecture, roadmap, riskiest assumption tested. | Skipped entirely, or a paid document nobody pressure-tests. |
| Contract | Fixed price for locked scope, weekly retainer if scope moves. | Hourly billing with no defined outcome. |
| Build rhythm | Working software you can click every week or two. | Status slides and burndown charts instead of software. |
| Quality | Tests, CI/CD, and monitoring grow with the code. | QA squeezed into the last two weeks before launch. |
| The end | Documentation, credentials, and a complete handover. | Knowledge stays with the vendor so you cannot leave. |

// 02

## Where Wavect lands on this

Every build we run follows the same shape, because the failure modes are always the same. The first call is thirty minutes to find out whether you should build at all. Sometimes it ends with us telling you not to. Then [discovery](/software-development-guide/what-is-a-discovery-phase/) turns the idea into requirements, an architecture, a roadmap, and a test of your riskiest assumption, from EUR 3,500, deducted from the final invoice.

With scope on the table, you pick the contract that matches your certainty: a fixed-price Werkvertrag if scope is locked, a weekly retainer you can cancel any week if the product is still moving. The build ships in increments you can review, working software every week or two, not status slides. Tests, CI/CD, and monitoring grow with the code instead of being bolted on before launch. Our [QA checklist](/software-development-guide/software-qa-checklist-before-launch/) shows what has to be in place by then.

The engagement ends when the [handover](/software-development-guide/software-handover-checklist/) is complete: code in your repositories with full history, documentation, a test suite and pipeline you can run yourself, and every credential rotated to you. A process with no defined end state is designed to keep you dependent.

// 03

## Cost, risk and timeline

Discovery From EUR 3,500 Deducted from the final invoice, and the input every honest estimate depends on.

Build rhythm Weekly increments Working software to review every week or two, from early in the build.

Full timeline Weeks to months A scoped MVP has shipped in 6 weeks. Complex products take months. Nobody honest quotes a date before discovery.

// 04

## Where this usually goes wrong

- Signing a fixed price before anyone scoped the build, then fighting over every change.
- Months of silence followed by a big-bang delivery that misses the mark.
- Progress measured in tickets and slides instead of software you can click.
- QA and documentation postponed to the end, then cut when the timeline slips.
- No product owner on the client side, so decisions stall for weeks.
- No defined end state, so the handover never happens and you cannot leave.

// 05

## The checklist

What you should be able to verify in each phase of a build.

- A first call that questions your scope instead of just quoting it.
- A discovery phase that delivers requirements, architecture, a roadmap, and a tested riskiest assumption.
- A contract that matches your certainty: fixed-price Werkvertrag for locked scope, cancellable weekly retainer if not.
- Working software to review every week or two, starting early in the build.
- A change process that prices and reprioritizes openly instead of absorbing scope silently.
- Tests, CI/CD, monitoring, and error tracking built during the build, not after it.
- A handover with code, history, documentation, credentials, and infrastructure access.

// 06

## What this looks like in our work

The same process on real timelines: discovery, weekly increments, complete handover.

### [PromptID](/case-studies/promptid/)
- **Status:** Live
- **Outcome:** 6 weeks - 0 to Production
- **Summary:** AI-native assessment platform, 0→production in 6 weeks under compressed market pressure.
- **Stack:** NestJS, NextJS, LangChain

### [LivLive](/case-studies/livlive/)
- **Status:** Live
- **Outcome:** +1,000 - Concurrent Users
- **Summary:** AR-RWA platform: $2M+ raised through the product, 1,000+ concurrent users, six weeks flat.
- **Stack:** Solidity, Typescript, React

These are selected projects, not our full portfolio. We have shipped 75+ products since 2018.

// 07

## When this fits, and when it does not

// 01

### When Wavect is the right fit

- You want checkpoints you can verify, not promises you have to trust.
- Someone on your side can review working software every week or two.
- You want to own the code, docs, and infrastructure at the end.
- You want an honest no early instead of a messy yes late.

// 02

### When we are not the fit

- You want to hand off a spec and reappear at launch.
- Nobody on your side can make product decisions week to week.
- Procurement requires hourly billing and timesheets.
- You measure progress in hours logged, not software shipped.

A process you can verify week by week is the difference between hiring a partner and funding a black box.

// 08

## Related services & reading

- [SERVICE Custom Software Development](/services/software-development/)
- [SERVICE Software Quality Assurance](/services/software-quality-assurance/)
- [SERVICE MVP Development](/services/mvp-development/)
- [GUIDE What is a Discovery phase](/software-development-guide/what-is-a-discovery-phase/)
- [GUIDE Software handover checklist](/software-development-guide/software-handover-checklist/)
- [GUIDE Software QA checklist before launch](/software-development-guide/software-qa-checklist-before-launch/)
- [CASE STUDY PromptID: 0 to production in 6 weeks](/case-studies/promptid/)
- [CASE STUDY LivLive: 0 to launch in 6 weeks](/case-studies/livlive/)

// 09

## FAQs

### What are the phases of a software development project?

Five, in practice: a first call to check fit, a discovery phase that produces scope, architecture, and a roadmap, a build that ships working software in weekly increments, quality work like tests, CI/CD, and monitoring that runs through the whole build, and a handover that transfers code, documentation, and credentials to you. The names vary between vendors. The checkpoints should not.

### How long does custom software take?

A scoped MVP takes weeks. We have taken products from zero to production in six weeks, and that pace requires a tight scope and a decisive product owner. Products with heavy integrations or compliance take months. Any date quoted before discovery is a guess, so fix the scope first, then hold the vendor to the date that comes out of it.

### What is agile vs waterfall in practice?

[Waterfall](/glossary/waterfall/) plans the whole project up front and builds it in one pass. [Agile](/glossary/agile/) builds in short cycles and adjusts as it learns, with [Scrum](/glossary/scrum/) as the most common framework. In practice a healthy project mixes both: discovery is a small planning phase before code, then delivery runs agile in weekly increments. The label matters less than whether you see working software regularly across the whole [SDLC](/glossary/sdlc/).

### What happens when requirements change mid-project?

They will change, and a healthy process plans for it. Small changes are typically absorbed within the current increment. Larger ones get an impact assessment, a priced change request, and an open reprioritization with you. The warning sign is a vendor where change is either a fight or a silent budget overrun.

### How much of my time does the process take?

Discovery is the intensive part, because your answers define the scope. After that, plan for a weekly review of working software and availability for decisions in between. What a build cannot survive is having no product owner on your side, because every open decision stalls the work.

Last reviewed: 2026-07-06 by [Kevin Riedl](/team/kevin-riedl/) [wiki ↗](https://www.wikidata.org/wiki/Q139796365)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/software-development-guide/software-development-process/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-07-06",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-07-06",
      "url": "https://wavect.io/software-development-guide/software-development-process/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/software-development-guide/software-development-process/#article",
      "@type": "Article",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-07-06",
      "datePublished": "2026-07-06",
      "description": "A healthy custom software project moves through five phases: a first call to check fit, a discovery phase that turns the idea into a scoped plan, a build that ships working software in weekly increments, quality work that runs through the whole build, and a complete handover that leaves you owning everything. This guide walks what happens in each phase, how long the whole thing takes, and what you should be able to see at every step. If you cannot click working software within the first weeks of the build, something is wrong.",
      "headline": "The software development process, week by week",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-07-06",
      "mainEntityOfPage": "https://wavect.io/software-development-guide/software-development-process/#webpage",
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        {
          "@type": "Service",
          "name": "Custom Software Development",
          "url": "https://wavect.io/services/software-development/"
        },
        {
          "@type": "Service",
          "name": "Software Quality Assurance",
          "url": "https://wavect.io/services/software-quality-assurance/"
        },
        {
          "@type": "Service",
          "name": "MVP Development",
          "url": "https://wavect.io/services/mvp-development/"
        }
      ],
      "name": "The software development process, week by week",
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "reviewedBy": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".cmp-hero__headline",
          ".cmp-hero__lead"
        ]
      },
      "url": "https://wavect.io/software-development-guide/software-development-process/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/software-development-guide/",
          "name": "Software development guide",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/software-development-guide/software-development-process/",
          "name": "The software development process, week by week",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Five, in practice: a first call to check fit, a discovery phase that produces scope, architecture, and a roadmap, a build that ships working software in weekly increments, quality work like tests, CI/CD, and monitoring that runs through the whole build, and a handover that transfers code, documentation, and credentials to you. The names vary between vendors. The checkpoints should not."
      },
      "name": "What are the phases of a software development project?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A scoped MVP takes weeks. We have taken products from zero to production in six weeks, and that pace requires a tight scope and a decisive product owner. Products with heavy integrations or compliance take months. Any date quoted before discovery is a guess, so fix the scope first, then hold the vendor to the date that comes out of it."
      },
      "name": "How long does custom software take?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Waterfall plans the whole project up front and builds it in one pass. Agile builds in short cycles and adjusts as it learns, with Scrum as the most common framework. In practice a healthy project mixes both: discovery is a small planning phase before code, then delivery runs agile in weekly increments. The label matters less than whether you see working software regularly across the whole SDLC."
      },
      "name": "What is agile vs waterfall in practice?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "They will change, and a healthy process plans for it. Small changes are typically absorbed within the current increment. Larger ones get an impact assessment, a priced change request, and an open reprioritization with you. The warning sign is a vendor where change is either a fight or a silent budget overrun."
      },
      "name": "What happens when requirements change mid-project?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Discovery is the intensive part, because your answers define the scope. After that, plan for a weekly review of working software and availability for decisions in between. What a build cannot survive is having no product owner on your side, because every open decision stalls the work."
      },
      "name": "How much of my time does the process take?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
