Aug. 29, 20195 min read
Authors: Emil Waszkowski - Head of Digital Consulting
Building a web application is like building a house. End-users tend to focus on the design, they want to know how many rooms it has, what kind of modern solutions have been applied, what is the final cost, and so one. They’re aware that technology behind its construction is important, but it’s not necessarily the subject of hot discussions among the buyers. It’s quite similar when it comes to creating first-class web applications - end-users are interested in user experience, design, and features. At the same time, investors, business owners and other stakeholders expect an app to work seamlessly for the numerous number of users and to be easy (and cost-effective) to update and maintain in the future. However, both building a house and developing a web application have to start with strong fundaments. Puting the construction metaphor aside, the fundament of every web application is the technology stack behind it.
In simple words, a technology stack is a set of programming languages, libraries, frameworks, databases, servers and other components, which are necessary to develop any kind of software. All of them are collected together to complement each other in order to build a robust and fully functional application. In web development, the stack includes:
the frontend, which revolves around everything that’s displayed on users’ screens,
the backend, which remains invisible to users, but in fact, forms the backbone of the web app and “powers” the client-side. The most common backend languages are Python, Ruby, or PHP, but in order to create a web app, you will also need to select a database to store data, as well as a server to handle requests.
The most common components of the frontend are:
HTML (Hypertext Markup Language), which defines the structure of the information presented in the browser,
CSS (Cascading Style Sheets), which determine the style of the application, including colors and fonts,
The back-end is usually more complex and diverse - you can choose from numerous:
programming languages (Ruby, Python, PHP, Java),
databases (MySQL, PostgreSQL, MongoDB),
frameworks (Django, Ruby on Rails, Laravel),
runtime environments (Node.js),
servers (Apache, Nginx) and
operating systems (Linux, Windows, macOS, Android, iOS).
With so many technologies, making the final choice can be tough. Especially that there is no doubt that the right tech stack plays an important role in every project’s success, while making a wrong decision may be a reason for failure. It’s important to be aware that the technology used for building an app affects its performance. At the same time, the type of application also affects the choice of technology.
Another factor that needs to be taken into consideration is the final cost of the stack. Some tools are open-source and free for commercial use, others are paid. When estimating the costs, you should include how much the updates, support and further development will cost. The release day is not the end of the development project, especially if you think about upscaling in the future.
Choosing the right technology stack may be particularly challenging for small businesses and startups that usually work with limited resources, and the impact of the wrong decision can be even more severe than in a bigger organization. On the other hand, corporations with established IT software development departments may be tempted to use technologies they’ve already had experience with, rather than choosing those that perfectly fit the needs of the specific project. What to take into account in order to do it wisely?
Start with the size and complexity of the project. Simple apps, strict deadlines and tight budgets will require less complex solutions. When it comes to bigger projects, though, the use of more advanced technologies will most likely be necessary.
At the same time, the type of product you are developing can easily influence the technology stack. For example, if you are working on a startup or a quick MVP, you will probably choose Ruby - even though Python can be a great choice here as well. Speaking of Python, though, it’s definitely favoured in apps using Machine Learning and Big Data,
Even if you don’t consider it at the moment, after some time you may want to scale your application because the majority of entrepreneurs want their products to grow. It’s way better to realize this possibility at the beginning as it’s an important factor in choosing the tech stack. Once the app is growing, it has to deal with handling more requests per minute. When the growth is exponential and the app is not prepared for that, its performance can significantly drop which ends up with angry users who leave bad reviews and consider using other services. Scaling (up or down, but let’s focus on scaling up at the moment) may seem to be a simple thing but the reality is far from it as it affects every part of the stack - some technologies are more flexible than others, some are designed for MVPs and small projects, while some or better suited to the big enterprise applications. You may need a simple MVP now, but what happens it’s a tremendous success? Such a possibility can’t be predicted, but shouldn’t be ignored.
The skills and availability of a software development team will also make a difference. Even if you choose a preferred technology, it may turn out that finding experienced developers that specialize in it is actually difficult, and you may be forced to settle for something else in the end. If that’s the case, choose a reliable software house to partner with instead of building your own team.
We also believe that choosing open-source technologies is good for businesses and it’s not only about cutting costs. Of course, open-source tools are free or at a very low cost, but the list of the advantages of open-source is long. Let’s start with the legal freedom they give developers - the proprietary tools usually have some limitations in their licenses, while open-source can be edited any way you want. Open-source also comes with piles of documentation and other resources, such as wiki sites, forums, blogs, and community-created content. It’s a tremendous help if you stuck, find a bug, or you don’t know what is the best approach to solving a problem. Speaking of community - it may be the biggest advantage of open-source. Every technology has a vast and highly engaged community of developers motivated by peer recognition and a need to make something great together.
In short, in order to make an informed choice about the right technology stack, it’s crucial to analyze the needs of end-users, the final cost, the preferences of the development team, and finally the type and size of the application. Do you need an MVP or, on the contrary, an enterprise app? A data-intensive app or something simple? All of that affects the final choice. If you want to start small and then upscale, make sure the stack you choose is flexible and will let your app grow. It’s also necessary to understand what the technology stack is and what are its most popular components.
If you still struggle to choose the stack or the development team you work with is not ready to develop an app you need with the technology you need, contact us to discuss your next project.