<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oleksandr Tytarenko</title>
    <description>The latest articles on DEV Community by Oleksandr Tytarenko (@oleksandr_tytarenko).</description>
    <link>https://dev.to/oleksandr_tytarenko</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4172876%2F461afdfa-2d83-402c-9cee-628f14cad732.jpg</url>
      <title>DEV Community: Oleksandr Tytarenko</title>
      <link>https://dev.to/oleksandr_tytarenko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oleksandr_tytarenko"/>
    <language>en</language>
    <item>
      <title>How to scope a software project: a step-by-step guide</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Mon, 12 Oct 2026 08:01:35 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/how-to-scope-a-software-project-a-step-by-step-guide-3eb0</link>
      <guid>https://dev.to/oleksandr_tytarenko/how-to-scope-a-software-project-a-step-by-step-guide-3eb0</guid>
      <description>&lt;p&gt;To scope a software project, start from the goals, list the users and what they need, turn that into prioritised requirements, and then write down explicitly what is in, what is out and what comes later. Estimate the in-scope work as a range with its assumptions, and get one decision maker to sign the result. The seven steps below follow that order; the in, out and later list in step 5 is the artifact that does most of the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What scope is, and what scope creep is
&lt;/h2&gt;

&lt;p&gt;Scope is the agreed list of what the project will deliver, and just as importantly, what it will not. It is not the same as the requirements: requirements describe what the product must do, while scope sets the boundary of this particular piece of work, usually one release.&lt;/p&gt;

&lt;p&gt;Scope creep is what happens without that boundary. The PMI defines it as the uncontrolled expansion of project or product scope without matching changes to time, cost and resources (&lt;a href="https://www.pmi.org/learning/library/stakeholder-management-pain-points-perils-prosperity-5955" rel="noopener noreferrer"&gt;PMI, Scope and stakeholder management&lt;/a&gt;). The key word is &lt;em&gt;uncontrolled&lt;/em&gt;: scope can change, and often should, but each change needs a visible decision about what it costs and what moves out.&lt;/p&gt;

&lt;p&gt;Scoping well is mostly done during the discovery phase. If you want the wider context, see &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-scope-a-software-project-article" rel="noopener noreferrer"&gt;what a discovery phase is in software development&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1-2: goals and users
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Write two or three goals with numbers
&lt;/h3&gt;

&lt;p&gt;Everything else is judged against the goals, so start there. A goal says what changes for the business or the user, with a metric, today's value, a target and a date. "Improve onboarding" is not a goal; "cut the time from sign-up to first invoice from 3 days to 1 day by June" is.&lt;/p&gt;

&lt;p&gt;Ask the decision maker to rank the goals. When two features compete for the same week, the ranking decides.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: List the users and what they are trying to do
&lt;/h3&gt;

&lt;p&gt;Name each type of user (and each external system the product talks to) and the main job they need to get done. Then walk through the main journey of each, step by step, and mark where it goes wrong today. Talk to people who will use the product, not only to the people who pay for it.&lt;/p&gt;

&lt;p&gt;This step catches the most expensive scope gaps: the admin role nobody mentioned, the approval step that exists only in one manager's head, the data import that has to happen before anyone can use the product at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3-4: requirements and priorities
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 3: Turn needs into testable requirements
&lt;/h3&gt;

&lt;p&gt;For each journey, write what the product must do as short, testable requirements: one behaviour each, with acceptance criteria someone else can check. Separate three kinds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Functional&lt;/strong&gt;: what the product does ("a dispatcher can reassign a job").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-functional&lt;/strong&gt;: how well it does it ("the job list loads within 2 seconds").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints&lt;/strong&gt;: what cannot change ("data stays in the EU", "must use the client's existing login").&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Link every requirement to a goal. A requirement with no goal behind it is the first candidate for "later".&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Prioritise with MoSCoW
&lt;/h3&gt;

&lt;p&gt;Mark each requirement Must, Should, Could or Won't (this time). The test for a Must is blunt: would the release be useless, illegal or unsafe without it? If not, it is a Should.&lt;/p&gt;

&lt;p&gt;Keep the Musts in proportion. The DSDM guidance from the &lt;a href="https://www.agilebusiness.org/resource/what-is-moscow-prioritization/" rel="noopener noreferrer"&gt;Agile Business Consortium&lt;/a&gt; recommends that Must Have work stay at no more than about 60% of the effort, leaving the Shoulds and Coulds as room to absorb surprises. If almost everything is a Must, the priorities have not been set yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: in, out and later
&lt;/h2&gt;

&lt;p&gt;This is the step that prevents most scope arguments. Take the prioritised list and sort every item into one of three columns, then write the result down as its own short section of the scope document.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;In (this release)&lt;/th&gt;
&lt;th&gt;Out (not this project)&lt;/th&gt;
&lt;th&gt;Later (a known next step)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;All Musts&lt;/td&gt;
&lt;td&gt;Things you decided not to build at all&lt;/td&gt;
&lt;td&gt;Shoulds and Coulds that did not fit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shoulds that fit the budget&lt;/td&gt;
&lt;td&gt;Ideas that do not serve a goal&lt;/td&gt;
&lt;td&gt;Features waiting on a dependency or a decision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constraints, always&lt;/td&gt;
&lt;td&gt;Work someone else owns (another team, the client)&lt;/td&gt;
&lt;td&gt;Second user types or markets&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few rules make the list useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Write the "out" column in full sentences.&lt;/strong&gt; "No native mobile app; the web app works on mobile browsers" is clearer than "mobile: out".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give "later" items a trigger&lt;/strong&gt;, such as "after the pilot" or "once the payment provider is chosen", so they do not read as forgotten.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name who owns anything outside the team&lt;/strong&gt;: data migration, content, third-party contracts, user training.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review the list with the decision maker line by line.&lt;/strong&gt; Silence is not agreement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The "out" column is the one people skip, and the one they need most when a new request arrives in week six: you can point at it and ask what should move to make room.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: estimate as a range
&lt;/h2&gt;

&lt;p&gt;Estimate only the "in" column, and give a range rather than a single number. Early estimates are genuinely uncertain: in Steve McConnell's Cone of Uncertainty, an estimate made at the initial concept stage can be off by up to 4x in either direction, narrowing as requirements and design are completed (&lt;a href="https://www.construx.com/books/the-cone-of-uncertainty/" rel="noopener noreferrer"&gt;Construx&lt;/a&gt;). A single number hides that; a range shows it.&lt;/p&gt;

&lt;p&gt;A practical way to do it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Group the in-scope requirements into milestones that each deliver something a user can see.&lt;/li&gt;
&lt;li&gt; Estimate each milestone as low-high effort, for example in person-weeks.&lt;/li&gt;
&lt;li&gt; Write the assumptions each estimate relies on ("the dispatch system's API is documented and available in test", "the client supplies content by week 4").&lt;/li&gt;
&lt;li&gt; List the main risks and what you would do if one happens.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The assumptions are part of the estimate, not a footnote. When one turns out to be false, the estimate is expected to change, and everyone can see why.&lt;/p&gt;

&lt;p&gt;Here is what that looks like in the public example report, for an invented project called Fieldwise: four milestones, each with a person-week range, a total of 16-22 person-weeks, and the assumptions listed right under them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fhow-to-scope-a-software-project%2Fexample-report-roadmap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fhow-to-scope-a-software-project%2Fexample-report-roadmap.png" title="Milestones, estimate ranges and assumptions (invented project)" alt="The roadmap section of the example report for the invented Fieldwise project: four milestones with status, linked requirement count, a low-high estimate in person-weeks and a target date, followed by four assumptions" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: get the scope signed
&lt;/h2&gt;

