Software development is a complicated matter. Each project is primarily the concept and the people that bring this concept to life. Deadlines, resources, and of course, technologies, are usually defined afterwards. But it doesn’t imply that the choice of technologies is of the least concern. Today we aren’t going to dissect such project aspects like the team and what it can do. I believe everybody realizes that in order for anything to work, savvy people are a must-have. Instead, today we will be talking about how (not) to choose a tech stack for your project.
When deciding the core technologies used in a project, the business side of things demands you to know the answers to these questions:
- What problems is your project supposed to solve?
- How is it going to grow over time?
- How many resources would it take to implement and maintain?
- Are there any upcoming technologies better suited for your project?
- Are there any ready-made solutions?
Problems
Consider the fact that different problems require different instruments. So it’s crucial to understand the business logic behind an app before making a definitive choice of the technology stack. For instance, you do not use Python when developing a promotional website. You will use CMS like WordPress, Joomla, Drupal, NetCat, HostCMS, because it’s free, simple, convenient, time-efficient, allows various design options, and does not require the help of experts.
Scalability
You may think that a fortunate choice is going to make your app last and flourish forever. Some technologies may really process data flawlessly, but only to the point until the load is not too high. But when an app expands and gains hundreds of thousands of new users, it may not be that stable anymore.
Scalability basically means the ability of a web application to accommodate large amounts of requests when the number of users grows significantly.
Before choosing the perfect technology stack according to your needs, you should evaluate scalability in advance. When doing that, rely on the already existing examples of why a particular technology is scalable.
Resources
Some technologies are too expensive, or the developers that known to be too hard to find. That is why some turn to cheap technologies like Mendix. However, what they don’t consider is the challenge of maintaining such technology later.
During the development process, you always have to aim for the perfect balance between cost, deadlines, and quality. Most of the times it leads to developers sacrificing some powerful security system in one technology in the name of the one faster and cheaper to harness.
Progress
Of course, you should always remember that infotech is changing each day, and that the things considered innovative 5 years ago are close to extinction now when something newer has been released a month ago.
When Kotlin came out, a lot of Java developers were shocked by how fast and easy it is to make Android apps with the new technology. On the other side, newer technologies tend to have a lesser community and poorer documentation compared to older languages and frameworks.
Turnkey Solutions
If your concept is not entirely new, there’s probably a ready-made solution on the web, you just take and use it. However, there’s a chance that such a solution is in another programming language, has poor documentation or community, or there is a handful of developers capable of using it in a project.
But there are also some concerns from the technical viewpoint:
Imagine you need to choose a tech stack for building a web app from scratch. The best you can do is to go with the easiest solution and use CMS (Content Management System), at least partially. We assume you pick WordPress as the most popular out of them. We’ll use it as an example in the following paragraphs.
Difficulty of development
WordPress is not a hard technology by any means. It makes most of the routine work for you. That way, the creation and editing of the web pages is fast and easy, even when applied by a non-senior developer. And as a bonus: it’s delivered for free. So this box is checked.
Support and documentation
The development of this technology is still going. Step-by-step, its creators implement fancy features like asynchrony and transaction processing. Older features are also supported and improved, and the documentation is vast. There would not be a situation when you can’t figure out how to do something. Check.
Functionality
A major but not the strongest side of WordPress. It can handle a lot, but there are superior solutions for any purpose present on the market. If you don’t take the ease of development into account, WordPress is quite a weak solution by itself.
Customizability
First, WordPress is a CMS. Of course, it’s not going to give you as many opportunities to express your creativity as any framework and especially sole programming language. But even there you have some options. There are ready-made themes and mockups, paid or free, you just need to find the one that suits you best.
Adaptiveness
A WordPress website will render evenly good on a desktop and on a mobile device, and the same goes for the performance. It’s not the fastest CMS, but it won’t let you down if someone tries to access your website from the smartphone. Check
Security
There are ways to break through the WordPress defenses. In this case, versatile means vulnerable. You can accidentally stumble upon a package or a theme that has some sort of backdoor. It can occur with any CMS and in every programming language, but those have a lot of reality-checked, almost classic packages. And WP doesn’t have many of such things.
Load
And here’s our elephant in the room. We chose WordPress for our website because we knew that it’s not a news portal or social media. It’s still a decent solution for a corporate website. If you don’t have several millions of users per day, you’re fine with WP. But if your website is going to lift some extra load, be mindful of your tech stack choice.
Imagine that you have still managed to create a high-load website with WordPress. It’s going to look and behave fine until the first performance test. As soon as the load of the website comes to somewhat real numbers, it will first create a frustrating bottleneck, and then just crash.
In fact, you can develop virtually anything using any technologies if you try hard enough. It may vary in some qualities, but it is still possible. You don’t just spend different amount of time and money on projects with different tech stacks but also get a completely different piece of software even if it carries the same idea.
But maybe it’s just a stretch. To say that a wrong technology choice will ruin your project would probably be wrong. There are just so much more aspects of software development.
Even an improper technology may deliver nice results if in the right hands. And a bad team can fail the most prominently-looking project. Software development is not only about applying technologies. It’s about solving problems. And technologies alone don’t solve them. People do.