Start-up technical check-list.

Starting a new project in 2021 — what do you need to grow fast, be responsive and keep going fast with minimal technical debt going forward? From my experience I created this simple checklist of things that if you don’t give a day or two at the start will cost you months down the line:

1. CI — CD —This is the most important item to handle, it will speed up deployment and reduce the time spent fixing human errors. Today we have lots of really easy ways to set this up from Jenkins, bitbucket pipelines and all the way to Circleci which are independent CI-CD providers.

2. Setup environments — You need at-least two environments (development and production) that are separated by a brick wall. Though it’s advised to have 4 ( development, QA, staging and production ).

3. Translations infrastructure — if you intend that your product to will multi languages do it from day 1, the setup will take you a day or two and you will keep your project properly updated and translated, if you decide to switch a year down the line you will have to undergo a massive UI refactor to support it not to mention significant QA time to make sure no one forgot anything

4. Setup micro-services — Though it sounds scary setting up micro-services is very simple these days. It’s easy to set up a single API on micro-service architecture but almost impossible to change monolith to micro-services down the line. 2–3 years down the line switching from a massive monolithic structure to a micro-service one can take up to a year and this is when you will have the most growth in the product happening.

5. Select popular frameworks/languages — don’t fall into the Ruby trap, though Ruby and Vue are very enticing and sometimes even recommended for startups the moment you hit the hiring phase of your startup you will find it very difficult to find developers and that can take several times as long to find good people.

6. Don’t neglect security — Security of your project should always be kept in mind no matter what you do. If you neglect it for whatever reason like “we are small or no one will want to hack us” it will hit you ate the most bad time imaginable.

7. Keep it simple — The product will get complex very fast on its own, the simpler you keep your solutions to the requirements the faster you can develop them and avoid unnecessary overhead.Always ask yourself “do we really need that technology or can we do something simpler?” and “Did someone else had this problem, how did they solve it?”.

8.Don’t over-plan — Its easy to get into the mood of “we are going to have millions of users” but the reality is often far from that. Pick up a scope that is reachable for your app. This will drastically simplify your project and help you avoid the common pitfalls and cost overheads. And never forget that if you do get influx of users you can always get bigger servers which will give you the time you need to react and figure out a better solution.

Now it doesn't mean that you cant make it work without implementing any of those points. Each startup faces its own challenges and should work towards reaching its goals in a way that fits the project, product and requirements. So for example if your founders know Vue and Ruby go for it this is the fastest way to prod, but plan to swap to a more popular stack down the line.

However those seemingly useless items at the beginning make a huge impact on the culture and quality of the project, save a significant amount of time down the line not to mention the motivation of the developers. :)

Software team-lead