How to choose the right technology for your startup?
A rational approach that will help you focus on what matters - actually shipping your product - and release you from paralysis-by-analysis
I talk to a lot of people who start or want to start their own online business, and one of the most common questions I get is: "What technology* should I build my product on?"
*By technology I mean everything from programming language/framework to cloud provider and beyond.
There are many factors you need to consider to answer this question sufficiently, and even when you do so, there's not one single right answer. So, what are these factors? Glad you asked 🤓
What type of product are you building?
For most online ventures, technology is the enabler rather than the protagonist, unless your product's core value proposition is its proprietary technology (e.g. you're building the next Google). Also, the path to bringing your idea to life from a Tech perspective can be very different depending (among other factors) on whether you're a well-funded startup vs. you're just bootstrapping.
To make things simpler, for this article, I will assume you're a solo Founder, or a small team, trying to build a product, bootstrapping (i.e. with no external investment) or just with some minimal investment, and you're trying to validate your idea/business model.
Go lean
As a bootstrapped or small startup Founder, you need to minimize waste. And building something that no one needs is ultimately waste. So, first things first, you need to validate your idea. We're not going to go into methods for doing this, this deserves a post of its own which I will cover in the future. If you're in the idea-validation phase, chances are that your product will gradually change or even pivot altogether. Which means that you might have to throw away a lot of your work. You should be ready for this and embrace it. If you're changing things it means you're collecting valuable feedback and you're moving forward, getting closer to building something that people want. This is better than stubbornly insisting on an idea that no one is interested in.
So, if you are to eventually throw away some of your work, what's the most efficient way to build your product? Well, I would argue that if you can, you should avoid "building" it as much as possible in these initial stages. By "building", I mean writing (or getting someone to write if you're not a technical Founder) code. Yes, you heard that right, and that's coming from a developer but also someone guilty of over-engineering (more on this in an upcoming post).
The rise of the no-code movement
In our days, we're extremely lucky to have a plethora of tools (some paid, some free) that you can use to quickly build a solution, either on a single platform or by stitching platforms and services together (e.g. using Zapier). I'm talking about the rise of the no-code movement. A great resource to check out and get some inspiration is MakerPad, where you can see many examples of no-code built products. But no-code is not a new thing. SaaS (software-as-a-service) platforms that allow you to build e-commerce stores (e.g. Shopify) and websites (e.g. Wordpress.com, WebFlow, SquareSpace) have been around for some time now. On top of that, there are so many platforms that are not purposed towards building a product as such but can be easily leveraged to validate a business idea: social media groups, email marketing tools, and more.
Overall, what I want you to take away from this, is to change the way you think about creating something new, and always try to find the most efficient, not the most obvious or popular way to do it. If you're a developer like me, your first reaction to any idea is to start building something (insert hammer/nail analogy here), because that's what you're trained to do. However - and I can speak from experience - unless you're developing for the joy of it, which is fine as long as you're conscious of it, this is probably not the quickest way to get your idea out in the world and test how well it's received.
With great power, comes great... inflexibility
Of course, as great as all these no-code tools sound, there's always a trade-off (sorry for bringing you back from builder's utopia). Using these tools, it can be hard, or impossible, to build a tailor-made solution exactly to your specifications. But at this stage, do you even have exact specifications (remember, you're still validating your idea) and are you ready to invest that much in "building" what you assume is right? Is it better to stick religiously to a plan that you have no real customer insights on, or is it better to go to market faster and find out if your idea has legs?
Now, for sure, there are specific types of products and services that are almost impossible to build using those tools, and in this case, you would need to really "build" a solution. The same can apply for more mature phases of a product, beyond its MVP stages. However, identifying whether you need to build something, is a valuable exercise that you should go through nevertheless. And if you ultimately need to do so, you still need to make a habit of leveraging technologies that can make your life easier. Avoid re-inventing the wheel as much as possible.
Live is better than perfect
In these early days of your startup, don't obsess over operational efficiency and scale. Yes, it would be amazing to auto-magically serve thousands of customers while you sleep, but to get there you need to get one customer first. It's better to put together a Wizard-of-Oz kind-of product, where a lot of the work in the background happens manually, rather than trying to automate everything from day-1. In the beginning, you have to do things that don't scale and avoid falling into the trap of premature optimization. Build things, when and as needed, just-in-time. Again, this is a whole topic of its own (stay tuned).
Having said that, there's definitely value in automating repetitive, tedious tasks, if the effort required is justified by the output, in terms of customer value. But you will only know whether there is true customer value to be unleashed if you launch. And the less time you spend over-optimizing, the sooner you will launch.
Seems like you have to get your hands dirty after all
So, let's say you have explored all your options and you have decided that you do need to build software for your idea to come to life. What's the best way to go about it? What are some of these factors that I mentioned at the beginning of this article that you should consider? (wow, that was a long detour)
Don't skip prototyping
Are you building this product yourself or are you hiring someone to do it? Whatever the case is, there's value in prototyping your solution to make sure it makes sense from a user point of view. Instead of spending days or weeks coding a product end-to-end, you can quickly put together an interactive prototype for yourself and your early audience to play with. Share it with people and start collecting valuable feedback. It doesn't have to be pixel perfect, it can even be a low-fidelity hand-drawn design. The goal here is to validate that your hypothesis around the product and the user journey actually makes sense. A prototype is also a great way to communicate to developers - if you need to hire - what the product should do. A great tool to build interactive prototypes is Invision, and there's plenty more.
You know this old saying, "a picture is worth a thousand words"? I just saved you thousands of words of specs documents and back-and-forth Slack messages. You can thank me later 🙂
How do I choose the right technology?

Well, this is the million-dollar question, but here are some factors to take into account:
(remember, by "technology", we refer to programming language/framework, hosting providers, etc.)
What you know already
Are you a developer? Are you familiar already with technologies you can build your product on? Great, here's your answer!
Before you start building a new product, it's easy to go down the rabbit hole of what is the best technology to build/host/... your product, but in these initials stages, will it really make a difference or you're better off using what you already know and launch fast?
Developer forums are filled with heated arguments that go something like this:
“PHP is an insult to web development” - PHP hater
, and responses like:
“Facebook was built on PHP” - Mark Zuckerberg
Truth is, you can build a great product with not-so-great technology, and reversely you can build a 💩 product with the most cutting-edge technology out there. In most cases, it’s how you make use of it, rather than what you use, and most importantly whether your product resonates with your audience. So, don’t obsess over it, and don’t let your FOMO take over.
Of course, you might decide that you want to try out a new technology: it might be because you feel that what you already know is inadequate for the product you want to build, or just because you want to learn something new. Whatever the case is, just be conscious of your decision and the reasons behind it and accept the consequences (e.g. you might take longer to launch, etc.), so that you don't get frustrated later on.
Who you know
If you're not a developer, do you have any contacts that you have worked with successfully before? Great! Reach out to them and ask them to help you out. Let them use the technology they are most experienced on, as long as you feel you understand why they chose it and it and they have communicated to you any restrictions or limitations. Don't be afraid to ask questions, and don't treat technology as a black box.
You don't know any developers personally? Ask other founders for recommendations based on their experience. Or you can reach out to freelancers online.
Still, stuck? You can ask me, I'll do my best to help 🙂
If you do end up working with some developer(s), make sure you are on top of the build process but don't micro-manage. If you feel you need to micro-manage, you have either made a bad choice, or you need to change your ways and learn how to delegate. Having said that, don't just assign a project to a developer and only check-in at the project. Time is money, and you don't want to waste either of them, building the wrong thing. Keep a short, but not intrusive, feedback cycle.
Be part of a community, don't experiment
Whatever technology you're going with, you want to make sure there's an active, mature community around it. You don't want to find yourself stuck on some technical issues with no help around. Also, having an active community ensures that technology is up to date in terms of best practices, security, and performance.
If you choose to go for this shiny new technology, by all means, knock yourself out, but be prepared to be the guinea pig. You might have to be the first one to solve certain problems and make your life difficult overall. If something sounds too risky or experimental, it probably is, so just be aware of it.
Any more tips?
Keep it simple
If your idea sounds too complicated to build, it is probably because you haven't fully grasped the problem you're trying to solve, or the opportunity you're looking to exploit.
It is very difficult to build something that is complicated to you, let alone explain it to someone else to build if you're not a developer yourself. Remember you’re not building a space rocket. Or if you do, this article is not for you. Revisit your idea and break it into smaller parts, addressing one piece at a time, until it's clear what needs to be done.
Think ahead
Even though as I mentioned, you shouldn't over-engineer/optimize your product early on, there is value in thinking what your product could look like a year from now if it becomes successful. Your initial product is likely to change, so don't overthink it, and don't try to solve every problem under the sun (niche is the way for small startups). This exercise will help you identify potential constraints or opportunities and it can give you some general direction on how to architect your product.
Don't re-invent the wheel
Building a chat tool or an online course? There are plenty of services and frameworks you can use that do all the heavy lifting for you. Yes, you might have less control over these services, or they might cost more and hurt your margins, but they can massively help you speed up your time-to-market. And later on, as you have more resources, you can build in-house solutions and replace these services.
Closing thoughts
Building your own startup is exciting (and scary). And even though technology is surely an integral part of it, it’s not the only challenge you will have to face. While building a new product, you have to wear many hats and stay close to your potential customers or users. You need to make sure you are building something of value to them and figure it out as you go. Use your resources wisely and minimize waste as much as you can by leveraging services and frameworks that do the heavy lifting for you, and invest more in technology as you prove your model and your business grows.
And most importantly, don’t forget to enjoy the ride!