DEV Community

Discussion on: Being A Full Stack Web Dev is Kinda Crazy

Collapse
 
dinsmoredesign profile image
Derek D • Edited

To play the Devil's Advocate:

I think many people's conception of "full stack" is sometimes very wrong.

I don't know a single person with the title of Full Stack Developer that does any server-related work outside of very small companies, government or freelancers. I've never seen a full stack role that required design skills.

I'd say the vast majority of full stack positions I see are looking for someone who can reasonably code a full app by themselves including a database, back end and front end. This mostly likely means using an ORM to access the database, so very limited knowledge of SQL/NoSQL is really needed. They're looking for generalists that know architecture and design principals well enough that the syntax of the language doesn't matter anymore, they can pick up the concepts within a few weeks and hit the ground running.

If we generalize, according to your list:

SQL distro - for database - Mostly with an ORM, using your back end language's syntax...
Java/Python/C# - for serverside logic - If you're already listing Node below as something you should know in order to use it for package management, you might as well just use it for your back end, as well.
React/Angular/Vue/etc - for frontend - Sure, a front end framework is nice to know and is most likely how you'd be building any large scale app anymore, but you could also just use your back end language's templating language and build an MVC app.
Bootstrap/Bulma/etc - CSS design - I don't know that memorizing some class names and how they fit together is really that hard. All of these frameworks have excellent documentation, you can literally just copy and paste the code and it works. If you were building your app with vanilla CSS, sure.
Apache or other webserver - for hosting - Why? Some basic knowledge is definitely helpful, but any company worth working for is going to have a team dedicated to managing the servers. That's a full time job in itself. That said, you could just pick a serverless tech stack and deploy "cloud functions" to AWS/Firebase/Azure/etc.
Node.js - for package management - Again, I don't see why using NPM requires you to know Node, but if you're assuming deep knowledge is needed here, why waste time learning Node plus another back end language if you only goal is to consider yourself "full stack"? Just use Node.
Webpack, Browserify, Parcel - build scripts and cross compiling - Unless you're building your own build pipelines from scratch for some reason, pretty much every modern JS framework has a CLI that does all this work for you. All you need to know is how to type in "npm run ___" on your command line.
LINUX - because I guarantee you will use it at some stage, if not develop all of your work in a Linux distro already. - Some decent knowledge of the Unix shell can be helpful, but definitely isn't needed. There's plenty of mature GUI applications that will do everything for you at the click of a button. Even then, what if you're developing on Windows and deploying to IIS? Linux is knowledge is not needed.

The way I see it, the only three things you really need to know are:

  1. HTML
  2. CSS
  3. JavaScript

Even then, we could probably take HTML and CSS off your list if you're going to use a CSS framework, because you can copy and paste the code snippets on their website straight into your app. That leaves us with just JavaScript.

Calling yourself "full stack" is easier than its ever been, especially with serverless. Being a Full Stack Developer who truly knows every part of the stack is where it's more difficult... but I think you'll find that most people in these roles are better at one side than the others, and that's okay.

Until recently, companies like Google, Amazon, Facebook, etc. only hired for the title of "Software Engineer", because they want people who are strong enough in communication and the concepts of Computer Science that never change, not people who are really great at framework A or language B. In most cases, your ability to code isn't even in the top metrics when interviewing for these companies because they know that if you understand the underlying principals of computer science and can think logically and communicate those thoughts to your peers, you can learn the coding part.

People who spend their entire careers working on a single language and framework might be amazing at working inside their own domain and are probably also very well compensated, but ask them to work in anything else and they'd be completely lost. This is fine for some and you'll probably gravitate towards being this person later in your career, but in the beginning, you shouldn't be focusing on learning specific technologies, you should be focused on learning concepts. Ask anyone who's been in the industry for 20+ years, they've probably worked with at least 5-10 languages and don't even bat an eye at it anymore. That doesn't mean you should just skip around to a ton of different languages, though. The better you know one language, the easier it is to pick up another as long as you're focusing on the architecture and not just the syntax.

Collapse
 
therealgrinny profile image
Connor

I think you strike a really good point here in terms of what people are really looking for.

I believe it all comes down to the tools at hand and what the team needs. A smaller company could need a full stack dev similar to what I described. They help a bit with everything.

In your case, the more applicable description would be the HTML, CSS and JS generalist that figures out other stuff as needed. Since there's usually teams in place to handle the specific stack elements already.

I feel like the market is big enough at this point that you could choose either "style" mentioned, or something in-between, and find a job somewhere. Whether or not style A pays better than style B for the work needed is a different story I guess.