"What are you?" | Full-Stack Developer

It has been quite a few times I met opposite opinions about the term "Full-Stack Developer." Some use it with much certainty as if there were the definition everybody knows about, while others deny it or at least doubt its relevance. Why is that, is it a new "Holy War"?

Available descriptions of "Full-Stack Developer" vary a lot, and it gets even more blurry in job descriptions. That is probably a part of why the term is so controversial. But, what is interesting here, is that most of the arguing is happening around the part, which all descriptions have in common. This part is usually described as the web developer's ability to do its job on both Back-End and Front-End. And that seems to be the biggest concern for those who argue against.

A typical argument against "Full-Stack Developer" goes like this: the Web is just too complex nowadays for one person to be an expert in every aspect of the stack involved.

backend developer doing css

I think arguments like this are oversimplified assumptions, meaning: Front/Back-Ends are quite complex areas by themselves, thus the combination of both must be impossible. But reality keeps proving it wrong.

The Web is indeed flooded with technologies, so naturally, an average web developer is required to have a bigger tool belt, and yes, it means more things to learn. But actually this is what makes development easier, not harder. All those technologies evolved to make it possible.

Many areas of the Web, where truly high specialization needed to do it right, became services and frameworks, with their APIs constantly improving. Because of that, we can now deliver high-quality products with less effort. And the product is what defines the tech stack.

Different web products vary in requirements, so as definitions of "Full-Stack Developer." Whether a developer can deliver a product on his own or be actively involved throughout most stages of development, it is probably safe to call him a Full-Stack Developer, at least in the context of a particular product.

Coming from the Ruby on Rails environment, it is hard for me to recall any developer who considered himself purely Back-End one. That's maybe due to Rails's MVC (Model-View-Controller) nature.

By using Rails, you are somewhat Full-Stack right from the beginning. You are equally responsible for the Front-End as well as the Back-End. Sure, in larger teams, responsibilities may shift in any direction, but it is not required, and in smaller ones, they often don't. It is a typical case for one developer with Rails to do a task from top to bottom.

Modern frameworks like Rails or Vue, hundreds of libraries, combined with a couple of services (AWS, Heroku, etc.) can make a small team or even one developer powerful enough to meet the project's goal. Those are probably the main reason why so many web developers consider themselves Full-Stack Developers.

From my personal experience with Rails projects, the Front-End was always a big part of the job scope. Somehow I went from JQuery through BackboneJS, a bit of AngularJS, a decent amount of ReactJS, to finally VueJS (which is my favorite, by the way). Meanwhile, still digging deep in the Back-End, like composing advanced SQL queries with Arel, utilizing background jobs, services integrations, deployments, etc.

Being involved on both Ends opens a lot of valuable abilities for a web developer. At this position, you naturally have a broader view of a project. It quickly comes in handy with features planning, domain modeling, communications, code reviews, bug fixes, and so on.

Drawing the clear line is rather the project-specific factor or the personal choice than the practical necessity. After all, it is all about programming, with most concepts still valid on both Ends.

With all that said, it is important for a Full-Stack developer to see the boundaries of a stack. One should avoid coding on the edge of their knowledge. No matter what your stack consists of, it should be used with proper reasoning and a fair amount of confidence.

As a conclusion, I would say: from what I see around and experience myself - the longer you are in Web development, the more "Full-Stack" you become.

Aug 07, 2021