3 (+1) tech tips for startups

✍️ by Giannis Melidis on 🗓 2021-02-03

Building tech for a startup is not always easy. Especially when you don’t have a lot of resources and you have to constantly juggle between front-end, back-end, infrastructure. Here are some tips that I believe apply to most of us.

A lot of people have been asking me about the tech stack that we use at Atium. Some others are wondering, how do we manage to create so many activities AND a platform AND a slack integration with so few resources (people).

My response to these questions is usually threefold:

1. There is no right or wrong technology (ok there are a few you might want to avoid 😛 )

Use what you are comfortable and experienced with. You can put some new technology in the mix, because of course we want to keep learning something new every day. But don’t add too many new things that you have to get good at, at the same time. I am comfortable with Python for the backend, Vue.js for the frontend and AWS as a cloud provider. We picked these at Atium, because in a start-up you want to be able to build fast, fail fast and generally move fast. It’s not a good time to learn a new language. Even if learning Rust is something I have on my list for a very long time 🙂

2. Don’t over-engineer right from the beginning

There are probably a thousand things that you can spend time on and do better. And another thousand that you think it would be cool to try a few different ideas. But unfortunately you don’t have the time or the capacity to work on all of them. Focus on the things that will help you get the product out of the door. This doesn’t mean that you will write bad code or do everything manually. It means that you don’t have to make everything perfect before you can ship. Your platform is a work in progress. Make a -somewhat- clear picture of the future (although probably it’s not going to end up being exactly what you have in your mind) and work so that you don’t have to throw away things all the time. But put the things that are not so urgent in the backlog.

3. Use managed service from your respective cloud provider (be it Amazon Web Services, Google Cloud, Microsoft Azure or another one)

You don’t have to deploy your own custom Postgres/redis/graphql/etc cluster. Most of these services or equivalent ones are available out of the box with little to no configuration and the most important part: Zero maintenance. You don’t have to spend hours of debugging or fixing things, they just work. “But we want to be able to configure this and that” you say? Most probably you don’t. Unless it’s part of your core competence or you are doing some deep tech stuff, you can start off simple. There are almost always, bigger companies that still use these managed services successfully. So any argument about a specific service not being good for your case is probably not valid. Vendor locking is also a topic that is brought up frequently in the discussions. I understand that being vendor locked potentially puts you in the position to be “at the mercy of the vendor”. However, it also gives you speed. For an early stage startup, speed is more important than being able to move from one provider to another. We might not have the “luxury” to think of moving to another provider ever, if we don’t move fast now 🙂

Ok I said threefold but I also have a bonus 4th point:

4*. Use serverless technologies and services when possible

I am a huge fan of serverless and I am proud to say that we have zero servers running at Atium. Serverless reinforces all of the above points to their maximum. It allows you to build fast, not over-engineer your solutions, focus on shipping the product while not having to spend time maintaining servers and broken infrastructure. It might be intimidating to start with, but I can tell you it’s fairly easy and it’s also very rewarding. And to top it up: It also saves you a lot of money!