
Should web developers be “full stack” or specialize? - mikece
This question has been a source of endless debate at several places where I&#x27;ve done contracting work: Is it better to have web developers who specialize in certain areas of the stack or to have full stack generalists who can be assigned work to any part of any project at the company?
======
cimmanom
How big is the company?

Small companies with too many specialists run into trouble when the balance of
work between specialties fluctuates and bottlenecks form. Or when a couple
people go on vacation and one gets sick and all of a sudden you have nobody
who can debug the database.

In a large company, each developer can only be working on a tiny corner of the
codebase at any given time, and there should be plenty of redundancy.
Generalization serves less of a purpose, and specialization allows the company
to take advantage of deeper expertise (or hire more junior, lower-salaried
developers who haven't had time yet to build up significant experience in more
than one area.)

------
brandonlamb
I am specialized, I would call myself a lead microservices engineer. I would
never claim to be a "web developer" because I'm not creating web pages.

Full-stack conversation happens every now and then at my company (big corp),
and there is just no way that I see it being successful.

My platform team requires:

\- JVM/Kotlin \- Domain-Drive Design \- Akka, streams \- Kafka, PostgreSQL,
HazelCast, ElasticSearch, Cassandra, CosmosDB \- Kubernetes / DevOps (the
platform infra stuff), knowing how to troubleshoot and resolve issues \-
Pragmatic REST design and industry trends/best practices \- Build pipelines,
exploring Jenkins/CircleCI \- Distributed system design \- Reactive system and
reactive programming design/development \- Pragmatic, well-designed relational
and nosql databases (indexes, foreign key relations, understanding wide
columns and document based (we have both ScyllaDB and CosmosDB) \- Kong API
gateway management \- Core business logic, inter-connected systems (upstream
and downstream), complex pipelines

When the hell am I supposed to learn, practice, and keep up on html/css/js?

My org also has a product team which develops our mobile and web applications.
The engineers on this team are trying to learn and build AngularJS (legacy),
React, React Native, and nodejs for their product APIs which call our platform
APIs (backend-for-frontend pattern). They can barely get time to learn how to
dockerize their node apps, let alone deliver on business features while
actually becoming GOOD. The same applies to my team on platform.

Full-stack might be fine at a startup or small company, but the way I see it
full-stack is the classic "Jack of all trades, master of none", or in cynical
terms - crappy to mediocre at everything.

I would much rather work with a peer who is specialized and I can be confident
in their html, css, javascript, react and node skills as an engineer over
someone who can cobble together something that might work initially, but has a
shitty design, doesnt follow best practices, or will be a nightmare to
maintain as stuff in our environment tends to stay in production 5-10+ years.

We started out as a single development team, full-stack, where everyone was
doing everything and it was chaos. Nobody was good or did anything well, which
lead to some really shitty code and team members stressed out about how much
of a tech stack footprint they were having to try to learn.

Can it be done by the right type of individuals? Absolutely. I could spend a
weekend or two and probably learn how to create an initially working React
app, but I'm going to struggle to take it very far and wont be able to solve
complex problems.

------
1ba9115454
The problem is that if you split a web development team into front and backend
you've killed the project. There's now too much back and to with meetings to
coordinate how the front and back connect.

Better to have each developer full stack and focus on screens. So each guy
goes from top to bottom. He/She would also write system tests.

------
ccajas
From my own experience, the smaller a company is, or the more removed it is
from the tech industry, the more emphasis they place on specific tech stack
knowledge. That is, they prefer to hire a "senior {language} engineer" and
it's more clearly outlined in the titles of the job listings they post.

------
mabynogy
It's because of the job market. Don't position yourself on that. It's not
rational. The market just try to minimize the risks (for those who hire and
manage). Same for junior vs senior.

------
chipuni
What are you writing?

If the code base is simple, then developers can do it all.

If the code base is complex, then developers must specialize.

