In software development (especially web development), we hear the phrase "full stack developer", as in " I am a full stack developer "Or" we are looking for a full stack developer. " Guess what' ? There is no such thing.
The phrase “Full Stack” is really just a corporate password, not an engineering designation. Real developers don't go around telling each other: " Are you full stack? ... Are you full stack ... and you? ... you full stack? ... " The phrase "full stack" is just what developers say to pander to recruiters who usually have no idea what it means. That's what recruiters say to appease managers, but they usually have no idea why they're saying it. That's what the managers say because obviously nobody wants a half-stack developer team, that would be crazy. Have you ever seen a half stack team? It's awful.
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 full stack? ", What you are really asking is" can you work with the database, the operating system and two or more programming languages? “Of course they will say yes. Yet the question itself is completely meaningless. Being “full stack” is the very definition of an engineer / software developer. There are no other types of software engineers. Nobody.
If you are a technologist but not "full stack" then you are not a software engineer. This is 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. DBAs specialize in databases, they are not full stack, which is why we call them DBAs. System administrators specialize in OS and servers, they are not full stack, which is why we call them system administrators. Web designers (as opposed to web developers) specialize in designing user interfaces, but not full web solutions, which is why we don't call them software engineers. If you are not "full stack" then you are 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 “medical means” doctors. There are medical professionals who are not "complete medicines", such as nurses, EMTs and medical assistants. That's why they have their names, they are not doctors. The moment you say "doctor" means you get "complete medicine". Being a software engineer means having a specific set of skills needed to engage fully in that profession. For definition those skills are "the full stack". When you ask a developer " are you Full Stack? "You're actually asking"are you a software engineer?"If you are talking to a developer and need to ask" are you full stack? Then you don't really understand the developers or the stack. Do you want to hire great software engineers? Do it well. The full stack question makes no sense unless you also ask about your particular stack, and if you do, you don't need to ask " are you full stack? " first of all.
* 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 focused specialization in one area or the other, every developer is simply better in one area than another. For example, in my case I attended a degree course in Information Technology and over the years I have worked in various programming languages, operating systems and databases. If you ask me " are you Full Stack?”And I say yes, what have you learned? Anything. What you really need to know is that I have different capabilities at different points in the stack. I am very proficient with databases, my skills are solid. I don't make big mistakes, but I'm certainly not making the database tables sing in perfect harmony. I'm above average with UI and design, but I'm not a UI / UX designer and can't compete with those who are specialists in that specific area. However, at the back and middle of the stack, my control logic, business logic, and architectural skills are exceptional. Although I am "full stack" just like any software engineer, I have an affinity for the backend and OS part of the stack and for the 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) Are you a start-up or so small you only have one or two developers, or 2) you literally have no choice because the project must be entrusted to only one person to strong business reasons. In these cases, by all means, talk about the full stack because you have no choice and this is a viable strategy. There are a lot of developers out there who can really deliver on this (I like to think I'm one of them). But when you grow up, then you grow right 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 are thinking. Are you still thinking " but I really want full stack developers! Despite everything I've just said, you still think that because "full stack" means someone to you equally and perfectly proficient in all points of the stack. Good luck. Not only is this impossible, after two decades of software development I can tell you that, assuming I could even find that person, I don't need or want them. Give me a database expert, a control logic expert, and a user interface artist, and I'll beat your “full stack” team in every way, at every level, every time. Whenever .
** 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.