DEV Community

Miguel Teheran
Miguel Teheran

Posted on

Full-Stack Developer, myth or reality?

In the past decade, the term "Full-Stack developer" has become popular, referring to a programmer skilled in handling all aspects of modern web projects. Full-Stack developers are experts in front-end and back-end development, covering both the user interface and the server side. Their ability to work in both areas gives them a complete view of projects and improves communication between teams. A major challenge they face is the rapid evolution of technology, which demands ongoing learning to stay updated with the latest tools and frameworks. The requirement to master various technologies, patterns, architectures and trends raises questions about the feasibility of having professionals who meet all these characteristics. It is important to note that a more comprehensive approach is now being considered when defining Full-Stack profiles, incorporating skills such as cloud service management, the use of DevOps tools and the integration of artificial intelligence services.

History

Developers have always had to adapt to new technologies and learn different tools to create robust applications. User interface design used to be mainly performed in IDEs like Visual Studio, Dreamweaver, and NetBeans. These interfaces were much simpler and outdated, while developers focused their attention on optimizing workflows and business logic. The evolution of Web 2.0, coupled with the introduction of HTML5 and innovative JavaScript libraries like Ember.js, Angular.js, and Backbone.js, has greatly expanded the possibilities for front-end development. As a result, the demand for programmers skilled in these technologies has surged, becoming a prominent trend in the industry. By that time, a large number of startups were started (Airbnb, Uber, Spotify) that with their success demonstrated the importance of improving the experience for users and creating technology-based businesses.
Those changes in the industry have led to a requirement for more comprehensive profiles due to project dynamics and budget considerations. A more versatile developer can potentially lower costs associated with hiring multiple programmers and can facilitate the quicker implementation of new features, highlighting the significance of the Full-Stack profile. Something to highlight is that the release of Node.js significantly increased the search for this profile, since using the same programming language (JavaScript) on the front-end and back-end side would theoretically facilitate acquiring the necessary skills to work on both sides of the architecture of an application.

A great back-end is a bad front-end or vice-versa

Full-stack developer

Many believe that Full-Stack developers excel in one area of development but struggle in another. This isn't due to a rule but rather the difficulty of mastering all the necessary technical skills. For example, a very strong developer on the front-end side with knowledge of architecture and user experience can hardly be an expert in cloud-focused microservices architecture patterns. This is not an impossibility, but considering the advanced technical knowledge needed it is very difficult to achieve.

Personal conclusion based on my professional career

I've worked with many skilled professionals and developers, but I've never seen anyone excel equally at both front-end and back-end development. Typically, their expertise in development or specific technologies is shaped by the challenges they've faced in projects and their personal interests. I believe that the Full-Stack profile can be effective in certain situations, even if it's a controversial opinion.

Some companies implement a design system to build their interfaces based on an architecture with reusable controls and components that facilitate front-end development. They also build all the business logic in the back-end and use ORMs (Object-relational mapping) to control changes and connection to the database. This creates a convenient scenario for a Full-Stack profile where you can make back-end and front-end changes in the same user story (branch, pull request, etc...) and finish developments faster. This is a risk that can affect the quality of development, especially on the front-end side, but it is surely a risk that many companies are willing to take for the benefits it brings.

Another very common scenario in recent years are applications focused on cloud services or based on artificial intelligence services, which means that the complexity of the back-end is reduced and development is focused on the user experience and adaptability of the apps.

The concept of Full-stack development remains debated within the developer community, but it is a highly sought-after skill in the industry. Having expertise in both web and backend development provides a better understanding of software projects and opens up more job opportunities. Everything indicates that we will always be stronger on one of the sides of software development or in some technology, but today having artificial intelligence tools and solid programming bases as a help we can solve complex challenges in every aspect and phase of the development of an application.

Top comments (1)

Collapse
 
jimmymcbride profile image
Jimmy McBride

I can see where you're coming from. But after building so many solo full stack projects, I feel very adpet at both. I'm def not a UI/UX designer, but I can make a site look pretty (example: my official blog). But working on so my solo full stack projects, I feel like I have a deeper understanding than a niche front end or back end developer.

For example, a backend developer will often modularize the backend to fit the sql data structure. So they'll return item x in one end point, item y in another endpoint and item z in another. But the thing is that you need x, y and z all on one page, so you have to make 3 async api calls and monitor waterfall state management. When I believe it's much better to combine these into one endpoint that's build for that page specifically!

That way, you get one endpoint to return everything you need for a page. Making front end life a lot easier. I didn't invent this method, and there can be some drawbacks depending on the size of the response, but building the backend in a way that's efficient for the front in can be very benifical in a lot of scenarios!

In so many meetings, the front end and back end fight on how to do things. When the backend doesn't understand they way they are doing something is creating unnecessary complexity for the front end. And the front end also needs to understand backend well so they can make good suggestions as well. However the front end doesn't effect the backend as much as the backend effects the front end.

So even if you're not going to be a full stack expert, even if you're going to have a specialization, understanding the other side is very important to having good relationships with other teams and building a more efficient product for the end user. :)