The Full Stack Developer’s Paradox
The concept of Full Stack Developer has been gaining popularity for some time to describe a software developer who handles the full set of technologies needed to build state-of-the-art applications.
However, an increasing number of critics are challenging this broad concept and comparing it with other alternatives to achieve successful development projects.
What is a Full Stack Developer?
I started programming in the past century; my first languages were C and then C++ and I even programmed a bit of Assembler 8086.
At that time, the programmer mastered the entire technology spectrum to build software.
In other words, everything or almost everything depended on what you were building and, basically, a single programming language was used.
It was a simpler world.
The complexity of applications as well as the way they are written has grown exponentially since then.
Today, a web or mobile application, without an interface or in any other way, involves a wide array of technologies and languages.
In addition, with the rise of agile methodologies where the focus is on users and their deliverables, the system-building scenario has changed even more.
Building an application today involves mastering at least some of these technologies:
We must also communicate with third-party services that are becoming more and more important, which implies an additional area of expertise.
Amazon, Google, IBM, SAP, SalesForce…
The combinations are endless.
In this context, full stack developers have emerged as a requirement of current times.
In soccer terms, they are players who can cover the entire field.
Programmers who have mastered the full range of technologies needed to build a modern application.
The Full Stack Developer’s Paradox
It would seem that the full stack developer career is booming.
Simply doing a LinkedIn search on the subject is enough to find thousands of people who define themselves as full stack developers or senior full stack developers.
This definition undoubtedly helps to improve their salary. According to specialized recruitment portals, the salary of a full stack developer is twice that of a software developer who doesn’t define him- or herself as full stack.
However, there is no formal degree that qualifies a developer as a full stack developer.
Anyway, if there were one, it would be meaningless because the stack of technologies being studied today would inevitably be incomplete tomorrow.
A full stack developer is a programmer who identifies himself as such and is knowledgeable in enough technologies to build a modern application.
There is no agreement as to what technologies they should be, but certainly, there are many and only developers defining themselves as full stack know exactly what they mean.
Therefore, no two programmers will have the same level of knowledge.
In the end, the designation of full stack developer ends up being an identity trait of a programmer who likes to be up to date with technology.
Suppose that we define ourselves as full stack developers and we must reasonably handle all the technologies involved in software development.
Actually, we’re playing catch-up because technology evolves much faster than we can grasp it.
Much of our effort will be focused on studying new advancements, often through trial and error.
Trying to master everything means mastering nothing.
Consequently, there is a paradox of full stack developers: on one hand, they are defined as someone who masters all the technologies necessary to build an application, but on the other hand, it is impossible to be an expert in everything, since technological innovations that allow building more and better applications emerge every day.
It’s a race that can’t be won.
The Full Stack Developer’s Problem
There is an implicit problem with being a full stack developer and many voices in the technology world are being raised in this regard.
If I have to be constantly keeping up with technological developments – which are much faster than my ability to learn – I will have to dedicate considerable time to this continuous technological adaptation.
The more technology “layers” I master, the more time I will have to devote to continuous updating.
That’s not all bad, it’s part of the full stack career, but it has a drawback that is often discovered in the long run.
A developer’s job is to solve problems using technological computational models.
If we focus on learning about the latest trends, we are only focusing on technology and forgetting about the problem-solving part.
Understanding the problem to be solved is as or more relevant than the solution itself.
To do this properly, we must understand the business we are modeling and develop certain soft skills. This is even more important than focusing on the technological aspects.
However, the full stack developer puts technology before understanding the problem to be solved.
Over time, it often happens that we cannot keep in step with new technologies and we end up becoming obsolete.
We will not be good at understanding problems and we will not be able to use the latest technologies either.
Is there a way to escape the full stack developer’s paradox?
In other words, can I always be up to date with technology and at the same time be able to focus on searching for solutions?
What is clear is that if most of the time we are focused on keeping up with technology, our focus will be there and we will neglect everything else.
There is a solution to this paradox and today it is called Low-code, although it is not a new concept.
A Low-Code platform raises the level of development abstraction, minimizing the technological effort and focusing on understanding and describing the problem.
The question that comes up is whether I can take advantage of the latest technologies when using this type of platforms.
In fact, Low-code is in charge of technological adaptation because, depending on the problem, it uses the latest technological trends in order to build the best possible solution.
The low-code tool is the full stack developer at our service and we are the ones who understand the problem and describe how to solve it at a higher level of abstraction.
It makes sense, then, that those who adopt this technology have an advantage over full stack developers; they not only master all the technologies involved, but also do so without spending time on it.
For example, GeneXus has followed this solution development paradigm for more than 30 years.
Today it is positioned as a low-code platform, but before that, it was RAD, Case, 4GL and other categories. The names have changed but the paradigm is the same.
The focus is on understanding the business and finding the solution, because the technology can be automated.
In the GeneXus community, it is normal to find developers building applications that use the latest technologies available in a framework of interconnections that would seem impossible to achieve by a single person without knowing the technical details behind them.
That’s the power of using software to build software: allowing a developer to build what would be impossible to do manually without a team and multi-million investments.
For this reason, Gartner predicts that by 2024, 65% of applications will be built with Low-code technologies.
- Full Stack Developers are full stack players, striving to handle all the technologies needed to develop applications.
- The salary of a full stack developer in the United States is twice the salary of a traditional software developer.
- There is a paradox of the full stack developer that argues that they will never know everything they need to know, because technology is advancing faster than they can grasp it.
- There is no formal full stack developer degree, it is a self-definition.
- A full stack developer focuses on technology and forgets about the other “soft” aspects of building a solution.
- A good option to become full stack without investing time in continuous training is to use Low-Code platforms such as GeneXus.
- Low-Code platforms make it possible to develop applications with state-of-the-art technology, providing developers with a high degree of abstraction.