DEV Community

Discussion on: I’m sorry, but this “Full Stack” meme makes me really mad/sad

Collapse
 
nerdydeedsllc profile image
Nerdy Deeds, LLC • Edited

Sorry, but no. This is a hot-button topic for me. I've been in this industry full-time for a quarter CENTURY now, and yanno what? The more I learn, the more I realize how much I'm NOT a full-stack developer. Not for lack of knowledge, or inability... I know more about Photoshop and Sketch than many of the designers I know, more about Bash/Shell scripting than MANY of the DevOps guys I shoot pool with, and a whole helluvalot more about web development - front AND back - than the majority of the script kiddies I interview. Fact is? I'm STILL not "full-stack".

It's called "division of labor" and "separation of interests" for a REASON, folks. Rare indeed is the individual who gets off on database optimization AND color palette selection, or cryptography AND animation design.

The term "full-stack" was originally coined back in '99, around 3 years after I started developing. But upon hearing it, I tried. Gods how I tried. I've owned THREE different boutique dev shops. I've coded 80-hour weeks for longer than many of my current employees have been out of grade school. For FUN. I've written my own CMS, and SOLO'D my own CRM! Back in the 90's? Maybe. MAYBE there were a select few that were deep enough in when ASP and PHP (before JSP was even a glimmer in Sun's eye) first CAME OUT alongside the W3C's CSS1, Netscape's new-fangled "JavaScript", and that amazing Flashy stuff Macromedia had just bought from those "FutureWave" guys to punch up the new HTML3 spec microsoft was rolling for MSN 2.0, always assuming, of course you could afford a copy of that shiny new Photoshop 4 (not CC4. Not CS4. FOUR. 4.0) that was just then rolling out.

75 Internet Points if you remember waiting for THIS damn thing to load

It's possible - not probable, but POSSIBLE - there were some folk that were good enough at all to have claimed "full-stack" (notwithstanding the SQL Server, Oracle, and IIS knowledge that would really have been needed then too), because the WEB WAS BUILT ON LIKE 8 TECHNOLOGIES! But now? HA!

I say this as someone who's been ACTIVELY working in JavaScript since the YEAR IT CAME OUT: I've been using this language for 8+ hours a day 6+ days a week for a QUARTER-CENTURY, and I'm STILL finding stuff I didn't know, very nearly weekly. And I'm not even TOUCHING on all the frameworks, libraries, coding styles, pre-compilers, post-compilers, de-compilers, browser-specific implementations (and I actually was one of the poor SOB's that HAD to dev for WebTV and WAP phones). And that's ONE LANGUAGE!

You show me one - ONE - legitimate "full-stack" developer, and I'll show you a reasonably-proficient bullshit-artist. When I interview people to hire nowadays? One of the first sentences I tell them is if I hear that term during the interview, or see it on their resume, better luck next time; I have no desire to hire someone who either knows jack-all about "every" layer of the dev cycle and release train or who knows a bit that's useful about several and then LIES about knowing the rest.

Specialize, folks. Find your niche and FILL that shit. Be the blogger that people turn to for integrating Couchbase and GraphQL, or the expert in using SVG animations in browser-based side-scrollers. I don't need a "universal" expert. Why? Because they don't EXIST. They're liars or suckers, or both, or worse, think I am.

I'd rather hire a dream team of 5 badasses who each rule their little kingdoms in their totality with an iron (but immanently EFFECTIVE) fist, than 5 code-bootcamp noobs who who delude themselves into believing that, because they can copy+paste from StackOverflow or npm install a 800k library with 98 dependencies (none of which they've bothered to read or understand) to solve some problem they only partially grasp (which ALREADY HAD a method NATIVE to the language available) that they are somehow "full stack."

Psssh.

"Really? You're a doctor? What kind?"
"ALL of them! I'm a FULL STACK physician"

Yeah. Have fun with that, while I'm over here with my proctologist, getting the burns from all the smoke you just tried to blow looked at.

"A lawyer!? Thank god! I'm in the middle of an IRS audit, stemming from my getting divorced from my wife without a prenup because I hit her just-yesterday-disbarred uncle-in-law's uninsured car while we'd both been drinking in the 49cc untitled Chinese scooter I'm borrowing from an out-of-town gun-collector, so he engaged in insider trading tactics to steal my company out from underneath me, then traded its pending patents to a North Korean firm for a kilogram of plutonium and a 55-gallon drum of methamphetamines, which, though they rendered him senile and demented now, it was NOT before he buried them in my back yard, where the neighbor's illegal immigrant gardener found them... by blowing himself (along with the cable company's box that straddles the sidewalk and my property line) up!
What do I do!?"

"S'cool. I GOT this."

Collapse
 
cubiclebuddha profile image
Cubicle Buddha

Very interesting perspective. And I can see how coming from a world where there were so many technologies would lead you to that place. But now that there are stacks where you can just write JavaScript from the DB to the UI, it’s a little easier to make the claim that you are a generalist who specializes in JavaScript.

I would hope and encourage you to not immediately remove a candidate who says they’re “full stack” if what they really mean is that they like helping out where-ever they can.

I recognize that language is important and that I could have clarified that better in my article, however I think it’s important every team has at least one member of the team who is willing to help out where is needed. And it sounds like you have that “can do” attitude too.

Collapse
 
nerdydeedsllc profile image
Nerdy Deeds, LLC • Edited

