DEV Community

Cover image for Why you should become a Full-Stack Developer

Why you should become a Full-Stack Developer

Andrew Baisden on August 24, 2021

There are countless benefits to becoming a Full-Stack Developer. These days many companies tend to hire developers who can work across the whole st...
Collapse
 
jonrandy profile image
Jon Randy 🎖️

I still find it weird that these job titles exist. I've been doing this long enough to remember when everyone was just a 'web developer' who did a bit of everything

...and all of this was just fields.

Get off my lawn!

Collapse
 
thumbone profile image
Bernd Wechner

Sure, I remember those days. But things got complicated. Fast. And are complicated. And there's a LOT to know and keep track of in the delivery of web services now. The very thing that drives specialisation.

Of course there was never a day when everyone was just a web developer, you're letting your own narrow focus show through there. Around that time there many many IT pros, developers who had precisly zip to do with the web. Not many left of course (as in a huge portion of development is now on web services that was handled differently in past, even if it's on intranets).

Collapse
 
jonrandy profile image
Jon Randy 🎖️ • Edited

Yeah - I was never just a web developer either, my focus was never narrow - that was just the job title - the work was essentially anything IT related. I was doing development professionally for almost 10 years before most of the stuff I was working on was 'online' and could exclusively be called web development (that was probably around 2004 ish) - before that it was desktop apps and internal business systems with some small forays into online stuff

Thread Thread
 
thumbone profile image
Bernd Wechner

Suspected as much ;-). But yeah, when it was young, the web was one thing indeed. HTML mainly, and then CGI and then Javascript and then an explosion of backends not to mention graphic design as well and more ...It's a new world .. and IT is as mature now as Science, Law, Medicine ... and more ... all fields so broad and rich that they are full of specialists with a deep narrow skill set and a minority of generalists who maintain a broad shallow skill base across the whole field and of course those in between who are specialists in one or two areas and mainytain a general overview as well. But essentially there is more to master and maintain mastery of now than the day is long and so no-one in the best at everything ... which was in fact possible in IT in up until maybe the 90s.

Thread Thread
 
petertorres profile image
Pete Torres • Edited

Hey @jonrandy , I completely agree with you here. This "front end"/"backend"/"full stack" is what is generally considered Web development. To label backend as databases and APIs is an oversimplification. I haven't met many programmers that can explain the basics of DNS and routing, storage management or security/auth, let alone build out the pipeline to stand up all this software and infrastructure. I can sympathize that more of that responsibility has found its way back to the developer since these tasks can now be created and committed to source control. And for sure, the amount of tooling and frameworks available today to stand up a simple web presence "by hand" is a complicated affair, but the benefit of experience will tell us that all this is a repackaging of the old. I used to rag on distributed computing - it was called the mainframe then. "Who's going to pay for that when I have all this computing power on this desktop". Interesting enough, mainframe is as strong as ever. IT has always been complicated. What I mean here (and what I think @jonrandy and @andrewbaisden were sharing) is don't paint yourself into a corner with job titles. Those change faster than the technology they attempt to contain. Imagine yourself beyond a job title.

Collapse
 
hyggedev profile image
Chris Hansen

I've noticed some people who are labeled as full stack can probably, just as easily and comfortably spin up a full fledged server, API, CMS, database and create a fully responsive, cross browser compatible, tested and we'll designed front end. And then communicate the two. That there would be a 🦄 If very skilled, can probably build a full featured web app in 1 day, ready to be used internally, or for the masses. But of course, an individual like that probably has years of experience.

Collapse
 
andrewbaisden profile image
Andrew Baisden

People like to throw titles around a lot. In my current job I was hired as a Software Developer thats what it says on my contract. But at work some people refer to me as a Front-End Developer.

Collapse
 
joeattardi profile image
Joe Attardi

The term "full-stack developer" is thrown around a lot. Most of the time it's an exaggeration or an outright myth. There's too much to know to be an expert on front-end, middle tier, and backend. In 15+ years I've never seen it.

Not sure why but this post also seems to focus way too much on getting ahead of others. It's also not true. If you specialize in front-end or back-end only, you aren't stagnating or letting others get ahead of you. And instead of focusing on "leaving them in the dust" you should try to help everyone succeed.

Not saying you shouldn't learn both backend and frontend. I have plenty of backend knowledge. But I don't think it's practical to be an expert in both. You're spreading yourself too thin.

Last point: Having products on Gumroad is a very poor measure of a developer's knowledge or skill level.

Collapse
 
rocketfever22 profile image
Ricardo Otano

Hello! I think you were saying I don't exist, hahaha!

