‘Full-stack’ refers to both parts of the application, meaning development of front- and back-end. In most cases, back-end includes more technologies than the front end.
Software development has never been cheap. Nowadays, companies are looking for ways to optimize their tech processes without blowing up the budget. One of the ways to do it is to hire a team of developers that can handle end-to-end development within a single unit – a full stack team. In this article, we are going to discuss the pros and cons of such teams, as well as explore the cases when such teams are the most effective.
When did this notion emerge?
This notion of full-stack teams and full-stack developers first emerged in the late 1990s with the introduction of the world wide web. With the introduction of the Internet, many major enterprise solutions had to create web clients for their products, e.g. ERM & ERP systems that needed web access instead of desktop apps. It was common practice to add web clients to an existing solution since the development of a web client was cheaper than C/C++ desktop solution.
At that time two new terms appeared: back end and front end. Back end is the name of the server-side of the system. The front end is the client on the user’s site, be it a website, a mobile client, or both.
In the case of this article, we’ll take a look at the back-end as a vendor of data for the web or mobile client (sophisticated crawlers or data science applications are not included).
What is a full-stack team?
Depending on how you divide the scope of work, the definition of full-stack may vary. Basically, there are two ways to deal with the tasks at hand. Since the application can be sliced into layers, the layer represents a single subsystem (usually based on one technology). For example, a web-client, a server-application, and a database. The development teams can be divided in two ways:
- The teams develop only one or two layers (front-end team, back-end team);
- The work is feature-based, the team develops all layers of an application (from end to end).
The second option is called a full-stack team since the team covers all tech stack of the application.
On the contrary, a full-stack developer is an expert who can work on every part of the application development. A full-stack developer has skills for both front-end, back-end, and (in most cases) database development.
So, should a company go for a full-stack team or a full-stack developer? We do not believe it should be one or the other. Rather, it depends on the operating model of your company.
Value of a full-stack team for business
When your business needs an MVP, and time-to-market is limited, the last thing you need is to spend weeks on communication or scope arrangements between teams (including who does what and when). Here’s when a full stack development team is more efficient, allowing you to have:
- The planning stage is faster, as there is less communication, dependencies, and synchronization involved.
- Faster development process. If the right methodology is chosen, there’s less fuss about who does what.
- Better support. If the team is supposed to support the product, the expenses for the full-stack team will be lower as one person can fix many issues.
- Feature-owning. The dedicated development team has a better understanding of business needs and domain knowledge, resulting in a better understanding of requirements, easier bug fixing, and improved knowledge sharing.
- Less bureaucracy. When the project has multiple teams, often they have a hard time deciding ‘who’s fault was it’ and who has to fix it.
Full-stack teams vs full-stack developers
Whether to go for a full-stack developer or a team of specialists depends on such things as project size, type of the solution required, and most of all – your budget. Based on the type of project (especially if you need an MVP), evaluate your options carefully to decide whether you need a whole team or it will be an overkill. Let’s take a closer look at the pros and cons of both options.
Typically, this is what a full-stack developer should be capable of:
- developing and designing features end-to-end;
- adding some automation tests to reduce development (in most cases this reduces QA efforts for happy passes);
- arranging the backlog, dealing with tech debt and separating general codebase;
- communicating with the PO and stakeholders.
On the bright side, a full stack developer is a much cheaper option compared to a team. Moreover, a full-stack developer is easier to manage. However, the code quality may suffer (due to the lack of code review*) and they may have broad, but shallow knowledge.
*code review is a part of a quality assurance process in software development when another developer(s) or tech lead reviews the code to ensure it follows the best practices.
Let’s look at the advantages and disadvantages of both kinds of developers.
Full-stack teams pros
- Faster development process;
- Higher quality;
- Effective support of the product;
- Low bus factor.
Full-stack teams cons
- Higher costs compared to a full-stack developer;
- Potentially longer staffing process.
Full-stack developer pros
- Lower costs of services;
- Easier management (compared to a team);
- Potential for scalability*
* In cases MVP proves to be successful, it’s easier to scale up as there will be a person who understands business needs well.
Full-stack developer cons
- Code quality can be lower (lack of code review);
- Higher ‘bus factor’;
- Knowledge depth might be a problem.
Factors to consider when choosing between a full-stack team and a full-stack developer
Now that we have looked at the differences, pros, and cons, we want to know whom to choose. The choice very much depends on the project criteria, that is:
- Project budget: if you have a limited budget, a full-stack developer would be an apt choice. However, in other instances, we recommend hiring a full-stack team.
- Project scope: The decision between a single developer and a team depends on the amount of work that needs to be done.
- Project size: If you have a small scale project, choosing a full-stack developer is justified. Otherwise, a full-stack team is recommended for a large scale project.
- Project quality: A single developer simply cannot see their own mistakes or might lack the knowledge about industry standards or best solutions.
- Product support: If further support of a project is required, a single developer won’t be able to handle both the development of new features and support of an existing part.
Is a full-stack team the right solution for your case?
Should every organization go for a full-stack team? Or more importantly, is a full-stack team a modern IT utopia?
Several aspects determine the best choice for every organization. A full-stack team is the best option in the following instances:
- Your budget allows hiring a dedicated development team;
- Your business processes allow the introduction of a full-stack team (in large enterprises with a vertical development structure it might be hard to introduce a full stack team);
- You have a scope of work for a full-stack (e.g. when you have a public API, and you don’t need a web client, you don’t need a full-stack team).
Whether your organization should hire a full-stack team or a full-stack developer is a matter of choice. Now that we have looked at the advantages and disadvantages of both choices, your decision should be based on your budget, project complexity and size, and urgency, among other things. Finally, it should be noted that most organizations turn to full-stack teams to build both their Minimum Viable Product (MVP) and fully-fledged business solutions.