In no way would I unfairly disqualify a candidate; indeed, as stated: I warn them right up front. Nor am I stating I have a problem with a can-do attitude. To whit: fully half my interview questions are logic and problem-solving puzzles in which I don't care if you get the "right" answer or not. The questions - many of which I've written or designed myself - are intended to see HOW a person thinks, not WHAT they do.

What will a candidate do when they don't know the answer, they're under pressure, and they weren't at all prepared for the issue? You tell me you need time, or need your tools to look something up? No problem. You tell me you don't know, or you "give up" or "pass"? Bye. I'll end the interview right there.

It's our JOB to PROBLEM-SOLVE. By whatever mechanism/means necessary.

I've personally been called in on Christmas Eve because someone on our QA team in Bangladesh (thank god) had noticed we abruptly were getting 5,000 uninstalls PER MINUTE (that's ~83 per SECOND) from our primary revenue generator. Took us 32 minutes to catch it, get to the office, diagnose, triage, and repair the problem, which in real-world terms, means we lost close to 160,000 users of our 9M (about 1.7%) that day.

I expect EVERYONE that works with and for me to have a "can-do" attitude. Quite aside from the fact that you'd not have survived my interview with a "can't do" attitude, it's a basic expectation. It's like a restaurant touting their food is "fresh" (Subway, I'm looking at you). If I'm at a restaurant, the very LEAST I should be able to expect is "fresh." It had BETTER be! If that's the only positive you can voice about your establishment (Subway), then you need to rethink your policy on rewarding mediocrity (still looking at you, Subway).

But this isn't about positivism or optimism. It's about spheres of influence and responsibility.

Look, I think it's a nice plus if a candidate has worked within our ecosystem (though for real: find me two companies with the same standards, best practices, deployment procedures, etc., etc.). But I'm not hiring you so you can be a graphic artist today and a Python developer tomorrow. That signifies I'M not doing MY job right (or, more probably, that I've delivered a set of reqs to someone in HR who doesn't know Java from Javascript, who in turn vocalized those to a recruiting firm, who then disseminated a memo to their headhunters, who are now trying to parrot back that we're looking for someone who drinks coffee and has pretty penmanship).

But in truth? I don't give a damn if you've used whatever bit of library esoterica du jour that one of my guys happened to have managed to successfully lobby for when this project started. I let candidates whiteboard code in their language of choice (including pseudo-code and flowcharts!). I had one guy respond in Brainfuck once (took me two weeks to figure out what the hell his answer was; I put interviews on hold until I had. I hired him, after threatening what would happen if he ever pulled a stunt like that again, rofl).

Fact is: there are back-end guys, and front-end guys. Artists and Algorithmists ("Algorithmechanics?" "Algorithmancers?" "Al Gore?"). It's not "old thinking". It's not "outdated principals". It's human nature. I too fancy myself to be one of those unicorns that straddles the divide, but if I'm honest with myself I have PREFERENCES. Build UI's or optimize Joins for a migration? Screw that; hire a database guy. I encourage my guys to expand and diversify, sure. In fact, we require it: 4 hours a week on Fridays (barring crises) you're required to code something non-work-related, then present it to the group for feedback and review. In whatever platform you want. Some of my favorite VSC and Chrome extensions came about thusly.

But when I'm losing 300,000 users an hour? I'm not calling in my jack-of-all-trades, master-of-none, so I can sit and wait for him to browse NPM or ask Reddit. I'm calling in my damn ninja, who I HIRED FOR HIS EXPERTISE. Yes, there are stacks. Yes, some even run end-to-end. But just because you can code a really slick proxy server in Node does NOT make you qualified to make an equally-slick library of GUI components that'll play nice with Opera and Edge! And it DOESN'T NEED TO.

If my Startup's budget is such that I can afford to hire ONE dev, such that I need to spend the next 18 months combing LinkedIn, Monster, and StackOverflow to FIND this $200k mythical demigod, then I'M doing it wrong. And AS a candidate, that should SCARE YOU. Because during those 18 months, I could have hired 2 $100k guys that are roaring badasses in either end of my stack and started generating enough revenue to patch the holes.

Figure out which portions of the field you LOVE. The ones you'd VOLUNTEER to work in. The ones you do for FUN. Market yourself as one of those guys and run circles around me in your interview. You'll be happier, I'll keep you 'til one of us dies, and we'll both enjoy the pride and money of putting out REAL software WE made, instead of another flashlight app.

This isn't theory. This isn't my opinion. This is real-world, practical advice from someone who's been in the trenches doing it their entire adult life, since Clinton was still in his first term. Cuz I PROMISE you: I'm way the hell more "full stack" than 99% of the guys out there. I just recognize the hubris of the idea and wouldn't be caught dead asserting it outside a discussion like this.

There's just too much to know. For ANYONE to.

To quote Kyle Simpson (author of the best-selling You Don't Know Javascript books) in his outstanding keynote at JSNation: "I don’t think anyone ever really knows JS, not completely anyway. I say this in all honesty and not to boast: I’ve forgotten more JS than most people ever learn ... I’m not a JS expert, and I definitely don’t think I deserve to be called a 'classic.'" John Resig has said much the same thing. So has Brendan Eich, for gods' sake, and he WROTE the (first version) of the damn language! Albeit, though: Douglas Crockford, when approached for comment, merely muttered, "more'n you, pussy!" then set his dogs on me.