Do you want to create an app and have trouble picking your technology stack? Can you decide between using C# or Python as the programming language? How about .NET or Django as a web framework? Maybe you want to build a SPA (Single Page Application) but not sure if you need a full-blown frontend framework like Angular or just a view library like Vue or React?
If you are having trouble deciding about what technology stack to use and don’t know how to start, then this article can help you clear your mind and set you on the path to making the right decision.
Be agile over building the robust solution
Many start-ups spend their resources on building a full solution only to realize that there’s no market for their product. They either built something no-one wants or they built it too late.
Building apps from scratch in a highly competitive industries is hard, and the best option is to go with the easiest solution possible. Sometimes, just a landing page built using WordPress or some drag and drop tool like Wix could be well enough. It is much more important to create a fuss and get other people interested in your product, than building a full-blown solution that nobody wants to use.
Once you sparked the interest, tested your concept and have proof it will work, you can start building the product. It is always important to stay Agile and be open to changes and always evaluate the current progress. Note that it is totally OK if your product ends up being different from a concept you imagined, this happens to everyone and the most successful companies are the ones who figured this early in the game.
People over technology
Many start-ups forget that the products should be designed for their users and not for the sake of using a ‘cool’ feature or technology. This mindset usually leads to failure since no-one wants to use a product that is not built with their interest in mind.
The technology you choose should really depend on the problem you are trying to solve. What problem are you trying to solve for your users? Can you create an outstanding user experience? Who will be using your products and how?
As technology advances, users expect better and faster software. Can you meet their expectations? Do you need a caching mechanism to keep your site fast? Do you work with images and need to host them on CDN? You should always be asking yourself these questions that will improve the quality of the user experience.
Security
Security is always a concern for many users. Depending on what market and what kind of data you work with, security could even be the most important factor.
You have to think about why you need to secure something before figuring out how to secure it. If you are from the US or Canada and handling user data make sure to be HIPPA and PIPEDA compliant. Also, signed SSL certificates are a must-have, so make sure to never load your site over plain HTTP.
Open source over building from scratch
Before building anything, you should always try to find open-source solutions. Having this in mind will prevent you from wasting resources on building everything from scratch. Not only will it save you a lot of time and money, but it will also probably be more secure and more robust than the solution you were building. Open source can give you more time to focus on your business making your product stand out.
Before moving forward with open source, make sure that the license is open for commercial use. You should also check how many core developers are behind the open-source code and how many contributors it has. Can your developers easily understand the source code and is it properly documented? How well is the open-source technology tested and does it pass all tests?
Based on my experience, open-source projects can help you speed things up and can definitely be a part of your stack, but if you are building something unique with your own brand, then expect to write custom code or making modifications to the open-source code.
How big is the ecosystem
In software development, the ecosystem is made of tools and people. The bigger and better the ecosystem, the easier it is to create software, debug code, find help and hire new talent. Here are some tips on how to find an ecosystem around your desired technology.
Check how many questions around your technology does stack overflow has? Can you find meetups, groups, conferences and online tutorials for the chosen technology? What can you find in google trends? Is the interest in technology still rising?
If you want to see the ecosystem of a language or framework check out Awesome ecosystems. There you can check ecosystems of many languages and frameworks including Python, Java, C#, and Django.
Pick stable technology over hyped one
The moment you picked the technology you want to go with, you also added an expiration date to your product. Every technology has a lifecycle. You want to choose mature technologies because they are reliable and not because they are new and cool.
The reason big companies experiment and build new technologies is that existing ones are not meeting their criteria and they need something more efficient, robust of something completely different. A good rule of thumb is to never pick a piece of technology just because everyone is talking about it and always write at least a small piece of code to see how you and your developers feel about using it.
One good tool to check is Technology Radar. Technology radar will give you an idea of what future-proof technologies are and can help you to decide whether to adopt the technology or put it on hold.
Another idea is to check stackshare.io or techstacks.io.
You should be able to find talent easily
When starting out, you have to move as fast as you can, hiring great and talented people who can help you move your product fast. Hiring developers with the knowledge of the ecosystem can help you move your product faster and give you much more confidence in the execution. If you or your developers don’t have much knowledge about the ecosystem, check if the technology is easy to learn.
When building apps, always try to hire someone with experience in the industry as that person can relate to the problem and has a much better understanding of what you are trying to achieve.
Other things to consider when picking a technology stack is to make sure that there are enough good developers for that technology.
Should you hire an agency as your partner and have more time for your business? What are the costs of development? Should you have an in-house team or outsource? Are there any larger companies working with the same technology and getting all talented developers? Make sure to check LinkedIn or different Job Portals to learn about current players and what they are looking for.
To learn more about development trends you can always check different surveys filled by developers and agencies. Here is the survey from Stack Overflow.