Full-stack development

If you're at all familiar with web development, you've probably heard the term "full-stack developer". A full-stack developer is someone who can operate (and is responsible for) both "ends" of the stack: the front-end, consisting mostly of HTML/CSS/JS, maybe with a framework; and the back-end, handling data storage, authentication, API design etc.

In a decoupled architecture, this division is very clear. Many companies have dedicated front- and back-end teams to handle the different tasks and responsibilities. Personally I consider myself a front-end developer, as I primarily deal with the fetching and presentation of data on a website, and not so much the data architecture, security etc.

But that then begs the question: if I create a website using WordPress (or any other CMS), does that make me a full-stack developer? Now I'm not only dealing with my usual front-end tasks, but can also make decisions on how data is stored and what content is exposed for the front-end to consume.

And what if my website is mostly UI focused, but uses a few serverless functions to add back-end functionality. Am I a full-stack developer now?

And what about someone using traditional MVC frameworks like Laravel, Ruby on Rails or Django? These frameworks combine models (data), views (HTML/CSS/JS) and controllers (business logic) in a monolith application. I'd say someone working with all these areas is a full-stack developer.

The only problem, at least the way I see it, is that it's incredibly difficult to be equally good at all parts of the stack. I believe that no matter what, you're gonna be better at one end of the stack than the other. That can make it difficult to hire / work with full-stack developers.

What if you hire 3 of them, and they're all great at creating slick API's, but none of them can make truly interactive and awesome front-ends? Or conversely, what if they're all immensely talented with HTML/CSS, but can only perform the bare minimum required for back-end development?

Now don't get me wrong. Amazing full-stack developers that are equally talented all around do exist, but they're exceptionally rare. And in my opinion, development is simply too broad of a field to be good at everything. At least until you're many years deep in your career.

If I was just starting to learn coding, and wanted to land a job as quickly as possible, I wouldn't strive to become a full-stack developer. I'd pick the area I like the most and get really good at that. That'd make me more hireable and I could always expand later.

On the other hand, if you're more of an indie-hacker / entrepreneurial type, you might focus on learning the necessities of the entire stack so you can build entire projects on your own. In this case, a framework like RoR / Django / Laravel is the perfect option.

As with most questions in development, there's no clear path that works for everyone. But I hope this reflection encourages you to find what works well for you, and double down on that. ​