An Often Overlooked Step in System Design
Building software is fun.
"We could add this feature." "We could automate that process." "Why don't we build the authentication screen ourselves while we're at it?"
Once you start thinking that way, the list of things to build keeps growing.
But there is another important step in system design.
Ask yourself: "Does this really need to be built?"
Spend Engineering Time Where It Creates Value
Development is not the goal.
Delivering value to users is.
That's why engineering time should be spent on the parts that truly make your service unique.
For example:
- Business workflows
- User experience (UX)
- Data design
- Business logic
These are the elements that define your product.
They're also the areas where engineers should invest their time and creativity.
Before Building, Ask Whether It Needs to Be Built
On the other hand,
- SMS delivery
- One-time passwords (OTP)
- Voice authentication
are common building blocks used by countless systems.
Of course, you can build them yourself.
But doing so also means dealing with carrier connectivity, message delivery control, error handling, ongoing maintenance, and adapting to changing specifications—work that often has little to do with your product's unique value.
So take a moment and ask yourself:
"Is this something we really need to build ourselves?"
That single question can change the way you design systems.
Take Advantage of Solutions That Already Exist
Many common communication and authentication services have already been refined over years by engineers dedicated to solving those problems.
By using those solutions, your team can spend more time creating the parts of the product that truly matter to your users.
That, too, is good system design.
Engineering Time
Engineering time is limited.
Spend it where it creates the greatest value.
That's the design philosophy we hope to share throughout this series.