In the past year I’ve worked on quite a few projects that have had very ambitious development goals from the beginning of the project. A few of these goals were truly necessary to ship a quality product, but many of these goals cost time, money, and in some cases the project.
Lately the trendy thing to do is start with a front-end framework like React or Ember and build the back-end as microservices. I think these trends have their place but are often used prematurely. This can cause development speed to slow to a crawl.
When starting an application your goal should be to ship a MVP (minimum viable product) as fast as reasonably possible while still maintaining quality. To help make that successful you need to be minimal. Evaluate if you really need to start with a front-end framework or if you can get by with static HTML and JavaScript where needed. Build a monolith instead of starting with microservices to avoid the unnecessary overhead that affects development, infrastructure, and team productivity. In every situation you encounter, ask yourself if what you’re trying to do is really necessary.
As the MVP post implies, the best way to start is to start simple. For example, if you wanted to write time tracking software for your team a good place to start would be a spreadsheet. Conversely, a bad start would be using microservices before you have any customers.
Once your MVP has shipped then you can make decisions such as migrating to a front-end framework or extracting a service. Keep in mind that it’s almost always easier to break something apart than it is to put it back together.