You’ve been working on the next big thing. You’ve spent countless hours researching and studying the latest and greatest architectures, design patterns, and frameworks.
Every article you’ve read seems to point you to an extremely decoupled system. Using the fastest object mapper, you tie together each layer. Your objects and services start piling up. Then suddenly, before you even realize it, changes take 3 or 4 file changes just to add a field to a model. Or you never really get off the ground. This is the flaw in the “perfect design”.
Are you sure you need to design something this complex?
I once heard in a programming podcast, “Programming is about picking your tradeoffs. Designing systems is about picking what you are willing to live with and what you aren’t willing to live with”.
Are you really sure you need to decouple things right now?
Are microservices really something you’ll benefits from?
When you start to think about these types of things, you’ll realize you probably don’t need them. At least not right now. Get something that works and runs. Get that proof of concept out into the wild. Adding in all of this extra stuff too early will make a project terrible to develop.
As time goes on, you’ll be able to identity where things need better design. But adding in complexity too soon may lead to a failed project.
Don’t optimize too quickly!
Simple and easy optimizations are good. But don’t go too overboard. Coding interviews make you think that performance is king. It’s not king. At least not without something to reign over.
You won’t know how to properly optimize most things until after you get down the road. Optimizing a code path now doesn’t make sense if you don’t know how often that path is used.
For example, let's say you have an endpoint that provides data for a feature you think is going to be a hit. You spend a ton of time trying to make it as fast as possible. But then you get into production and the feature just isn’t popular. In that same amount of time, you could have made a less efficient version, found out it doesn’t work, and moved on to…