My credentials: 10 years of experience, I started with plain PHP 5.4 + SQL, and a little bit of JavaScript. In two years I learnt AngularJS (V1) and Laravel. Since then I fully qualify as full stack developer, I don't feel my knowledge in front or back is behind those who specialize.

In my company of 23 employees only two of us are full stack. We can have a single page application (Vue or Angular) + backoffice + working api (Laravel) with a database, in no more than a week. We also configure servers to work in, but that part got really complicated since Docker+Kubernetes and we prefer to let it do to a DevOps.

We do a lot of MVP and also accelerate tickets that are much harder to solve when backend doesn't know about frontend and vice-versa (from days to hours).

Our only missing part are CSS/SVG animations or visual effects.

Maybe one of the reasons why people think we do not exist is also because we use to end up as Team Leaders/Tech Leaders/WhateverBuzzword Leader as we know what every stack needs.

Cheers :)

Collapse
 
andrewbaisden profile image
Andrew Baisden

In regards to Gumroad I just meant that they have started their journey regardless how much experience they have. All it takes is one product good or bad to give them the motivation to keep going.

Collapse
 
diguifi profile image
Diego Penha

100% agree

Collapse
 
dastasoft profile image
dastasoft

I agree with you but I don't particularly like the statement "go down the Full-Stack path as quickly as you can" I understand your point but having a good base is also important, maybe the nuance is that they start with front-end or back-end whichever they like the most but when they reach a certain level they are not afraid to "jump" to the other specialization.

It's fine to dive into front-end if you are back-end or vice versa, even if you still have a lot to learn in your field, but I think it's important to have a solid foundation in at least one of the two.

But in general I agree that jumping to full stack is valuable, especially for the person who will be able to make a whole application by himself.

Collapse
 
andrewbaisden profile image
Andrew Baisden • Edited

In my experience I regret not looking into back-end earlier I was so stuck on only using the front-end and staying oblivious to anything back-end. I missed out on so many jobs because they wanted someone who knew the basics of SQL even though it was a front-end role and I refused to even think about looking at SQL back then.

I also thought that databases and servers were hard, too technically confusing and out of my scope. Now it just feels natural working on the back-end and switching to the front-end.

Collapse
 
dastasoft profile image
dastasoft

Yes, absolutely, I think the key point here is to know the sweet spot for making that jump, but as you're pointing out it's healthy to stay curious about the other field and try to at least get an overview of what's out there and what you need.

Maybe it's a bit easier to go from a back-end job to trying things out on your own in front-end than vice versa, because back-end without any previous experience seems like a black box full of magic. For front-ends SQL is one of the main concerns and for back-ends I think it's CSS :D

Collapse
 
diguifi profile image
Diego Penha

I like your post, but there's two things that suck about full stack and it's very important to mention, before telling people to go this path.
1 - It's a cheap way for companies to explore your job to the maximum, spending the minimum amount of money. You don't get paid as "front + back" dev (as it should, since you do both), you get a single salary that corresponds to "full". Good for them, bad for you.

2 - The chance is that people will start to become worse at specifics of front or back, people will have average knowlege, and thus, create average quality apps. It's important that full back and full front devs still exist, because focusing on a single stack makes it much feasible to be actually GOOD at what you do.

So if you're reading this and planning on go full stack, becareful not to become a shallow dev, with median/average knowlege on each stack. Always look foward to deepen your studies on specifics of some stack, because this will make you different from the rest, and actually an useful and powerful dev among the masses. Also, remember that being a full stack is great for companies, but means a lot of work, with no extra money, for you.

Collapse
 
andrewbaisden profile image
Andrew Baisden

There is a caveat here and that is freelancing. If you are freelancing as a full-stack developer then you can afford to charge more because you don't need to outsource part of the work.

Collapse
 
dnecklesportfolio profile image
Dwayne Neckles • Edited

Hearing how different developers manage the complexity of learning full stack development would be helpful for aspiring fs devs. Maybe that could be a part two of this article.

Collapse
 
huncyrus profile image
huncyrus

The only real reason is: just because most of the companies and customers are lazy and greedy, do not want to pay properly and have an expert for a problem, but feel it is better and more viable for paying only one person who are devop/sysop/frontend/backend developer instead of paying 4 person.

So in short: the only reason is because easier to find assignment/project/company to work to.

[tl;dr]
Cost effective: yes. Good solution: no.
There is no such fullstack person, who can work on all the fields on the same high level.

It is important to understand other fields than one or two? yes. Could a fullstack deliver great or awesome results: yes. Will be the same level as separate experts: nope.

Collapse
 
fjones profile image
FJones • Edited

