The goal of an inception is to create a common understanding of the product and define a high-level execution plan of how we can deliver it. Align product and engineering on what you are building and how. Communicate basic scope of the product.

This is a very important step because it helps everyone on the team understand the scope of the product, assumptions and constraints.

This stage usually involves a number of activities that depend on a context a lot. For example, activities for starting the "greenfield" project may differ from "brownfield".

We'll dive deeper into the activities below.

Understanding starting point

Where we are at now and where do we want to go from here?

Investigating feasibility

The goal of this activity is to understand whether the project is possible taking into account technical (questions below) and financial (can this type of project be achieved within the budget and on schedule?) sides of the story.

Investigating feasibility requires information from multiple sources: tech audit, code review, interviews, analysis of the situation.

Here are some of the questions we ask when we investigate feasibility:

  • Do we implement a new feature in existing application or a new application
    • If the app already exists. Would the technology be the right choice to solve a problem?
    • Are there are any architectural trade-offs we need to think about?
  • Do we build a product from scratch?
  • Do we build a product that requires integration with the legacy system?
  • Are we migrating a product from the legacy?
  • What are the boundaries of the new system and existing system?

It is important to communicate all these findings, as they can be tedious and complex to discover.

Techniques

Below are few techniques we found useful when preparing to run an Inception.

Schematic design

Designs that schematically illustrate the ideas in response to the issues raised during feasibility and code assessment stages may lack details, but describe the high-level situation.

Feasibility gives the initial constraints while initial schematic design will explore what’s possible within those constraints.