It's not easy to know everything.
And the previous statement easily counts as one of the best understatements that can ever be made. But, it's not a lie. Even if it does not convey the truth very well. But, we're in the age of super-hyper competition, misinformation, and #kill-your-cognitive-abilities-with-information-overload. So, the above just works fine without being called out for lying.
Of course, as we are not incorrect, let's take it further.
10 times 0 is zero. Or, 10 times a very small number is still quite small. We can now claim the existence of 10x engineers without lying, by simply leaving the value of x unspecified. The bar is low, so we can
jump gloss over it.
The Full Stack Developer – Perception and Reality Mismatch
That's sufficient background to build to come to the point - the full-stack developer. I'll go out on a limb and claim that
it's just another term for a generalist, but with the perception of much different expectations.
The traditional definition of a generalist implies someone who has a coherent handle on the big picture and can work on the 80% portions (of the 80-20 fame). And they might be an expert in a couple of things too.
The implicit powers projected on a full-stack developer include not just complex backend flows, bazillion UI skillsets and DevOps. But other unspecified abilities that can be invoked any time by the managers via a magic-wand when short of manpower and time. Especially on the back of a critical, urgent business need that sprung up as an imaginary user need in the mind of a product guy.
I don't have anything against the term. It's only about the way I've seen it being applied in highly inappropriate ways by people in positions of influence and power. With the wrong perceptions, the expectations are wildly off.
It takes quite some time to become a generalist. A generalist grows by way of varied experiences over time, gaining depths in a few areas along the journey by way of managing to find – either by proactive pursuit, or incidentally – complex problems, and mostly successfully also solving them. Expertise and experience are very nuanced things.
The rebadging of generalists to full-stackists harms the generalists who now feel burdened to appear experts in more areas than they can manage. And the harmful expectations from management on being multi-skilled with depth – aka full-stack development skills – cause a lot of stress to developers struggling to blend into the new fad for fear of being marked as an underachiever.
But it is happening. The under-pressure ex-backend-now-full-stack-developer is now churning out stackoverflow-inspired Angular applications, and the ex-frontend-now-full-stack-developer is now creating controllers with a bazillion annotations without an iota of idea of the underlying mechanics of the new systems they are working on.
You can't rush experience.
Experience is not only the actual time spent gaining it - it is also the time spent afterwards where your brain gets to mull over it and assimilate your efforts with your larger self-existence. Please slow down. Be realistic. The technology world is now way more complex than it was in the last decade, and it's only going further that way. We keep finding ways to scale machines and make them efficient – nicely captured in the likes of Moore's law. But the human development scale is way more spread out and it's unlikely to be anywhere close to matching the machines. Yet.