After the initial call to determine that both us and the client are a good fit for each other, the next step is to understand the details of the project. We call this the discovery stage and this is where we create a plan and propose it to our potential client. We divide our development work into two categories: building from scratch and helping with an existing product. The discovery stage will change depending on the category and other factors like consulting needs or remote augmentation. Regardless, we have to understand three main things during discovery: the requirements, the current situation, the execution plan.
To understand a new project, we must see some kind of specifications or designs, and discuss the final vision for the product. For existing projects, we must dive into code and see the existing development standards, practices and tasks firsthand. For (consulting projects)[/consulting], it is most important to understand the business difficulties and the knowledge level of the team that we will be working with.
Here are some example questions we would ask regarding the requirements:
We rarely rely only on written specifications as requirements change more frequently than the written word. The product owners’ vision isn’t always described completely in words. For that reason we cannot work without at least some minimal visual guidance and without discussing the details face-to-face with the person in charge.
Once the requirements are understood, we must learn about the current situation. These questions are related mostly to people and a company’s existing practices. We ask them to understand how our partnership would look like and function day to day. If there is existing code, we’ll take an extensive look at it with the engineers on your team. Here are some example questions we would ask, depending on the type of our engagement:
Some agencies enforce their own development methodology or best practices. While we have our own preferred way of working, we are not a strategy or methodology consultancy. We tend to adopt a client’s established practices, but will be happy to give our opinion and suggestions along the way.
After we have learned everything we need about specifications and current situation, it’s time for us to do our homework. We’ll gauge which members of our team are most qualified and have the bandwidth to contribute, and what would be the best solution for the client. In consulting and remote augmentation cases, our discovery stage ends here and it’s just a matter of scheduling the right people for the right period of time.
In case of a new project, we take some additional time to come up with a detailed estimation based on the requirements and current situation. While we don’t work with fixed bids and charge by time and material, this step is crucial to understanding of the budget boundaries and proper planning of the development. Our price quote never states the exact budget for the project.
Once we have the estimation, we invite the potential client to our office to present our understanding, vision, and estimation. We explain our reasoning, get answers for additional questions, and correct the path by altering the scope if necessary.
We see the discovery stage not just as a necessary stage for us to understand the client, but also as a great opportunity for the client to learn more about our company, our people, and our process. The most important thing is to ensure that you can trust that your partner will meet your expectations. The right partner will reduce your risk of failure by foreseeing potential pitfalls where you wouldn’t see them, and limit your time spent micromanaging their team by taking initiative and constantly communicating.