Importantly, make it an active choice. I see far too often either backend or frontend developers working on the other end, to speed things up or to simplify workflows, because they feel pressured to deliver or because the communication overhead seemingly outweighs the benefit of just doing it yourself. If you don't want to become a full-stack developer that is fine. I'd rather see the strengths of two team members used than you trying to make ends meet when that isn't your forte. If you do want to become a full-stack developer, be prepared to dive deep into a lot more than you would even as an expert in one field - figuring out how backend and frontend interact is its own specialty to educate yourself in.

And far too often I find backend developers categorically refusing to do frontend, while expecting frontend developers to do backend. Don't be that person. A good full-stack developer is more than just "kinda sorta knowing how to do that, too".

Collapse
 
andrewbaisden profile image
Andrew Baisden

Yes good to have a feel for both areas. Nobody says that you super be super proficient in both areas but at the very least you should know something. The tech industry has become far too diverse to just hide behind a niche and let someone else pick up your slack.

Collapse
 
thumbone profile image
Bernd Wechner • Edited

Yeah, I'm full stack. But for other reasons. Mainly because I do most of my full stack work out of home, not from work. At work, I'm like most, working on the narrow field I'm tasked to, and that is relatively shallow, we have staff dealing with the stack around my little corner.

But at home, well, I have kept in service junk IT from work as servers that provide services to clubs and societies I work with and they are full stack by definition, including gateway and LAN which is broader even than full stack, maybe we should call that the full schemozzle? ;-).

And one of the drivers of course is a fashion and interest in getting away from the big players. That is Amazon, Google and their ilk out of data ownership and privacy concerns. In fact looking into using Google indirectly, mainly for cloud backups, but hoping for encrypted.

And so there's a Nextcloud here, and a few Django sites among other things running on a handful of servers.

The most common stack then that I work with closely isn't LAMP or MERV or any other funky fashion but LLUPP - an if you never heard of that it's because I made it up, but it's a thing and if it ever takes off, I was there first ;-)

And so it's a direct derivation of the LAMP acronym (Linux, Apache, MySQL, PHP), but uses better tech (Linux, Lighttpd, Uwsgi, Python, Postgresql) ...

Apache is a mystery to me. Every single benchmarking of Apache vs. nginx and lighttpd sees the latter two on par kicking Apaches ass on every single measure, no surprise for a web server that takes its name literally from an intentional pun: "A patchy web server" and that shot to popularity on the measure mainly of being FOSS. The nginx boom is a mild puzzle, given it's not FOSS but freemium, and lighttpd is FOSS and performs just as well on every measure (both are ground up rewrites). I'm guessing marketing and time to market maybe.

Truth be told though I use lighttpd primarily because I use OpenWRT on my routers as best I can, and it runs lighttpd, and fulls stack and all I still don't need to spend time on different web servers unnecessarily ... much rather I tend to add lighttpd support to exiting services (run Nextcloud and Django under it neither support it, they both support Apache and nginx so I'm on my own).

For the rest, well I just landed with Django over PHP and hence Python/Uwsgi as the framework and again while I have some PHP (Nexctloud is PHP for example) I bias toward Django services (host a club site under tendenci).

Collapse
 
peerreynders profile image
peerreynders

It's peculiar how rarely the other direction of the "full stack" (relative to "Front End Developer") is explored (i.e. full-stack designer).

spectrum of design roles

From The spectrum of design roles in 2018

Collapse
 
lexlohr profile image
Alex Lohr

Actually, the distinction between full-stack and front/back end is flawed, because these skills are neither binary nor the limit of what one could learn.

However, were looking at a dichotomy between generalization and specialization of skills. Widening your skill set has the benefit of a less narrow perspective, but comes at the cost of less depth of knowledge, whereas concentrating on fewer skills may lead to their mastery beyond what a jack of all trades could achieve.

If your goal is to do everything for a small company, that's fine, but if you want to score a job at a bigger corp, you'll be rather hired for depth than breadth of skills.

Collapse
 
jessekphillips profile image
Jesse Phillips

I think you should be a QA developer. So many people avoid testing because it is executed as a repetitive task. And automation is just a massive maintenance nightmare.

But all of that is nonsense. A good developer will script out the repetitive tasks. They remove unneeded dependencies that cause the majority of "flaky" tests.

Being a QA developer means your solution is no longer a long list of feature requests, it is a solution to solve your problems, not someone else's.

And you get to learn so much. How the frontend works, how the backend works. And you can influence the design, but if you are not sure how to tackle some specifics, there is a developer there to show you the way.

Collapse
 
drhyde profile image
David Cantrell • Edited

