TKB 16: Running a Product Technical Discovery
Technical discovery is the essential part of the Product Discovery Phase. It concludes many aspects of the software where stakeholders can understand the complex engineering problems that would come under product development and the way we can work on that in product development.
The solution architect first looks at the product requirements at a high level and gives recommendations (assuming Product Discovery and Analysis phase is already done or running in parallel). The recommendations include the technology stack, where to host the software, what should be done for data security, the approach to creating technical documentation, etc.
It contain mostly two approaches. The first approach is the one where we rely mostly on 3rd Party SaaS products so developers don’t need to worry about that part. For example, why create our own authentication and user management system when there are many services that can do that for us, e.g., Firebase, Clerk? If the goal is just to make an MVP, then many of such solutions are recommended. Not creating our own backend and relying on Backend as a Service solutions is also part of this.
It costs less development time and money. Also, the product can go quickly to the market. While such a plug-and-play approach gives the highest level of development speed, it reduces software flexibility drastically. Using any 3rd party services comes with a trade-off. This trade-off is about having a more flexible software where we can mold the scope as per the given situation versus reducing the development efforts and upfront budget.
Another approach is to develop our own things; here, the product cost will be high, and the engineering team strength would increase. Of course, we can still utilize all the open-source solutions which are already there in the market and used by many different products. For example, Authentication and User management would be done from our side, but we can create a fast CMS using Strapi.js and rely on NextAuth.js kind of services for authentication of users.
Using open-source codebase provides higher flexibility than the former one, but it still can hamper the software's future scope. The essence is in realizing the trade-off. If stakeholders think there would be enough time to find a different solution, then relying on open source solutions can be the best way to do things.
Moving forward on Technical discovery, Creating a non-functional requirements is crucial part. It includes the 3 most important aspects of any software, which are Reliability, Scalability, and Maintainability. Having the highest bar of each of these aspects demands very efficient solutions for any engineering problem. For example, for Google, solving any easy problem can end up being complex, as they have to keep such a massive scale in mind, which might take only a few days for any different engineering team as they have a lesser bar of scale, which is totally fine as per their business requirements.
Software reliability is something that defines the performance of the product under normal workloads. It includes response time to any API calls or page load speed. Maintainability is something that requires a very business-focused solution, as it is the one that gets compromised a lot but perhaps is the one that sustains the business. In the end, stakeholders and solution architects have to make decisions as per the goals of the business. Although this triangle is not fixed, we can increase or decrease the bar in an agile way.
Hosting Solution is also a crucial part. If we can utilize cloud services like AWS or Azure, many pre-defined tools and services are available to tackle it. Having on-premises solutions requires many different efforts as we would need a dedicated operational team for maintainability.
The last part is having business intelligence. Sustaining business has its own challenges; having a proper business intelligence solution is really required. It can vary from having CleverTap & AppsFlyer kind of SaaS products to having our own data warehousing solutions where we can, with the help of PowerBI or AWS Quicksite, get insights from user behavior.