Full Stack
From transistors to typography. From silicon to selectors. From Layer 1 to Layer 7 of the OSI model. The full stack in Full Stack is big, really big. You've got to know a lot to create a website from scratch.
If you wish to make an apple pie from scratch, you must first invent the universe.
— Carl Sagan
The individual that can mine the rare earth minerals, design the chip, code an operating system, connect it to an outside network, code some server software and also design human facing interface matching our 2019 standards; that person doesn't exist. You aren't that person. No one can do that, just like in the 1950s no one cut down trees, made paper from pulp, created a camera, took great photos and wrote great content for a world-class magazine. The number of things humans must do and do well to get information to the masses in the 1950s was impossibly deep and since then civilization has become much more economically specialized and diverse. The true Full Stack is indeed full and growing.
You can create an HTML page though. You can open an editor, put some html and text into it, say something profound, upload it to Go Daddy Dot Com and now something valuable to the world is on the web. Congrats you're a Full Stack Developer.
From expansive to reductive, there is lots of room in Full Stack. It's become a badge of honor, a status signifier, a resume classification, but is it what you want to be?
The term Full Stack is a web development industry construction. Incredibly, the discipline needed to translate information into readable pages via html and css and the discipline of structuring data, routing events, and designing logic have diverged. Two Ends, Front and Back. Two Sides, Client and Server. If you can do a little of both, that's Full Stack. "Full Stack Developer" though, that's a heavy term.
If you can do everything necessary to get a modern web app into production, you are Full Stack. If you can write the html, css and javascript for a feature as well as adding the necessary database columns, you are Full Stack. In same cases this might be easy, in others hard. But Full Stack never means that you know everything about every component of your solution. How can you? Chips are complex, Operating Systems are complex, server configurations are complex, even things that seem simple, like expanding user-select: none
to -moz-user-select: none
have very sophisticated solutions. Full Stack isn't as much a description of what you know as how willing you are to adapt.
Full Stack Developer can be a harsh career. By dismissing specialty you insist on your world being a massively wide field of ever changing elements. Without having the time of day to keep track of all the changes!
There is always that illusory point in a developer's career where they have learned everything needed to do get everything done. It feels like conquering the world knowing how all the parts of a particular technology stack fit together and how to assemble them. It's a sham feeling, however, and it's a shock when you stick your head up and read that your language added generics, I got along fine without generics, why do I need this! Or that CoffeeScript is a dead language, I invested time in a dead language! I was managing my state fine before Redux! CVS is fine! Why would I need a package manager for JavaScript? Why would I need a different package manager for JavaScript?
So here's my definition of Full Stack developer. A Full Stack developer is a developer that has experienced the world moving past them enough times to never be shocked and that is always ready to learn something new in any part of the stack that matters.
It's a cliche that change is inevitable, pick your own Change is Inevitable Quote. While you're looking to the West change will come from the East. While buried on your challening database migration, a new JavaScript paradigm will emerge. While you are writing an ansible script for deploying to AWS EC2, containerization will rock the devops world.
All the best Full Stack Developers I know have built learning into their lifestyle and are looking for the next new thing, whether that's a whole new language or a minor point release. At Hashrocket, this is something we do by incorporating Open Source Time into our work week. Some people listen to industry podcasts on their commute, some people read Hacker News to try to keep up. What is important is that Full Stack Developers find a way to consistently prepare themselves for change.