In software development (especially web development), we hear the phrase “full stack developer,” as in, “ I'm a full stack developer ” or “ we're looking for a full stack developer. ” Guess what? There's no such thing.
The phrase “Full Stack” is actually just a corporate buzzword, not an engineering designation. Real developers don't go around saying to each other, “ Are you full stack? I'm full stack… are you? Are you full stack? ” The phrase “full stack” is just what developers say to appease recruiters, who usually have no idea what it means. It's what recruiters say to appease managers, but they usually have no idea why they're saying it. It's what managers say because obviously no one wants a team of half-stack developers; that would be crazy. Have you ever seen a half-stack team? It's horrible.
So where does this phrase come from?
This unfortunate phrase has evolved from a technical descriptor which means the complete set of primary technologies that make up a complete technical solution. It typically means the database and the operating system (also known as the “back-end”) and including the user interface (also known as the “front-end”). Between these two points is control and business logic. This end-to-end solution relies on many ancillary technologies such as networking, hardware, load balancers, firewalls, etc., but typically "the stack" refers only to the database, operating system and languages needed to create a complete software solution (typically one or more back end languages and one or more front ends). Apparently it seems logical that if "the stack" is the set of technologies needed to build an end-to-end solution, then you would like an engineer who is a "full stack engineer". In other words, you want a technician who can complete an end-to-end solution. It seems logical. It is not. This is very wrong (with a couple of noteworthy exceptions explained below).
So when you ask a developer, “ Are you a full stack? ”, what you’re really asking is, “ Can you work with the database, the operating system, and two or more programming languages? ” Of course they’ll say yes. However, the question itself is completely meaningless. Being “full stack” is the very definition of a software engineer/developer. There are no other types of software engineers. None.
If you're a technologist but not a "full stack," then you're not a software engineer. That's literally what software engineer means. There are many other professions that are both highly technical but not full stack, and they have their own names. Database administrators specialize in databases; they're not full stack, which is why we call them database administrators. System administrators specialize in operating systems and servers; they're not full stack, which is why we call them system administrators. Web designers (as opposed to web developers) specialize in user interface design, but not complete web solutions, which is why we don't call them software engineers. If you're not a "full stack," then you're not a software engineer. It defines itself.
Saying you want a "full stack" engineer is like saying you want a "full medical" doctor or a "full fire" fireman.
You don't say those things because it's redundant. There are no "half-medical" doctors. There are medical professionals who aren't "full-stack" doctors, like nurses, EMTs, and physician assistants. That's why they have their own names; they're not doctors. The moment you say "doctor," it means you're getting "full-stack." Being a software engineer means having a specific set of skills needed to fully engage in that profession. By definition, those skills are "the full stack." When you ask a developer, " Are you full-stack? " you're really asking, " Are you a software engineer? " If you're talking to a developer and need to ask, " Are you full-stack? " then you don't really understand developers or the stack. Want to hire great software engineers? Get it right. The full-stack question is meaningless unless you also ask about your specific stack , and if you do that, you don't need to ask, " Are you full-stack? " in the first place.
* The first reason there is no full stack developer is that all developers are full stack. “Full stack” is a meaningless and redundant designation.
Although every developer is Full Stack, it is very important to realize that every developer is better or worse in one area or the other, and some have purposely specialized in only one part of the stack. Going back to the doctor analogy, while every doctor is a doctor in its own right, some are specialized and are no longer appropriate for other medical purposes. Do you want a heart surgeon to give you brain surgery? I do not believe.
Even without a specific specialization in one area or another, every developer is simply better at one area than another. For example, in my case, I took a degree in Information Technology and over the years I've worked with various programming languages, operating systems, and databases. If you ask me, " Are you a full stack? " and I say yes, what have you learned? Nothing. What you really need to know is that I have different skills at different points of the stack. I'm very knowledgeable about databases; my skills are solid. I don't make any major mistakes, but I'm certainly not making database tables sing in perfect harmony. I'm above average at user interface and design, but I'm not a UI/UX designer and can't compete with those who specialize in that specific area. However, at the back and center of the stack, my control logic, business logic, and architecture skills are exceptional. Although I'm a full stack just like any software engineer, I have an affinity for the backend and operating system parts of the stack, as well as for architecture.
In a multi-developer development firm, if you want the absolute best software product, you must immediately stop believing and indulging in the myth of the full stack developer.
If you think you need “full stack” engineers because you want intelligent engineers who understand end-to-end software, then stop saying “full stack” and start saying “expert”. Start asking the right questions. On the other hand, if you need full stack engineers because this is your development model, you are simply wrong. If you have a team of developers working the entire stack in silos, doing everything from the database to the user interface, then you are doing it wrong, wrong, wrong. Wrong.
Like most things in life, there are a couple of exceptions: 1) You're a startup or so small that you only have one or two developers, or 2) you literally have no choice because the project must be entrusted to a single person for compelling business reasons. In these cases, by all means, talk about full-stack because you have no choice, and it's a viable strategy. There are many developers out there who can really deliver on this (I like to think I'm one of them). But when you grow, then grow the right way and break the "full-stack" lie.
When someone asks me if I am a Full Stack, my answer is: “I am a software engineer”. If you don't understand my meaning, you probably don't understand enough to ask me pertinent questions about my skill set anyway.
Still not convinced? Look at it another way, the reason the assembly line has revolutionized manufacturing is because we have learned that although a craftsman can do everything, he shouldn't. If you want to build chairs, you don't hire 5 craftsmen who are "full chair". You don't tell each of them to go out and cut down the trees, then tell them all to bring the wood back and cut it, then tell them all to carve the wood, etc. What you do is send one out to collect wood - your best wood harvester. One sets up a cutting station and processes it - your best cutter. One sets up a carving and carving station - your best carver. An assembly and assembly station: your best assembler. One sets up a finisher - your best finisher. You specialize and create a flow. Build synergy. The software is no different. At every stage of the software production process you should have a place where your specialist in that area can engage, do their best, and move on. If you tell me your software doesn't lend itself to that model, then I'll question your architecture and leadership. If you want to run your development team like it's the 1700s, that's your problem, but don't be surprised when your 10 complete "craftsmen" are instructed by three hard drive engineering specialists led by someone who knows how to complete. work this century.
When you ask for a full stack engineer in a corporate setting, you can also say, "I want a handyman and boss of none".
I know what you're thinking. You're still thinking, " But I really want full-stack developers!" Despite everything I just said, you still think that because to you, "full-stack" means someone equally and perfectly skilled at all points of the stack. Good luck. Not only is it impossible, but after two decades of software development, I can tell you that, even assuming I could find that person, I neither need nor want them. Give me a database expert, a control logic expert, and a UI artist, and I'll beat your "full-stack" team in every way, at every level, every time. Every time.
** The second reason there is no full stack developer is that no developer is basically full stack in enterprise production. At least not if you're doing it right. They can be. They simply shouldn't be.