You mean "someone who can drive photoshop and Javascript (both on the front end and the backend), isn't going to do much harm when given the root password"? That's not a full stack developer. A full stack developer could also debug the Javascript interpreter, tell you how to optimise your ORM's crappy queries, patch the kernel, and configure the routers.

But people who are skilled in the back-end stuff aren't going to waste their time with the latest fashionable hotness in rounded corners and Reactular frameworks. They're too busy keeping the internet running and having a life to learn some new temporary fad every year.

Collapse
 
rocketfever22 profile image
Ricardo Otano

To sum up: I prefer backend as you don't have situations as:

DEV - I'm focusing on fixing data inconsistencies so we don't have unexpected flaws in the project
CLIENT/PO - I know but the loading bar... could it be a little less blue?

That's what makes me run from frontend, hahaha!

Collapse
 
davidcolbyatx profile image
David Colby

I have to push back a bit on a junior who knows a JavaScript framework being a more versatile developer than a senior who doesn't. I'd bet on the senior building a really solid, extensible, and powerful application with their backend language of choice + HTML, CSS, and vanilla JavaScript. Especially these days with things like Laravel's Liveview (or Rails' Hotwire). JavaScript frameworks are cool, but they're not the only important thing in a web developer's toolkit.

Collapse
 
imhotep111 profile image
Dr Imhotep AlBasiel

Coding has become like MMA fighting some jobs will take you to the ground on the background of a job you could stick and move on the front end Cabrillo reality as being able to decode from the ground or quote standing up front-end and back-end work together learning one I feel there is incomplete because people want developers who can do everything solution providers incoming mail you can have everything

Collapse
 
imhotep111 profile image
Dr Imhotep AlBasiel

Being at the valley for 21 years there are no real job titles disability too cold and use a w s and related services and figure out anything as to real title the reality of your family the more you know the more you can survive sure

Collapse
 
ekeijl profile image
Edwin • Edited

I'm seeing a lot of posts on Dev and Reddit with titles like "how much JS do I need to know to become a full stack/medior/senior dev?" - it makes me facepalm.

There is no "bar exam" to become a developer. It only matters if you can be useful to the company, it's supply and demand. It matters if you can solve the problems they are facing.

This stuff comes with experience and imo, experience is gained for ~80% by writing code, the remaining ~20% from studying (books/articles).

It is much better to have all of your bases covered so that you are prepared for anything that happens.

I think posts (and especially sentences) like these feed into the feeling/anxiety of junior devs that they need to learn a loooooooot of stuff before they are "worthy enough" of becoming a full stack developer.

Furthermore, I believe in a "T-shaped" model, where a person specializes in some area and has a more general knowledge about related topics. For example, a front-end developer that knows all the browser quirks to deliver a good looking, performing, accessible user experience and only has the 'need to know' knowledge about APIs and what not to get stuff done. Chris Coyier has written excellent articles about this.

Look at how insanely complex writing an app has become over the last few years - and this is just front-end. This is too much knowledge for a single person (maybe a single mythical unicorn) to learn and deliver quality results on all these areas.

I certainly support the growth mindset. I would suggest to focus on an area that interests you as a developer and learn just enough to deploy your app into production. For front-end developers, 'serverless' technologies and platforms like CodeSandbox and Vercel have made this stuff super easy. Then, you can expand your knowledge on a wider range of topics. I wouldn't say it is a must to learn "full-stack" from day 1.

Collapse
 
abhinav2127 profile image
Abhinav Jha

I think Full Stack developer is a limited profession. If you have certifications in cloud computing and able to work with cloud solutions you should be name Poly-Stack Developers.
If you think it's true share your views.

Collapse
 
koladev profile image
Mangabo Kolawole

Well written article Andrew.

Collapse
 
mojetioluwa profile image
Dahvolee_2004

This is really inspiring for young developers like me who want to grow. Thank you for this write up.

Collapse
 
avinashvagh profile image
Avinash Vagh

Hey Thanks Man! It gives me a new perspective 🔥

Collapse
 
icecoffee profile image
Atulit Anand

I've seen so many articles saying that you shouldn't be a developer. It's finally good to see one where someone approves with my point.

Collapse
 
maxoralbay profile image
Max Oralbay

i just started to build php framework after i loved it for a long time :)

Collapse
 
imhotep111 profile image
Dr Imhotep AlBasiel

In today's development environment and you have to figure out anything they need that's the job.

Collapse
 
imhotep111 profile image
Dr Imhotep AlBasiel

That's a very reAl

Collapse
 
jwp profile image
John Peters

Knowing both doubles job opportunities. Can't match that on a front line craps bet.