Engineers over-engineer, not because they want to but because they want to have a perfect, future proof, scalable and modular system. It should be able to scale up and down in future, and also it should have feature friendly modular design.
Many times this over-engineering is the result of intent to achieve technical excellence, while they are looking to build a tech-enabled business, it’s not something that should be the primary focus, having a tech co-founder, having a view on building the best tech, or thinking about creating unique intellectual property. At times, this has proven to be counter-intuitive.
One of the ways to avoid this to ask a question - at a basic abstraction level, I used to think myself “What are we building?” and now I turn to our founders and people who ask for my opinions - “What are you building?” I have always asked this question to my teams, and now since I work with many founders, I ask the same question to the founders - “What are you building?”
“What are you building” can be a great question, it’s like asking five WHYs?
So back to the question, When I ask “what are you building” again and again, the intent it to simplify what are we building - we can start with saying that we are building a market place to connect sellers to consumers, if you ask that question again, “but what are you really building?” we might say that we are building an e-commerce portal The Absolute WHATs are something equivalent to a discovery of core idea, and helps you decide multiple things
Dumbing it down, what are you building, what are you NOT building and also what are things that matter while building, because they play a crucial role in your ability to deliver faster or better? Things such as
And many time we end up in their quick-sand and it’s tough to come out without a major rewrite or firebreak, and that’s not something you want to get into in early days.
So how do we think about what are you building? Essentially we are building some kind of systems, think about a B2C idea about selling pet food, chocolates, bed-sheets, gifts? What’s the common minimum system we can find as pattern across all these business ideas? All these systems require a content management system, an order management system, a payment system and a logistics system
Let’s just elaborate this a bit.
Many startups go through similar systems, many startups are powerhouse of innovation. And in these times people often underestimate the The Power of Modular and Abstraction-Based Systems In the throes of innovation, it’s easy for startups to get swept away by buzz words, complex systems or just by latest toy in the market, eg by microservices, they often take the center stage. Not because they are the best, but because every scaled system uses them in some form. While there’s no denying the potential benefits of such structures, it’s crucial to first consider a simpler and more effective approach: modular and abstraction-based systems. This philosophy can guide startups to design efficient products that seamlessly integrate essential components like OMS (Order Management System), CMS (Content Management System), CRM (Customer Relationship Management), and payment systems.
The first step towards building a scalable and modular system is identifying the components - that build up your entire product. It can be few, or many, but you need to be able to figure out basic building blocks. And most of the time, that’s the step ZERO
While it’s tempting to jump on the latest architectural trend, startups need to consider their immediate and core requirements. Often, these involve basic functions like order processing, content management, customer management, and payments. By first designing systems around these core components, startups can ensure they are serving the most immediate customer needs efficiently.
A modular system is akin to building with LEGO blocks. Each module, or “block,” is designed to perform a specific function and can be plugged into the larger system. This approach ensures that as the startup grows, new modules can be easily added or current ones can be enhanced without disturbing the entire system.
In the early stages, resources are limited. Building complex systems can be resource-intensive, both in terms of time and money. In contrast, a modular approach allows for the incremental development of functionalities, letting startups deploy vital features faster and at a lower cost.
Every software system requires maintenance, but complex architectures intensify this need. With modular systems, problems can be isolated to specific modules, making troubleshooting and updates more straightforward.
The digital landscape is continually evolving. With an abstraction-based system, startups can easily swap out, update, or integrate new technologies and platforms as they emerge, without overhauling their entire software framework.
By focusing on core modules that cater directly to business to serve customers needs effectively (like OMS, CMS, CRM, etc.), startups inherently prioritise the internal workflow experience and thus end up with resulting frictionless user experience experience. This can lead to a more intuitive simpler and efficient features. And simple and smoother user journeys.
One of the most important architecture advise I give to people is While microservices can offer scalability and flexibility, they come with their own set of challenges, especially for young startups. They often demand extensive coordination, infrastructure overhead, and can lead to intricacies in managing inter-service communications. Starting simple with a modular design can give startups the breathing space they need to understand if and when to transition to a microservices architecture. And another reason is that Microservices are bound by CAP Theorem, and you do not want to deal with this early on.
For startups, the initial stages are all about finding product-market fit, catering to user needs, and doing so efficiently. While it’s essential to keep an eye on future scalability and flexibility, the immediate goal should be to provide value. Embracing a modular and abstraction-based approach can be the key to achieving this balance, allowing startups to build efficient, adaptable, and customer-centric B2C products.
So next time when are you in a building journey, ask this to yourself and your teammates - What are we building? We are building a e-commerce platform for teens and their needs. That’s fine, but what are we building underneath as tech platform? and then watch out for those answers, and that’s where you start your tech building journey!