A Full-Stack Web Developer is someone who is able to work on both the frontend or backend portions of an application. Front-end generally refers to the portion of an application the user will see or interact with, and the back-end is the part of the application that handles the logic, database interactions, user authentication, server configuration, etc. Being a Full-Stack Developer doesn’t mean that you have necessarily mastered everything required to work with the front-end or back-end, but it means that you are able to work on both sides and understand what is going on when building an application.

You don’t necessarily have to be a wizard at CSS to understand basic concepts and how to use it. I mean, if you can grasp functional programming CSS shouldn’t be very hard to grasp either. You may not have the design aesthete of some UI designers, but there’s nothing that should stop you from being able to leverage some Javascript over some Java or Ruby or Python or PHP.

I think a lot of the hate, especially amongst older programmers, has to do with how rough Javascript has been over the past 12 years. It’s changed dramatically in that time, and the biggest criticism of it, is that it was a loose, flabby language with a lot of power. Which is absolutely true. ES6 is helping reshape that, but, there’s a lot of nuance that happens that helps create more structured programs. It’s less just a library, a tool, and more a way to structure and piece applications together now, and to do that, requires reshaping and restandardizing how to do it.

 

2010

Linux 
Apache
MySQL
PHP

2018

MongoDB -> AWS, HTML5 
ExpressJS -> NGINX, SASS
AngularJS -> UX
NodeJS

At the level of a senior full-stack engineer we’re perhaps talking about architecting a modular Backbone/AngularJS front-end whilst optimising content delivery and tweaking hardware accelerated layers in CSS, followed by implementing an async non-blocking backend (which also pre-renders templates on the server), and pushing to an AWS cluster which has been built with security and scaleability in mind. Not to mention design. Designing UI responsively and mobile-first is essential, utilising a CSS pre-processor to save time. And remember to setup Nagios for monitoring. Oh, and ideally when the Continuous Integration server detects a bad build because your end-to-end tests have failed, get it to send you an SMS with the build error messages. Well, the last two are probably for bonus points.

Can you learn both? Yep. I don’t think you should limit yourself if you can help it. Knowing more is never a bad thing. Being good at all, but not a master is an alright place to be in, because you can always dive deeper and learn more, because that is the way of software development.