The discussion over the pros and cons of teams with full stack devs has been going on for a long time. Opinions vary and the IT industry is constantly evolving, that’s why we decided to share our thoughts on how we currently see it from both business and development point of view.
Having one developer doing the presentation layer, the business logic layer and the database layer of an application makes a lot of sense from the point of view of communication. For instance, in small software projects, a full stack developer is aware of the possible ways of viewing information to the user at the stage of designing the architecture of the system already. S/he is able to predict what the final outcome of a solution that s/he wants to implement or the way s/he wants to approach a problem with no need to brainstorm the logic or the design with another specialist. Such developers are aware of the part of the system that is responsible for data validation but at the same time, they’re familiar with the importance of UI in the usability of the application. They look after all the steps of building software from the concept of an application to the actual final product. Moreover, a full stack dev can switch from back end to front end tasks depending on the current need of the workflow. Although, such a broad specialization might not allow a developer to really be excellent at each of these areas.
Back-end and Front-end apart
On the other hand, there are web developers specialising either in the back-end or the front-end. Back-end developers deal with the architecture of software, building the server-side of it, its logic and the API for the front-end. They not only must have knowledge of databases, APIs, interconnectivity, DevOps, security etc. but also have the skills to translate business needs into technical requirements. On the top of all that, for the code to be good, it needs to be clean, well-documented and sustainable. While back-end devs need more of conceptual and logical thinking, front-end developers need to have a good visual imagination and a deep understanding of the way users think and experience software. They work tightly with designers and user experience researchers to make sure that the data is presented in a comprehensible way.
Each of those areas is very complex and requires broad knowledge that needs to be regularly updated and probably requires the developer to have a natural aptitude to specialise as well. So is it possible to come even close to excellent all of these fields? Many techies believe that’s not.
Whether you are more into back-end or more into front-end, to be a good web developer, you need to have a sound basis of programming and be familiar with all the crucial aspects of building applications from the logic, through databases to the presentation. Although to me, if you’re a jack of all trades then you master none of them. These days the trends in programming change so fast, that it’s really hard to keep up-to-date with? all the latest advancements in both front-end and back-end. It’s a job for two people. - Michał Kajder, Ruby on Rails Developer @TheMasters.io
What about the business side of it
Is full stack always a tradeoff between quality of code and the cost? If you’re running a SaaS company you have a lot of factors to look after to make sure your business holds on and grows. The quality of your software and keeping up with the latest standards in programming and UX are just as important as smart budget planning and maintaining financial liquidity. To stay ahead of the game you need to find equilibrium between all of those areas.
A full stack team is often a great time and money saver if fewer people can do the same scope of work. Hiring several people means more recruitment process costs, more people to find, which is not easy these days on the job market of developers, and more complex team management. - Kamil Dubel, CEO/CTO and Co-Founder @TheMasters.io
In general, a team with full stack devs is a good solution for small and medium-size companies. It is a cost-efficient approach, as the developers can easily switch and do tasks that currently need to be done, and reduces the risk of bottlenecks caused by one part of the application being built faster than the other. However, teams with individuals specializing in a narrower area deliver better quality and have a chance to stay up-to-date with all the latest trends. Companies with large and more complex solutions naturally gravitate towards separating teams with front-end and back-end developers.