Engineering teams are often asked by a marketing team or product manager to develop a minimal viable product (MVP) based on customer needs. It is the engineering team’s task to demonstrate the feasibility of the product by building a proof-of-concept (PoC). The path that engineers take at this stage can have a major impact on the quality of the product because there is no other time when it is as simple to discard code in the interest of a better solution. For this reason, it’s ideal to use an iterative process when working on the PoC, where each iteration helps answer questions that serve the product in the long-term. Below are some questions to help guide that process.
- Have we clearly defined the expected behavior of the application (i.e. provided an operational definition of “correctness”)?
- Have we documented input/output expectations of the program? (This has the added benefit of helping to define a test plan/acceptance criteria.)
- Have we defined what measurements can be used to evaluate the success of our system?
- Have we defined a service level agreement? Are there any inherent conflicting requirements (e.g. an API that needs a response time guarantee that cannot be met)? If so, what high-level design or expectation changes can we make?
- Have we defined performance and time complexity requirements?
- Have we defined the sizing limits of the system? How can we ensure they are optimal?
- Have we considered potential scalability issues? What is the optimal run time for each critical part of the application? Where could potential bottlenecks be, and can they be avoided or mitigated?
- How much time do we have to implement the application?
- Have we clearly defined what a “proof-of-concept” solution looks like, and how can we know when we’ve arrived at one?
- What is the most minimal way of implementing the product without sacrificing readability and maintainability?
- Are there any languages or frameworks that can support the implementation? What are the pros and cons of using each language or framework?
- How can we be confident we’ve arrived at a good answer to our questions?
- Have we resolved all the known unknowns (e.g. have we done the needed research)?
- Have we minimized unknown unknowns by seeking different perspectives, brainstorming potential failures, or confirming expectations with stakeholders?
What questions do you ask when developing a PoC? Let us know in the comments below.
Photo by Bonnie Kittle on Unsplash