Full-stack development is a trap
In web development, full-stack gone through from buzzword to being new norm now. Every one trying to be one or looking for one.
I always find the term very ambiguous (as everything else in tech 😅) and when I asked, I get different answers depending on who I’m talking to, but generally they mean one of these two
- A person who could understand/work and take responsibility of every component(in most case web/mobile/server-side logic/sometimes deployments) of an application/system.
- One who has broad **knowledge **of various components of a system, so one can collaborate with other stakeholders (other than one’s current primarily objective) more effectively.
First definition, mostly given groups like freelancers, startups, and agencies and alike. These are the most consistent about their needs, they just want someone who can get over with what ever tasks in hand without much overhead. For this group, I can see the appeal for something like full-stack, as they’re mostly driven by two things in a market. One is how much someone is willing to pay for something, and the second is how quickly you can produce that thing, as cost as possible. TBH, I find this kind of people very short-sighted and not much interested in ingenuity or scalability, so don’t have much to way on this.
The second group claims that it’s essential to have a very good understanding of various parts of a system to collaborate with each other, working on the system. I find this argument completely not true. While having a good idea of the other end of the picture does help, you don’t have to be an expert or proficient end have to work on it as well. And sometime this group corresponds expertise to it, which is also a faulty view having to know many things about everything does not make you an expert in anything. In my opinion, it’s an ignorance of their team’s actual need, and they should understand gaps in the team. I think these people better serve if target expertise as they require, rather than someone who can do full-stack.
As for the developers, except for a few, I’ve rarely seen someone who I consider a good/true full-stack dev. Most who claims of being a fullstack dev, I find them negligent or ignorant of one aspect or the other of the stack. And those who I think can fit the category, I find they have spent significant amount of time and have enough experience to work with eighter side it comes natural for them. Even then, I find they’re more effective in one side or the other of the development.
Understanding anything requires some amount of cognitive power, and acquiring new skill which are less relevant to already acquired skill requires significant more cognitive power, which I believe everyone has some finite amount(I believe since also support some relative if not exact theory). And if you don’t enjoy the majority amount of it, you would likely have a hard time comprehending them. And I rarely see anyone enjoy every aspect of the systems. On top of, context switching is a silent killer of productivity.
So I think rather than aiming for everything and expecting something might hit the target, we should focus on efficiency and expertises. This means identifying needs of the teams/system, finding gaps in current state, and empowering people with complementing skill to acquire relevant skills to fill those gaps or find people with relevant expertises. I don’t see any other way around as in my opinion fullstack development does not scale.
Although recent development in AI has changed some people perspective on this, I don’t see any evidence of AI scaling to the level where we can afford to have partial understanding of everything at every time.
Even though I have my biases towards it, as I could do any frontend development. I don’t think anyone should be solely responsible for from the top of the top of UI to the deepest and darkest bug of the backend.