In the previous story, we spoke about WHAT and HOW in your projects. Let’s look at some of the most common arguments of HOW people (this is based on true stories):
“Everyone is doing it, so there is something we must know better than Facebook and Twitter if we decide not to follow it…”
There is always at least one thing that you know better than anyone — WHAT you are building. If this is not the case, I think then it doesn’t really matter what you choose.
E.g. all power of Oracle or SQL Server for a key/value store. There are cheaper and better NoSQL options for this.
So, before making this choice, you need to know WHAT this is for.
This is a new cool tech that is revolutionary
Arguments like this come from “fashionistas” usually. Fashion comes and goes, and only a few become classic. New cool tech, in many cases, may have its own specific niche or limitation.
E.g. NoSQL databases are amazing, however, lots of those solutions drop immediate consistency (ref: CAP theorem). So, while availability and parallel processing improve, you need to consider if dropping consistency is an option. Lots of other considerations should be made as well.
So, before making this choice, you need to know WHAT this is for.
Generalized solution
Smart, simple, unified, really beautiful generalized architecture/design… that falls short of supporting a new requirement without major refactoring. Everything should be as generalized as possible, but not more (did someone say this already?!). So, before making it, you need to know WHAT this is for. It will lead to a better understanding of what else is possible, thus helping to add more context to the “generalization” task.
E.g. Xamarin is similar to React-Native, just C# instead of React/JavaScript. So, we can replace one with another. This is false in general, although it may hold true in certain scenarios.
So, before making it, you need to know WHAT this is for.
I implemented this for the future
No one can predict the exact future, especially in startups. You can assume what may happen and structure your code in a way that will help to adjust to the changes, but doing something upfront without knowing WHAT exactly you are doing is a waste, at least partially. Waste of development time, and even more for maintenance, and explaining this piece to “new generations”.
…to be continued…
Know WHAT you do, have fun coding, and what is way more important and rare… have fun supporting your app!
Cheers!