&lt;p&gt;The final scope statement can be short. It should contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The goals and their metrics.&lt;/li&gt;
&lt;li&gt;The users and the journeys covered.&lt;/li&gt;
&lt;li&gt;The in-scope requirements, or a reference to the requirements document.&lt;/li&gt;
&lt;li&gt;The in, out and later list.&lt;/li&gt;
&lt;li&gt;The estimate range, milestones and assumptions.&lt;/li&gt;
&lt;li&gt;How changes will be handled: who can request one, who approves it, and how its cost is shown.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask the person who owns the budget to sign it, not only a project contact. For client work, the signed scope usually becomes the basis of the statement of work or the contract; that wording is a matter for the contract itself (and for a lawyer where needed).&lt;/p&gt;

&lt;p&gt;Before you ask for the signature, run the scope through the &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-scope-a-software-project-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt;: an unanswered question there is a risk you can still fix cheaply.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fhow-to-scope-a-software-project%2Fchecklist-estimates-sign-off.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fhow-to-scope-a-software-project%2Fchecklist-estimates-sign-off.png" title="Estimate and sign-off questions from the discovery phase checklist" alt="The last two sections of the discovery phase checklist: questions on estimates, roadmap and risks, and sign-off questions such as whether the first-release scope is agreed in writing" width="799" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you keep the scope in one place rather than across files, it is also easier to keep current. In Discovery Phase AI, for example, requirements carry their MoSCoW priority and linked goal, and the roadmap stage holds milestones with a low-high person-week estimate next to the assumptions they depend on; the &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-scope-a-software-project-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt; shows the whole invented project in that form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-scope-a-software-project-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-scope-a-software-project-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/how-to-scope-a-software-project" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productmanagement</category>
      <category>projectmanagement</category>
      <category>planning</category>
    </item>
    <item>
      <title>Software requirements document template (with example)</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Sun, 11 Oct 2026 08:01:01 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/software-requirements-document-template-with-example-im1</link>
      <guid>https://dev.to/oleksandr_tytarenko/software-requirements-document-template-with-example-im1</guid>
      <description>&lt;p&gt;A software requirements document needs eight parts: purpose and scope, goals, users, functional requirements, non-functional requirements, constraints, assumptions and open questions, and a change log. Below is a skeleton you can paste into your own editor, with one line on what belongs in each section, a short filled-in example from an invented project, and the rules that make each requirement testable. If you are writing it at the end of a &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-requirements-document-template-article" rel="noopener noreferrer"&gt;discovery phase in software development&lt;/a&gt;, most of the inputs already exist; this template turns them into one document the team can build and test against.&lt;/p&gt;

&lt;h2&gt;
  
  
  What goes in a requirements document
&lt;/h2&gt;

&lt;p&gt;A requirements document answers one question: what must the software do, and how will we know it does? It is not a design document or a project plan, so it does not pick a database (unless that is a fixed constraint) or set release dates. A useful one contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Context&lt;/strong&gt;: why the project exists and what is in and out of scope.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goals&lt;/strong&gt;: the outcomes the software must move, with a number for each where possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Users&lt;/strong&gt;: who uses the system and what they are trying to get done.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requirements&lt;/strong&gt;: what the system must do (functional), how well it must do it (non-functional) and the limits nobody on the team can change (constraints).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceptance criteria&lt;/strong&gt;: how each requirement will be checked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assumptions and open questions&lt;/strong&gt;: what you believe but have not confirmed, and what is still undecided.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History&lt;/strong&gt;: what changed, when and why.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The international standard behind the formal version, the software requirements specification (SRS), is &lt;a href="https://webstore.iec.ch/en/publication/64315" rel="noopener noreferrer"&gt;ISO/IEC/IEEE 29148:2018&lt;/a&gt;, "Requirements engineering". You do not need it to write a good document, but it is the reference if a client or a regulated industry asks for a formal SRS.&lt;/p&gt;

&lt;h2&gt;
  
  
  The template, section by section
&lt;/h2&gt;

&lt;p&gt;Copy the skeleton below into a document or a wiki page. The line under each heading says what to write there; replace it with your content.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# [Project name]: Software Requirements&lt;/span&gt;

Version: 0.1 | Status: Draft | Owner: [name] | Last updated: [date]

&lt;span class="gu"&gt;## 1. Purpose and scope&lt;/span&gt;
One paragraph: the problem, who has it, and what this software changes.
In scope: [bullet list]. Out of scope: [bullet list].

&lt;span class="gu"&gt;## 2. Goals and success metrics&lt;/span&gt;
Each goal with a metric, its current value, a target and a date.

&lt;span class="gu"&gt;## 3. Users and stakeholders&lt;/span&gt;
Each user type: role, what they need to get done, current pain points.
Each stakeholder: name, role, what they decide or approve.

