Is a Full-stack Team a Modern-day IT Utopia?
Is a Full-stack Team a Modern-day IT Utopia?
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.'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. Typically, front-end consists of client written in Javascript (ES6, TypeScript) and/or mobile client (hybrid or native). In contrast, the back-end has the application (written with NodeJS, Python, PHP, etc.) and database (Mongo, Oracle, MySQL, or any other). Moreover, big enterprise solutions can have a complex system, with data processing, neural networks, crawlers, etc.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).
Woman sitting at a desk in front of coding computer screen; image by Kelly Sikkema, via Unsplash.com.[/caption]Value of a full-stack team for businessWhen 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.
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.
Faster development process;
Higher quality;
Effective support of the product;
Low bus factor.
Higher costs compared to a full-stack developer;
Potentially longer staffing process.
Lower costs of services;
Easier management (compared to a team);
Potential for scalability*
Code quality can be lower (lack of code review);
Higher 'bus factor';
Knowledge depth might be a problem.
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.
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).
About Nadia Serheichuk
Nadia Serheichuk is a writer at N-IX, who is passionate about discovering and writing about technology at its very best. She loves writing about professional services, cloud solutions, and business intelligence.