&lt;span class="gu"&gt;## 4. Functional requirements&lt;/span&gt;
One row per requirement:
ID | Title | Description | Priority (Must/Should/Could/Won't)
| Status (Draft/In review/Approved) | Linked goal | Owner
| Acceptance criteria (one checkable statement per line)

&lt;span class="gu"&gt;## 5. Non-functional requirements&lt;/span&gt;
Performance, availability, security, privacy, accessibility,
offline behaviour, supported devices. Same row format, with a number.

&lt;span class="gu"&gt;## 6. Constraints&lt;/span&gt;
Limits the team cannot change: regulation, contracts, budget,
deadline, mandated technology or hosting region.

&lt;span class="gu"&gt;## 7. Assumptions&lt;/span&gt;
What you treat as true but have not confirmed. One line each.

&lt;span class="gu"&gt;## 8. Open questions&lt;/span&gt;
Question | Who answers it | Needed by [date] | Requirements affected

&lt;span class="gu"&gt;## 9. Glossary&lt;/span&gt;
Terms that mean something specific in this project.

&lt;span class="gu"&gt;## 10. Change log&lt;/span&gt;
Version | Date | Author | What changed and why
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few notes on using it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep the ID stable.&lt;/strong&gt; Number requirements once (REQ-001, REQ-002) and never reuse a number. Tests, tickets and estimates will point at those IDs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Put constraints in their own section&lt;/strong&gt;, so they are not traded away like features in a planning meeting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write short rather than empty.&lt;/strong&gt; "No accessibility requirements beyond the platform defaults, confirmed with [name]" is a decision; a blank section is a question nobody asked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you also need the material that feeds this document (stakeholders, problem statement, architecture notes, roadmap), the &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-template?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-requirements-document-template-article" rel="noopener noreferrer"&gt;discovery phase template&lt;/a&gt; lists every section of the wider discovery output.&lt;/p&gt;

&lt;h2&gt;
  
  
  A filled-in example
&lt;/h2&gt;

&lt;p&gt;The example below is from &lt;strong&gt;Fieldwise&lt;/strong&gt;, an invented project: a mobile app for the field technicians of an invented company, Northline Services, which today assigns visits by phone and spreadsheet and collects results on paper. The full example, with goals, journeys, architecture decisions, a roadmap and risks, is on the &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-requirements-document-template-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt; page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose and scope (excerpt).&lt;/strong&gt; Technicians close visits on paper and the office re-types the forms into the dispatch system. In scope: a technician app and a dispatcher board connected to the existing dispatch system. Out of scope for the first release: route optimisation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Goals (excerpt).&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Goal&lt;/th&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Current&lt;/th&gt;
&lt;th&gt;Target&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reduce missed and repeated visits&lt;/td&gt;
&lt;td&gt;Visits missed or repeated&lt;/td&gt;
&lt;td&gt;9%&lt;/td&gt;
&lt;td&gt;4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remove double entry&lt;/td&gt;
&lt;td&gt;Office re-typing time per day&lt;/td&gt;
&lt;td&gt;4 h&lt;/td&gt;
&lt;td&gt;30 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technicians adopt the app&lt;/td&gt;
&lt;td&gt;Visits closed in the app (pilot regions)&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;90%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Requirements (excerpt).&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ID&lt;/th&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Priority&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Linked goal&lt;/th&gt;
&lt;th&gt;Acceptance criteria&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;REQ-001&lt;/td&gt;
&lt;td&gt;Day list: a technician sees their assigned visits for the day, in order, with status&lt;/td&gt;
&lt;td&gt;Functional&lt;/td&gt;
&lt;td&gt;Must&lt;/td&gt;
&lt;td&gt;Approved&lt;/td&gt;
&lt;td&gt;Reduce missed and repeated visits&lt;/td&gt;
&lt;td&gt;A visit assigned in dispatch appears in the app within one minute. Visits are ordered by planned time.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REQ-003&lt;/td&gt;
&lt;td&gt;Work without coverage: the app works for a whole day offline and synchronises when coverage returns&lt;/td&gt;
&lt;td&gt;Non-functional&lt;/td&gt;
&lt;td&gt;Must&lt;/td&gt;
&lt;td&gt;In review&lt;/td&gt;
&lt;td&gt;Technicians adopt the app&lt;/td&gt;
&lt;td&gt;100 visits closed offline are all delivered, none lost or duplicated. The app shows what is waiting to sync.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REQ-004&lt;/td&gt;
&lt;td&gt;Decline with a reason: a technician can decline an assigned visit and choose a reason&lt;/td&gt;
&lt;td&gt;Functional&lt;/td&gt;
&lt;td&gt;Should&lt;/td&gt;
&lt;td&gt;Approved&lt;/td&gt;
&lt;td&gt;Reduce missed and repeated visits&lt;/td&gt;
&lt;td&gt;The dispatcher is alerted within 30 seconds. The visit returns to the board with the reason.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REQ-005&lt;/td&gt;
&lt;td&gt;Data stays in the EU: personal customer data is stored and processed only in the EU region&lt;/td&gt;
&lt;td&gt;Constraint&lt;/td&gt;
&lt;td&gt;Must&lt;/td&gt;
&lt;td&gt;Approved&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;td&gt;The database and backups are hosted in the EU. No personal data is sent to a service outside the EU.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REQ-012&lt;/td&gt;
&lt;td&gt;Routing suggestions: the app suggests an order for the day's visits that reduces driving&lt;/td&gt;
&lt;td&gt;Functional&lt;/td&gt;
&lt;td&gt;Could&lt;/td&gt;
&lt;td&gt;Draft&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;td&gt;Deferred to a later release after the pilot.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Assumption (excerpt).&lt;/strong&gt; A photo is at most 5 MB and a visit has at most six photos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open question (excerpt).&lt;/strong&gt; Is a ticked box enough as customer confirmation, or must the signature be legally binding? This blocks REQ-007 (customer confirmation), which stays in Draft until legal answers.&lt;/p&gt;

&lt;p&gt;Note what is missing: screen layouts, technology choices (apart from the hosting region, a client-imposed constraint) and dates. Those belong in the design, architecture and roadmap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing requirements that can be tested
&lt;/h2&gt;

&lt;p&gt;A requirement is finished when someone who was not in the meeting can tell whether the software meets it. That usually takes three things: one behaviour per requirement, a measurable condition, and acceptance criteria.&lt;/p&gt;

&lt;h3&gt;
  
  
  Weak and strong wording
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Weak&lt;/th&gt;
&lt;th&gt;Why it fails&lt;/th&gt;
&lt;th&gt;Testable&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;The app should be fast.&lt;/td&gt;
&lt;td&gt;"Fast" means something different to everyone.&lt;/td&gt;
&lt;td&gt;The day list opens in under two seconds on the reference phone with 20 visits.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The system must handle offline mode properly.&lt;/td&gt;
&lt;td&gt;"Properly" cannot be checked.&lt;/td&gt;
&lt;td&gt;100 visits closed offline are all delivered after reconnecting, none lost or duplicated.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Users can manage visits.&lt;/td&gt;
&lt;td&gt;"Manage" hides several behaviours.&lt;/td&gt;
&lt;td&gt;Split into: view the day list, close a visit, decline a visit with a reason.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The app is user-friendly.&lt;/td&gt;
&lt;td&gt;Not observable.&lt;/td&gt;
&lt;td&gt;Closing a visit takes under two minutes in the pilot test.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Words to search for and replace before review: &lt;em&gt;fast, easy, intuitive, user-friendly, flexible, robust, properly, etc., and/or, as appropriate, support&lt;/em&gt;. Each one usually hides a number or a second requirement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acceptance criteria
&lt;/h3&gt;

&lt;p&gt;Acceptance criteria are the checks that decide whether a requirement is done. Write them as short statements that are either true or false, one per line, from the user's or system's point of view. They become the basis of &lt;a href="https://agilealliance.org/glossary/acceptance-testing/" rel="noopener noreferrer"&gt;acceptance tests&lt;/a&gt;, so a tester should be able to read one and know what to try.&lt;/p&gt;

&lt;p&gt;Two to four criteria per requirement is typical. Ten usually means several requirements; none means it is not understood yet, so move it to open questions.&lt;/p&gt;

&lt;h3&gt;
  
  
  MoSCoW priority
&lt;/h3&gt;

&lt;p&gt;MoSCoW sorts requirements into four groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Must&lt;/strong&gt;: without it the release does not work, is not legal or is not safe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Should&lt;/strong&gt;: important, but the release still works without it, perhaps with a workaround.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Could&lt;/strong&gt;: useful if time allows; the first to drop when the schedule is under pressure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Won't (this time)&lt;/strong&gt;: agreed to be out of this release. Writing it down is the point: it records a decision instead of leaving the request in limbo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The method comes from the DSDM agile framework (&lt;a href="https://en.wikipedia.org/wiki/MoSCoW_method" rel="noopener noreferrer"&gt;background on the MoSCoW method&lt;/a&gt;). A common rule of thumb is that Musts should take no more than about 60% of the planned effort, so the Shoulds and Coulds act as contingency. That is a practitioner guideline, but the point holds: if everything is a Must, priority carries no information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Non-functional requirements
&lt;/h2&gt;

&lt;p&gt;Non-functional requirements describe qualities of the whole system rather than one feature. They are often left empty, and they cause late surprises because they drive architecture and hosting choices. Areas to ask about:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Question to answer&lt;/th&gt;
&lt;th&gt;Example of a measurable answer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;How quickly must key screens or calls respond, under what load?&lt;/td&gt;
&lt;td&gt;Day list opens in under 2 s on a three-year-old phone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Availability&lt;/td&gt;
&lt;td&gt;When must it be up, and how much downtime is acceptable?&lt;/td&gt;
&lt;td&gt;Available 06:00-20:00 local time on working days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Offline and connectivity&lt;/td&gt;
&lt;td&gt;What must work without a network?&lt;/td&gt;
&lt;td&gt;A full day of visits can be closed offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Who can sign in, how, and what happens to a lost device?&lt;/td&gt;
&lt;td&gt;Sign-in through the company directory; a lost phone can be locked remotely&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy and data location&lt;/td&gt;
&lt;td&gt;Where may personal data be stored and processed?&lt;/td&gt;
&lt;td&gt;Only in the EU region, backups included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accessibility&lt;/td&gt;
&lt;td&gt;Which standard or level applies?&lt;/td&gt;
&lt;td&gt;Name the standard and level the client requires&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supported platforms&lt;/td&gt;
&lt;td&gt;Which devices, browsers and versions?&lt;/td&gt;
&lt;td&gt;Android and iOS versions in use across the fleet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Write each answer in the same row format as functional requirements, with an ID, a priority and acceptance criteria. "Secure" is not a requirement; "a lost phone can be locked from the office" is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping the document alive
&lt;/h2&gt;

&lt;p&gt;Three habits keep the document from going stale after sign-off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Versioning.&lt;/strong&gt; Give the document a version and a status (Draft, In review, Approved), give each requirement its own status, and log every change with its reason. When the team disagrees about what was agreed, the log settles it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traceability to goals.&lt;/strong&gt; Link every requirement to the goal it serves, and check the other direction too: every goal should be served by at least one requirement. A requirement with no goal is a constraint, a quality, or scope creep worth questioning; a goal with no requirements will not be delivered. Carry the requirement IDs forward into tickets, test cases and milestones so you can answer "what breaks if we drop REQ-004?".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change control.&lt;/strong&gt; After approval, every change records who asked, which requirements change, what it does to the estimate and who approved it. On a small project that is a line in the change log and a message to the sponsor; what matters is that nobody edits an approved requirement silently.&lt;/p&gt;

&lt;p&gt;Tools can take over the first draft. Discovery Phase AI drafts requirements (type, MoSCoW priority, acceptance criteria and a linked goal) from the decks, documents and transcripts you upload, for you to review before anything is saved, and gives each requirement an AI quality score.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which format: PRD, BRD or SRS
&lt;/h2&gt;

&lt;p&gt;The three names overlap, and many teams use one document for all three jobs. The difference is mostly who the document is for:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Document&lt;/th&gt;
&lt;th&gt;Main reader&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;When it is the right shape&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BRD (business requirements document)&lt;/td&gt;
&lt;td&gt;Sponsors, business owners&lt;/td&gt;
&lt;td&gt;Business problem, objectives, scope, benefits&lt;/td&gt;
&lt;td&gt;Getting a project approved and funded, before a solution is chosen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PRD (product requirements document)&lt;/td&gt;
&lt;td&gt;Product, design and engineering&lt;/td&gt;
&lt;td&gt;What the product does for its users, features, user flows, release scope&lt;/td&gt;
&lt;td&gt;A product team building and iterating on its own product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SRS (software requirements specification)&lt;/td&gt;
&lt;td&gt;Engineering, testing, the client or a supplier&lt;/td&gt;
&lt;td&gt;Precise functional and non-functional requirements, acceptance criteria, constraints&lt;/td&gt;
&lt;td&gt;A contract or handover between parties, regulated work, or anything that will be formally tested against the document&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The template above is an SRS with a short business section on top, which suits most client projects: the sponsor reads sections 1 and 2, the delivery team works from sections 4 to 8. An internal product team can drop the formality and keep goals, requirements and acceptance criteria. For a tender or a regulated domain, check whether the client expects the ISO/IEC/IEEE 29148 structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How long should a software requirements document be?
&lt;/h3&gt;

&lt;p&gt;As long as the requirements, no longer. The Fieldwise example has 12 requirements; a larger system can have hundreds. What matters is that each one is testable and traceable to a goal or a constraint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should user stories replace the requirements document?
&lt;/h3&gt;

&lt;p&gt;They can sit inside it. A user story ("As a technician, I want to decline a visit with a reason so that dispatch can reassign it") is one way to phrase a functional requirement, and its acceptance criteria are the same. What stories often miss are non-functional requirements and constraints, so keep sections 5 and 6 even if the functional section is a list of stories.&lt;/p&gt;

&lt;h3&gt;
  
  
  When is a requirements document finished?
&lt;/h3&gt;

&lt;p&gt;When every Must and Should has acceptance criteria, every open question has an owner and a date, and the sponsor has approved the version you will estimate against. After that it is maintained, not finished. Before signing off, the &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-requirements-document-template-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; has a short list of checks for the requirements section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-requirements-document-template-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-requirements-document-template-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/software-requirements-document-template" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productmanagement</category>
      <category>documentation</category>
      <category>requirements</category>
    </item>
    <item>
      <title>Discovery phase in software development: steps, deliverables, cost</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Sat, 10 Oct 2026 08:13:02 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/discovery-phase-in-software-development-steps-deliverables-cost-dcf</link>
      <guid>https://dev.to/oleksandr_tytarenko/discovery-phase-in-software-development-steps-deliverables-cost-dcf</guid>
      <description>&lt;p&gt;A discovery phase is the short stage at the start of a software project, before design and development, in which the client and the delivery team agree what problem they are solving, for whom, what the product must do and whether it can be built within the budget. It usually takes two to eight weeks. It ends with a written set of deliverables (goals, requirements, architecture, wireframes, a roadmap with ranged estimates and a risk list) and a decision: build, build something smaller, or stop.&lt;/p&gt;

&lt;p&gt;This guide covers the steps in order, who takes part, the ten deliverables, week-by-week plans, how long it takes, what it costs, and how to read a discovery proposal before you sign one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovery phase at a glance
&lt;/h2&gt;

&lt;p&gt;Most discoveries follow the same sequence, even when the names differ. Each step answers one question and leaves something on paper.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Question it answers&lt;/th&gt;
&lt;th&gt;What you have at the end&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Frame&lt;/td&gt;
&lt;td&gt;Why are we doing this, and who decides?&lt;/td&gt;
&lt;td&gt;Stakeholder list, background, first problem statement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Research&lt;/td&gt;
&lt;td&gt;Who has the problem, and how is the work done today?&lt;/td&gt;
&lt;td&gt;Interview notes, users and actors, current journeys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Goals and scope&lt;/td&gt;
&lt;td&gt;What does success look like, and what is out?&lt;/td&gt;
&lt;td&gt;Goals with metrics, an in/out scope list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Requirements&lt;/td&gt;
&lt;td&gt;What must the product do?&lt;/td&gt;
&lt;td&gt;Prioritized, testable requirements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Technical exploration&lt;/td&gt;
&lt;td&gt;Can it be built, and on what?&lt;/td&gt;
&lt;td&gt;Architecture diagrams, integration list, decision records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Screens&lt;/td&gt;
&lt;td&gt;What will people actually see?&lt;/td&gt;
&lt;td&gt;Wireframes of the key screens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Plan and estimate&lt;/td&gt;
&lt;td&gt;How long, how much, and what could go wrong?&lt;/td&gt;
&lt;td&gt;Milestones with low-high estimates, assumptions, risks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8. Decide&lt;/td&gt;
&lt;td&gt;Build, change course or stop?&lt;/td&gt;
&lt;td&gt;Executive summary and a signed-off first-release scope&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What a discovery phase is (and what it is not)
&lt;/h2&gt;

&lt;p&gt;A discovery phase is a time-boxed piece of work with a fixed end and a decision at that end. Its job is to reduce the biggest unknowns while they are still cheap to change: on paper, not in code. The UK government's Service Manual puts it plainly: discovery is about understanding the problem before you commit to building anything, and you should not start building the service during it (&lt;a href="https://www.gov.uk/service-manual/agile-delivery/how-the-discovery-phase-works" rel="noopener noreferrer"&gt;GOV.UK Service Manual&lt;/a&gt;). Nielsen Norman Group defines it from the design side as researching the problem space, framing the problems to be solved and gathering enough evidence to decide what to do next (&lt;a href="https://www.nngroup.com/articles/discovery-phase/" rel="noopener noreferrer"&gt;NN/g&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The word "discovery" is used for several different things, and they are easy to mix up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Product discovery&lt;/strong&gt; is the ongoing habit of a product team deciding what to build next, through user research and experiments. It never ends. A discovery phase is a one-off project stage with a deadline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inception&lt;/strong&gt; (a term common in agile consultancies) is usually a short, workshop-heavy kickoff that aligns a team on vision, scope and a first backlog. It overlaps heavily with discovery; a long inception is a discovery by another name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoping&lt;/strong&gt; is narrower: deciding what is in and out and pricing it. It is one output of discovery, often the input to a statement of work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legal e-discovery&lt;/strong&gt; is the exchange of electronic evidence in a lawsuit and has nothing to do with software projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What a discovery phase is not: a sales meeting, a free estimate, a design sprint that ends with polished mockups, or a 100-page specification. If it does not end with a decision and a scope that the people paying for the build agree with, it has not done its job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a discovery phase matters
&lt;/h2&gt;

&lt;p&gt;Early in a project, nobody knows enough to estimate it well. Steve McConnell's "cone of uncertainty" describes this: at the initial-concept stage, a software estimate can plausibly be off by a factor of four in either direction, and the range narrows only as requirements and design decisions are actually made (&lt;a href="https://www.construx.com/wp-content/uploads/2019/02/CxWhitePaper_ConeOfUncertainty.pdf" rel="noopener noreferrer"&gt;Construx white paper&lt;/a&gt;). The cone is a best case, and time alone does not narrow it; decisions do. A discovery phase is where those first decisions get made on purpose instead of by accident halfway through the build.&lt;/p&gt;

&lt;p&gt;In practice, a good discovery gives you four things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;A shared problem.&lt;/strong&gt; The sponsor, the users and the team describe the same problem in the same words.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;A scope you can price.&lt;/strong&gt; Requirements are specific enough that two vendors would estimate roughly the same thing.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Known risks.&lt;/strong&gt; Integrations, data, compliance and adoption risks are named, with an owner, before money is committed.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;A cheap exit.&lt;/strong&gt; If the idea does not hold up, you learn it after a few weeks instead of after a few months of development.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The last point is underrated. A discovery that ends with "do not build this yet" has saved money, not wasted it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The steps of a discovery phase, in order
&lt;/h2&gt;

&lt;p&gt;The steps overlap in real projects, and later ones often send you back to earlier ones. The order still matters: requirements written before the problem is agreed tend to describe someone's favourite solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Frame the problem and the decision
&lt;/h3&gt;

&lt;p&gt;Start with the decision the discovery must support ("build a first release for two regions or not") and the people who will make it. Collect what already exists: decks, earlier specs, support tickets, analytics, contracts with current vendors. Write a first problem statement and list the hard constraints: budget ceiling, deadline, regulation, systems that cannot change. GOV.UK's advice to reframe a predetermined solution as a problem to be solved applies to most commercial projects too.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Research users and the current process
&lt;/h3&gt;

&lt;p&gt;Interview the people who will use the product, not only the people who pay for it. Watch the current process if you can. Map who the users are, what they are trying to do and where they get stuck today. Gather evidence for the problem: numbers, complaints, observed workarounds.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Set goals and scope
&lt;/h3&gt;

&lt;p&gt;Turn the problem into two or three goals, each with a metric, a current value, a target and a date. Then write down what is out of scope. An explicit "not in the first release" list prevents more arguments than any other single page.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Write the requirements
&lt;/h3&gt;

&lt;p&gt;Describe what the product must do in short, testable statements. Give each a type (functional, non-functional or constraint), a priority (MoSCoW: Must, Should, Could, Won't), acceptance criteria for the Musts, and a link to the goal it supports. Do not forget non-functional needs: performance, security, availability, accessibility, data residency.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Explore the technical options
&lt;/h3&gt;

&lt;p&gt;Check every integration: who owns it, whether its API exists, whether it is documented and what it can actually do. Draw a context diagram and a component diagram. Record each significant choice as a short decision record: the question, the options compared, the choice and its consequences. Spike anything that the estimate depends on and nobody has tried.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Sketch the key screens
&lt;/h3&gt;

&lt;p&gt;Wireframe the three to five screens users will meet most. They exist to settle disagreements and expose missing requirements, not to finalize the visual design. Check them with a few real users if you can.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Plan, estimate and list the risks
&lt;/h3&gt;

&lt;p&gt;Split the work into milestones that each deliver something usable. Estimate each as a low-high range in person-weeks and write down the assumptions the range relies on. Keep a single log of risks, blockers and open questions, each with an owner and a next step.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Decide and sign off
&lt;/h3&gt;

&lt;p&gt;Write the executive summary last and present it to the decision maker. The meeting should end with one of three outcomes: build the agreed first release, change the scope or approach, or stop. Agree the first-release scope in writing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who takes part and what each person owes
&lt;/h2&gt;

&lt;p&gt;A discovery team is small. In an NN/g survey of UX teams, a discovery had about four people working on it full time on average, most often a designer, a researcher and a product or project manager (&lt;a href="https://www.nngroup.com/articles/discoveries-in-industry-revealed/" rel="noopener noreferrer"&gt;NN/g&lt;/a&gt;). For software projects, the roles below are typical; one person often covers two of them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Side&lt;/th&gt;
&lt;th&gt;What they owe the discovery&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sponsor / decision maker&lt;/td&gt;
&lt;td&gt;Client&lt;/td&gt;
&lt;td&gt;Goals, budget range, constraints, decisions on time, final sign-off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product owner or client PM&lt;/td&gt;
&lt;td&gt;Client&lt;/td&gt;
&lt;td&gt;Day-to-day answers, access to people, data and documents, priorities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Users and subject-matter experts&lt;/td&gt;
&lt;td&gt;Client&lt;/td&gt;
&lt;td&gt;Interviews, walkthroughs of the current process, review of journeys and screens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client IT / security&lt;/td&gt;
&lt;td&gt;Client&lt;/td&gt;
&lt;td&gt;System access, API documentation, security and compliance rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business analyst&lt;/td&gt;
&lt;td&gt;Delivery team&lt;/td&gt;
&lt;td&gt;Interviews, requirements, traceability to goals, the open-questions log&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UX / product designer&lt;/td&gt;
&lt;td&gt;Delivery team&lt;/td&gt;
&lt;td&gt;Journeys, flows, wireframes, quick checks with users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solution architect / tech lead&lt;/td&gt;
&lt;td&gt;Delivery team&lt;/td&gt;
&lt;td&gt;Integration checks, architecture, decision records, feasibility, estimates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delivery or project manager&lt;/td&gt;
&lt;td&gt;Delivery team&lt;/td&gt;
&lt;td&gt;Plan and timebox, risk log, roadmap, the final readout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QA engineer (optional)&lt;/td&gt;
&lt;td&gt;Delivery team&lt;/td&gt;
&lt;td&gt;Testable acceptance criteria, test strategy for risky areas&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The client side is where discoveries most often stall. If the sponsor cannot give a few hours a week and the users cannot be reached, extend the timeline or shrink the scope, but do not let the delivery team guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deliverables: what you should hold at the end
&lt;/h2&gt;

&lt;p&gt;A finished discovery leaves ten documents (or ten sections of one document), plus a risk log. They are the same ten sections as our &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-template?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-in-software-development-article" rel="noopener noreferrer"&gt;discovery phase template&lt;/a&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Deliverable&lt;/th&gt;
&lt;th&gt;What it contains&lt;/th&gt;
&lt;th&gt;Done when&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stakeholders&lt;/td&gt;
&lt;td&gt;Name, role, what they need, influence, open disagreements&lt;/td&gt;
&lt;td&gt;You know who signs off and who can say no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Background&lt;/td&gt;
&lt;td&gt;Business, current process and tools, past attempts, hard constraints&lt;/td&gt;
&lt;td&gt;A new team member could start with it on day one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executive summary&lt;/td&gt;
&lt;td&gt;Problem, proposed solution, outcome, scope, timeline and cost range, the decision needed&lt;/td&gt;
&lt;td&gt;The sponsor can read it in two minutes and decide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Problem statement&lt;/td&gt;
&lt;td&gt;Who is affected, what goes wrong, how often, what it costs, the evidence&lt;/td&gt;
&lt;td&gt;It names no solution and everyone agrees with it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Goals and success metrics&lt;/td&gt;
&lt;td&gt;Two or three goals, each metric with today's value, target and date, KPIs to watch&lt;/td&gt;
&lt;td&gt;Every goal can be judged later&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User experience&lt;/td&gt;
&lt;td&gt;Users and actors, journeys step by step, key flows as diagrams&lt;/td&gt;
&lt;td&gt;The main journey of each user is mapped&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requirements&lt;/td&gt;
&lt;td&gt;Testable items with type, MoSCoW priority, acceptance criteria, linked goal, owner&lt;/td&gt;
&lt;td&gt;Every Must has acceptance criteria and traces to a goal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;Context and component diagrams, integrations, decision records&lt;/td&gt;
&lt;td&gt;Every integration is checked and every big choice recorded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI screens&lt;/td&gt;
&lt;td&gt;Wireframes of the main screens, which requirements each covers&lt;/td&gt;
&lt;td&gt;Stakeholders agree on what users will see&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roadmap and estimates&lt;/td&gt;
&lt;td&gt;Milestones, dates, low-high person-week ranges, dependencies, assumptions&lt;/td&gt;
&lt;td&gt;Each estimate states what it assumes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risks, blockers and open questions&lt;/td&gt;
&lt;td&gt;Each item with likelihood, impact, owner and next step&lt;/td&gt;
&lt;td&gt;Nothing known is left unowned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To see what this looks like when it is filled in, the &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-in-software-development-article" rel="noopener noreferrer"&gt;example discovery report&lt;/a&gt; shows all of these sections for Fieldwise, an invented field-service app for an invented heating company: five stakeholders, three goals with metrics, twelve requirements, three architecture decisions, four wireframes, four milestones with ranged estimates and seven risks and open questions. The names and figures are made up; the structure is the point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Week-by-week plans for a 2-, 4- and 6-week discovery
&lt;/h2&gt;

&lt;p&gt;These plans assume a core team of two to four people and a client who can give interviews within the first week. Treat them as starting points, not fixed recipes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two-week discovery
&lt;/h3&gt;

&lt;p&gt;For a small MVP or a single workflow, with one or two integrations and a team that knows the domain.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;When&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Days 1-2&lt;/td&gt;
&lt;td&gt;Kickoff, existing material, stakeholder interviews&lt;/td&gt;
&lt;td&gt;Stakeholders, background, draft problem statement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Days 3-5&lt;/td&gt;
&lt;td&gt;User interviews, current process, goals&lt;/td&gt;
&lt;td&gt;Journeys, goals with metrics, in/out scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Days 6-8&lt;/td&gt;
&lt;td&gt;Requirements, integration check, key screens&lt;/td&gt;
&lt;td&gt;Prioritized requirements, context diagram, wireframes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Days 9-10&lt;/td&gt;
&lt;td&gt;Estimate, risks, readout&lt;/td&gt;
&lt;td&gt;Roadmap with ranges, risk log, executive summary, decision&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Four-week discovery
&lt;/h3&gt;

&lt;p&gt;For a typical new product or a significant rebuild: several user types, a few integrations, some unknowns.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Week 1&lt;/td&gt;
&lt;td&gt;Kickoff, stakeholder interviews, existing material, constraints&lt;/td&gt;
&lt;td&gt;Stakeholders, background, problem statement, research plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 2&lt;/td&gt;
&lt;td&gt;User research, current-process mapping, goals&lt;/td&gt;
&lt;td&gt;Users and journeys, goals and metrics, scope list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 3&lt;/td&gt;
&lt;td&gt;Requirements, architecture options, integration checks, first wireframes&lt;/td&gt;
&lt;td&gt;Requirements with acceptance criteria, diagrams, decision records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 4&lt;/td&gt;
&lt;td&gt;Wireframe review, estimates, risks, readout&lt;/td&gt;
&lt;td&gt;Roadmap with ranges and assumptions, risk log, executive summary, sign-off&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Six-week discovery
&lt;/h3&gt;

&lt;p&gt;For complex or regulated work: several departments, legacy systems, data migration or compliance review.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Week 1&lt;/td&gt;
&lt;td&gt;Kickoff, stakeholder map, existing systems and documents&lt;/td&gt;
&lt;td&gt;Stakeholders, background, constraints, research plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 2&lt;/td&gt;
&lt;td&gt;User and stakeholder research across groups&lt;/td&gt;
&lt;td&gt;Interview findings, users and actors, current journeys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 3&lt;/td&gt;
&lt;td&gt;Problem, goals and scope; compliance and data review&lt;/td&gt;
&lt;td&gt;Agreed problem statement, goals and metrics, data and compliance notes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 4&lt;/td&gt;
&lt;td&gt;Requirements; architecture options; technical spikes on the riskiest integrations&lt;/td&gt;
&lt;td&gt;Requirements draft, diagrams, spike results&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 5&lt;/td&gt;
&lt;td&gt;Wireframes and user checks; decision records; requirement review with the client&lt;/td&gt;
&lt;td&gt;Wireframes, decision records, reviewed requirements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 6&lt;/td&gt;
&lt;td&gt;Estimates, roadmap, risk review, readout&lt;/td&gt;
&lt;td&gt;Milestones with ranges, assumptions, risk log, executive summary, decision&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How long a discovery phase takes
&lt;/h2&gt;

&lt;p&gt;There is no standard length. GOV.UK says there is no set time period and that around four to eight weeks is typical for public services, with a well-understood problem needing less. For commercial software projects, these ranges are a reasonable rule of thumb, not a measured average:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One to two weeks&lt;/strong&gt;: a small MVP, one main user type, few integrations, a client who answers fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three to six weeks&lt;/strong&gt;: a typical product with several user types, a few integrations and some open technical questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Six to twelve weeks&lt;/strong&gt;: regulated domains, many stakeholders, legacy replacement or data migration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What actually sets the length: how many distinct user groups you must hear from, how many integrations you must verify, how quickly the client can make decisions, and whether a compliance review is involved. Calendar time is usually lost waiting for interviews and answers, not doing analysis. Time-box the phase anyway; an open-ended discovery tends to drift into design or build.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a discovery phase costs
&lt;/h2&gt;

&lt;p&gt;The honest way to price a discovery is in person-weeks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cost = people on the team x weeks x their blended weekly rate&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Discovery&lt;/th&gt;
&lt;th&gt;Typical team (rule of thumb)&lt;/th&gt;
&lt;th&gt;Effort&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Two weeks&lt;/td&gt;
&lt;td&gt;2 people (BA or PM, plus an architect part-time)&lt;/td&gt;
&lt;td&gt;about 3-4 person-weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Four weeks&lt;/td&gt;
&lt;td&gt;3 people (BA, designer, architect)&lt;/td&gt;
&lt;td&gt;about 8-12 person-weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Six weeks&lt;/td&gt;
&lt;td&gt;3-4 people, plus specialists for security or data&lt;/td&gt;
&lt;td&gt;about 15-24 person-weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Multiply the effort by the rates you or your vendor charge. For example, at an illustrative blended rate of $4,000 per person-week (use your own figure), a four-week discovery of about 10 person-weeks costs about $40,000; at $1,500 per person-week, the same work costs $15,000. That spread is why quoted prices differ so much between agencies and countries.&lt;/p&gt;

&lt;p&gt;Another common rule of thumb, mostly from agency guides, puts discovery at roughly 5-15% of the total build budget. Treat that as a sanity check rather than a fact: on a large project the share falls, and on a small, risky one it can be higher.&lt;/p&gt;

&lt;p&gt;What pushes cost up: more user groups to research, integrations with poor documentation, regulated data, many decision makers, and requests for high-fidelity design inside discovery. What brings it down without skipping the work: sending existing material before kickoff, booking interviews in advance, one decision maker with real authority, and reusing a standard structure such as the &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-in-software-development-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; instead of inventing one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovery in agile and waterfall projects
&lt;/h2&gt;

&lt;p&gt;In a &lt;strong&gt;waterfall&lt;/strong&gt; project, discovery is a gate. Its output is a complete specification, a fixed scope and often a fixed price, and changes after it go through change control. The risk is spending weeks specifying details that will change anyway.&lt;/p&gt;

&lt;p&gt;In an &lt;strong&gt;agile&lt;/strong&gt; project, discovery sets direction rather than every detail. It produces the goals, the first-release scope, a prioritized backlog with the Musts detailed and the rest rough, an architecture that will not need to be thrown away, and a ranged estimate. Detailed discovery then continues in each sprint for the next items. The risk here is the opposite one: calling the first sprint "discovery" and never writing down goals, scope or risks at all.&lt;/p&gt;

&lt;p&gt;Most teams land in between: a time-boxed upfront discovery that is thorough on goals, scope, integrations and risks, and deliberately light on anything the team will learn faster by building.&lt;/p&gt;

&lt;h2&gt;
  
  
  Red flags in a discovery proposal
&lt;/h2&gt;

&lt;p&gt;Whether you are buying a discovery or writing one, check the proposal for these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No list of deliverables.&lt;/strong&gt; "Workshops and alignment" without named documents means you cannot tell when it is finished.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A fixed build price before discovery starts.&lt;/strong&gt; If the vendor already knows the price, the discovery is either unnecessary or a formality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No time with real users.&lt;/strong&gt; Only the sponsor is interviewed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No technical person.&lt;/strong&gt; Nobody checks integrations, so the estimate is a guess.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single-number estimates.&lt;/strong&gt; Any estimate made before the build should be a range with its assumptions written down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The deliverables are not yours.&lt;/strong&gt; You should own the documents and be free to take them to another team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No end date and no decision meeting.&lt;/strong&gt; Time and materials with no time-box tends to grow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heavy visual design inside discovery.&lt;/strong&gt; Polished screens look like progress but do not answer the risky questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The technology is chosen before the problem is understood.&lt;/strong&gt; A recommended stack in the proposal itself is a warning sign.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Starting from the solution.&lt;/strong&gt; "We need an app" is not a problem statement. Reframe it before researching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Talking only to the buyer.&lt;/strong&gt; The people who pay for software are rarely the people who use it every day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing a document nobody reads.&lt;/strong&gt; Ten clear sections beat a long specification. The executive summary must stand on its own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skipping non-functional requirements.&lt;/strong&gt; Performance, security, offline use and data residency change architecture and cost more than most features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estimating without assumptions.&lt;/strong&gt; An estimate without its assumptions cannot be checked or defended later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leaving open questions unowned.&lt;/strong&gt; Each needs a name and a date, or it will still be open at the start of the build.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Letting the documents drift apart.&lt;/strong&gt; When a goal or requirement changes late, the architecture, screens and estimate that depend on it must change too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not involving the people who will build it.&lt;/strong&gt; Developers who were absent from discovery will rediscover it, at build rates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When a discovery phase is not worth it
&lt;/h2&gt;

&lt;p&gt;Skip a formal discovery, or shrink it to a day or two, when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the change is small and well understood, and a few tickets describe it fully;&lt;/li&gt;
&lt;li&gt;you are building a throwaway prototype to test an idea, so the prototype is the discovery;&lt;/li&gt;
&lt;li&gt;the same team has built the same kind of thing for the same client and little has changed;&lt;/li&gt;
&lt;li&gt;the scope is fixed by someone else (a regulator or a contract) and the only open question is effort.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A useful test: if the discovery would cost more than the mistake it could prevent, keep it light. Even then, write down the problem, the goals, the Musts, the integrations and the top risks. That takes hours, not weeks, and it is the part that saves projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How long does a discovery phase take?
&lt;/h3&gt;

&lt;p&gt;Usually two to eight weeks. As a rule of thumb, one to two weeks for a small MVP, three to six for a typical product, and six to twelve for regulated or legacy-heavy work. The number of user groups, integrations and decision makers matters more than the size of the idea.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much does a discovery phase cost?
&lt;/h3&gt;

&lt;p&gt;Work it out as people x weeks x rate. A two-week discovery is roughly 3-4 person-weeks of effort, a four-week one roughly 8-12, a six-week one roughly 15-24. Your price is that effort times your rates. Agency guides often quote 5-15% of the build budget as a rough check.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the discovery phase paid, and who pays?
&lt;/h3&gt;

&lt;p&gt;Usually yes, and the client pays, either as a fixed fee for a fixed time-box or as time and materials with a cap. Some vendors credit the fee against the build if you continue with them. A "free" discovery is either short or paid for later inside the build estimate. Whatever the model, make sure you own the deliverables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who takes part in a discovery phase?
&lt;/h3&gt;

&lt;p&gt;On the client side: a sponsor who decides, a product owner, real users and someone from IT. On the delivery side: a business analyst, a designer, a solution architect or tech lead and a project manager. A core team of three to five people is common (a rule of thumb; an NN/g survey of UX teams found about four full-time people on average).&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between discovery, inception and scoping?
&lt;/h3&gt;

&lt;p&gt;Discovery is the full upfront stage: problem, users, requirements, architecture, estimate and decision. Inception is usually a shorter, workshop-based kickoff for an agile team and overlaps with discovery. Scoping is one output of discovery: what is in, what is out and what it costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can AI help with a discovery phase?
&lt;/h3&gt;

&lt;p&gt;Yes, with the writing and checking, not with the decisions. AI is good at turning interview transcripts, decks and old specs into first drafts of requirements, journeys or a problem statement, and at spotting gaps and contradictions between sections. It cannot interview your users, judge which stakeholder is right or own a risk. &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-in-software-development-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, for example, drafts the first stages (background, problem, stakeholders, goals, users and journeys, requirements) from documents, decks, transcripts and images you already have, helps you write and score the rest stage by stage, and you review every draft before anything is saved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-in-software-development-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-in-software-development-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productmanagement</category>
      <category>startup</category>
      <category>planning</category>
    </item>
    <item>
      <title>How much does a software discovery phase cost? A person-weeks model</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Fri, 09 Oct 2026 08:41:55 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/how-much-does-a-software-discovery-phase-cost-a-person-weeks-model-11nn</link>
      <guid>https://dev.to/oleksandr_tytarenko/how-much-does-a-software-discovery-phase-cost-a-person-weeks-model-11nn</guid>
      <description>&lt;p&gt;A software discovery phase usually costs somewhere between a few thousand dollars and several tens of thousands, and large regulated projects go well beyond that. The honest answer is a calculation, not a number: &lt;strong&gt;people on the team x weeks x blended weekly rate&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This post shows what agencies publish, why the figures disagree, and how to build a range you can defend, whether you are buying a discovery or pricing one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What agencies publish (and why it disagrees)
&lt;/h2&gt;

&lt;p&gt;These are vendors' own figures for their own scope and rates, not market surveys:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Duration&lt;/th&gt;
&lt;th&gt;What it covers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Wavect&lt;/td&gt;
&lt;td&gt;3,500 EUR, fixed&lt;/td&gt;
&lt;td&gt;2-3 weeks&lt;/td&gt;
&lt;td&gt;Architecture, milestone plan, fixed-price build offer; fee deducted from the first build invoice if you continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Acquaint Softtech&lt;/td&gt;
&lt;td&gt;$2,500-$5,000 (MVP)&lt;/td&gt;
&lt;td&gt;1 to 6 weeks&lt;/td&gt;
&lt;td&gt;Ranges by project type, tied to build budgets of $15K to $500K+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leanware&lt;/td&gt;
&lt;td&gt;$5,000-$15,000, fixed&lt;/td&gt;
&lt;td&gt;2-4 weeks&lt;/td&gt;
&lt;td&gt;Its own "Sprint 0" price; the page says it is not an industry average&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LowCode Agency&lt;/td&gt;
&lt;td&gt;$5,000-$30,000 (mobile apps)&lt;/td&gt;
&lt;td&gt;2-6 weeks&lt;/td&gt;
&lt;td&gt;Mobile app discovery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Globaldev&lt;/td&gt;
&lt;td&gt;$10,000-$40,000 (MVP)&lt;/td&gt;
&lt;td&gt;Not fixed&lt;/td&gt;
&lt;td&gt;Directional ranges by project size&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Read side by side, an MVP discovery costs anything from $2,500 to $40,000. Nobody is necessarily wrong. They price different things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Different work under the same name.&lt;/strong&gt; Two weeks of workshops and a backlog is not the same as interviews, architecture, wireframes, a roadmap and a fixed-price build offer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different rates.&lt;/strong&gt; Ten person-weeks cost very different amounts depending on where the team sits and how senior it is.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different team sizes.&lt;/strong&gt; One analyst for two weeks and a team of four for two weeks are both "a two-week discovery".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different commercial intent.&lt;/strong&gt; A low fixed fee, or one deducted from the build, is partly a sales tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The "discovery is 5-10% of the budget" rule of thumb is a sanity check, not a price.&lt;/p&gt;

&lt;h2&gt;
  
  
  What drives the cost
&lt;/h2&gt;

&lt;p&gt;When two proposals differ a lot, compare them against this list first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scope of the question.&lt;/strong&gt; "Can we replace this spreadsheet process?" is smaller than "Should we build a platform for three markets?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number of user groups.&lt;/strong&gt; Each group needs its own interviews, journeys and requirements. Often the biggest single driver.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrations.&lt;/strong&gt; Each system the product must talk to has to be checked. Legacy or poorly documented ones take far longer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance and data.&lt;/strong&gt; Health, finance, personal data and data residency add reviews and sometimes a specialist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team composition.&lt;/strong&gt; An analyst alone is cheaper than an analyst, designer and architect, but cannot check integrations or sketch screens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision speed.&lt;/strong&gt; Calendar time is usually lost waiting for interviews and answers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Depth of design.&lt;/strong&gt; Low-fidelity wireframes are enough; polish answers none of the risky questions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A worked cost model
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cost = people on the team x weeks x blended weekly rate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rates below are illustrative assumptions chosen to show the spread, not survey data. Replace them with your own or your vendor's.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Typical team&lt;/th&gt;
&lt;th&gt;Person-weeks&lt;/th&gt;
&lt;th&gt;$1,500/wk&lt;/th&gt;
&lt;th&gt;$2,500/wk&lt;/th&gt;
&lt;th&gt;$4,000/wk&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2 weeks&lt;/td&gt;
&lt;td&gt;2 people (BA/PM, architect part-time)&lt;/td&gt;
&lt;td&gt;3-4&lt;/td&gt;
&lt;td&gt;$4,500-$6,000&lt;/td&gt;
&lt;td&gt;$7,500-$10,000&lt;/td&gt;
&lt;td&gt;$12,000-$16,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 weeks&lt;/td&gt;
&lt;td&gt;3 people (BA, designer, architect)&lt;/td&gt;
&lt;td&gt;8-12&lt;/td&gt;
&lt;td&gt;$12,000-$18,000&lt;/td&gt;
&lt;td&gt;$20,000-$30,000&lt;/td&gt;
&lt;td&gt;$32,000-$48,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6 weeks&lt;/td&gt;
&lt;td&gt;3-4 people plus security/data specialists&lt;/td&gt;
&lt;td&gt;15-24&lt;/td&gt;
&lt;td&gt;$22,500-$36,000&lt;/td&gt;
&lt;td&gt;$37,500-$60,000&lt;/td&gt;
&lt;td&gt;$60,000-$96,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can also run it backwards to read a quote. Divide the price by a plausible blended rate and you get the effort the vendor priced in. If a four-week discovery works out to two or three person-weeks, then the team is one person part-time, the scope is narrow, or the fee is partly recovered in the build. Know which one you are buying.&lt;/p&gt;

&lt;p&gt;Two adjustments worth adding: &lt;strong&gt;client time&lt;/strong&gt; (your sponsor and users spend hours in interviews; it is not on the invoice, but it is the most common cause of delay) and a &lt;strong&gt;10-20% contingency&lt;/strong&gt; if the scope is unclear going in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing models
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Good for&lt;/th&gt;
&lt;th&gt;Watch out for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fixed fee&lt;/td&gt;
&lt;td&gt;Budget certainty, well-framed questions&lt;/td&gt;
&lt;td&gt;Vendor prices in risk; anything outside the list is a change request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time and materials with a cap&lt;/td&gt;
&lt;td&gt;Exploratory work&lt;/td&gt;
&lt;td&gt;Without a cap and an end date, it grows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Credited against the build&lt;/td&gt;
&lt;td&gt;Buyers fairly sure they will build with this team&lt;/td&gt;
&lt;td&gt;Check you still own the deliverables if you do not continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Free" discovery&lt;/td&gt;
&lt;td&gt;Very early conversations&lt;/td&gt;
&lt;td&gt;Cost is recovered in the build estimate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Whatever the model, the contract should say what you receive, when the phase ends, and that the documents are yours to take to another team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions to ask before you sign
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Which named documents will we receive, and what does "done" mean for each?&lt;/li&gt;
&lt;li&gt;Who is on the team, for how many days each, and at what rate?&lt;/li&gt;
&lt;li&gt;How many user interviews are included, and with which groups?&lt;/li&gt;
&lt;li&gt;Which integrations will be checked, and by whom?&lt;/li&gt;
&lt;li&gt;Is the final estimate a range with written assumptions, or a single number?&lt;/li&gt;
&lt;li&gt;What happens if the phase runs over: change request, cap, or extra invoice?&lt;/li&gt;
&lt;li&gt;Is the fee credited against the build, and do we own the deliverables if we go elsewhere?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Keeping the cost down without skipping the work
&lt;/h2&gt;

&lt;p&gt;Savings come from removing waiting and rework, not from cutting stages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send everything you have before kickoff: decks, old specs, support tickets, interview notes.&lt;/li&gt;
&lt;li&gt;Book user interviews before the phase starts.&lt;/li&gt;
&lt;li&gt;Name one decision maker who can answer within a day or two.&lt;/li&gt;
&lt;li&gt;Discover the first release in depth and leave later phases rough.&lt;/li&gt;
&lt;li&gt;Keep design low-fidelity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where the person-weeks go (if you run discovery)
&lt;/h2&gt;

&lt;p&gt;For the agency or in-house team, the work splits in two. &lt;strong&gt;Talking and deciding&lt;/strong&gt; (kickoff, interviews, workshops, readout) can only be shortened by better preparation and faster client answers. &lt;strong&gt;Writing and assembling&lt;/strong&gt; (reading the client's material, turning notes into a problem statement, journeys and requirements, keeping goals, requirements, estimates and risks consistent, formatting the final document) is mostly synthesis of text that already exists, and it is where rework piles up: one late change to a goal has to be carried through the architecture, screens, estimate and risk log by hand.&lt;/p&gt;

&lt;p&gt;Check your own timesheets for how large that second share is. It is the part you can shorten without cutting the discovery itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=cost-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at that second kind of work: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=cost-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The longer version of this post, with the full FAQ, is on &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-cost" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections to the numbers are welcome in the comments.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productmanagement</category>
      <category>startup</category>
      <category>planning</category>
    </item>
  </channel>
</rss>
