The death of specialization
Posted by git_pull@reddit | ExperiencedDevs | View on Reddit | 233 comments
I’ve been at my present company (US based, non-tech industry with a large tech component) for nearly 6 years now and I noticed a trend that seems to have been getting worse in the last year. Originally we would have people with different specializations: front-end developers, back-end developers, database engineers, dev ops engineers, prod support, ect. You get the idea. Across the company, we would either have them in separate teams or across a team, depending on the project needs. For example, we had a dedicated team of dev ops engineers that teams could rely on to set up deployment pipelines. Now all of those roles are now a single title and the developer is expected to do all of them. A developer who previously would work on UI projects is now expected to also spend time doing production support, setting up pipelines and new environments, creating database tables, ect. The teams of dedicated dev ops engineers are gone, the dba’s are gone, the dedicated teams for tech support are gone. This isn’t just senior developers, new dev’s and contractors are expected to master every part of development and as you would expect, they are struggling. Honestly it seems like the whole company is struggling since we no longer have any specialization. No one is amazing at their role because they are expected to know 5 different jobs. It is the embodiment of ‘"Jack of all trades, master of none". I thought the point of large companies is that you don’t need to wear as many hats. Is this just my company or are others also experiencing this? I get this is a cost cutting measure but it seems to have gone too far.
AfricanTurtles@reddit
Benefits: They get more work out of you. You get more variety of experience.
Negatives: Lose quality of the work that having specialists would bring. Accessibility, semantic html, scoped styling, less spaghetti front end code. Better structured backend code, API's, pipelines, etc.
I think a lot of times getting everyone to do everything backfires because there's so much to understand. I've seen backend folks try to write front end code and it's the worst crap I've ever seen in my life because that's not their specialty. Just like I probably wouldn't do as good a job as they do writing Java code.
ChineseAstroturfing@reddit
Imagine if your home was built by a bunch of general labourers who “knew a bit of everything” instead of specialized experts. Carpenters, plumbers, electricians, etc.
Software is such an immature and goofy field, and there is so much absolute jank garbage out there especially on the web.
The quality of software in general has been absolutely tanking in the last decade too. Some of the web apps I have to use at work are just “broken”. I ran equivalents decades ago that actually worked, were lightning fast, and felt professional.
With AI it’s going to get a lot worse.
IsItRealOrIsItAI@reddit
I frequent a lot of remodeling and renovation subs here. Depending on your location, a lot of the trades aren’t too far off this same approach. One day the guy they grabbed off the street is doing your framing, the next your siding, etc. lots of horror stories in those subs about shoddy work.
SnakeSeer@reddit
It's crazy how things are degrading.
I've had a Kindle since they came out in 2007. My current one is probably my last one, as the last time a firmware update made things better instead of worse was probably sometime circa 2017.
pguan_cn@reddit
Similar, my kindle was offline since 2021.
db_peligro@reddit
'better' from amazon's perspective means you spend more money with them, not a better user experience.
EmeraldCrusher@reddit
It's mind boggling how hardware software keeps getting worse... I feel like OS's of yesterday are lighning fast compared to what's released today.
mc-funk@reddit
Yeah, because companies refuse to invest in quality. And why should they? Most of them are just shoving out features to get their sales numbers looking good to court more investment. They’re not trying to build good, delightful products that will generate sustainable income. They’re just trying to make an exit and it doesn’t matter how much technical and design debt they rack up along the way. AI has only supercharged this.
OTOH, it makes working with AI coding tools a lot more familiar. “Oh I have a sort of working code base with a bunch of wtf crap in it? Ahh just like working in a production code base in a 3 year old startup ☺️”
Unlucky_Buy217@reddit
Because quality doesn't matter to the extent people think it does. Software in corporate world is the means to a business end, people need to learn this. How much ever you try to chase perfection, you'll never know the requirements upfront and you'll need to refactor or rebuild when the time comes. Yes quality matters to an extent, there need to be discussions and alignment and it should be made sure that it meets certain standards, but most software doesn't need to be absolutely top tier, requirements change very quickly in this world, and you will need to rewrite just as quickly.
mc-funk@reddit
We’re not really talking about the same thing. I’m all for pragmatism but the software business has been overtaken by short term thinking and a predominant business model that causes a race to the bottom at the expense of end users.
lolimouto_enjoyer@reddit
There is no incentive to improve quality if the software sells without it.
randonumero@reddit
I'm sure it's changed but 20 or so years ago I can definitely say that some homes in my state were definitely built by generalists with limited supervision from specialists if you were lucky. My house is less than a decade old and I had to get a plumber out for something when I told him who the builder was he shook his head because I guess they're not known for quality.
Dziadzios@reddit
It's a common phenomenon that's called "golden hand" in Poland. A lot of Poles were too poor to hire specialists so they just did everything themselves. And learned everything. It's usually a knowledge passed on from father to son, even if they work in unrelated professions.
bombaytrader@reddit
Well software engineering isn't like that though. A back end engineer can pick up react pretty fast and deliver a pretty good app.
Mediocre-Ebb9862@reddit
If you think any back end dev can quickly pick up frontend, then your definition of what it means to be a really good frontend developer is far too low.
ChineseAstroturfing@reddit
No they can’t. They’ll naive ones think they can though. It’s a form of the Dunning-Kruger effect. They know so little that they don’t even understand how bad they are.
bombaytrader@reddit
I don’t understand these big words. All I know is I have worked across the stack and make decent. All I care about is dollars hitting the account and me moving towards fire target.
jeffwulf@reddit
They can unless they are incompetent.
Schmittfried@reddit
Sure, just as much as any other person could pick up most other skills in a reasonable amount of time. But nobody can get experienced with something quickly, so they‘ll take quite a while until they produce more value in a domain that isn’t their specialty, and that discrepancy only grows with more experience in their primary field. So at some point it just doesn’t make economic sense, the opportunity cost is just too high. Unless the speciality is becoming obsolete that is.
Korzag@reddit
I feel that. I did mostly backend and database work for my last team then I was thrown on a maintenance team and told to start updating some old Angular projects. I'm not knowledgeable in Angular. I've had to rely on AI extensively to figure things out and quite frankly I have no idea if what I'm throwing together is correct or not and neither do the people reviewing my changes.
bombaytrader@reddit
I worked on a project that ripped out knockout and ported the entire app to react while the app was running in production. I am a backend engineer
TacoTacoBheno@reddit
I try to use medicine as an example. You don't expect a cardiologist to know the ins and outs of neurology, but I'm supposed to know from end, back end, database, version, security, etc.
Svenstornator@reddit
But one of the specialisations is General Practice, and they are expected to know some of everything. They do need to train to specialise in General Practice. Having people specialise in General Practice is super valuable. It is the most common specialisation in Aus. Specialists are important but there isn’t as much demand for them.
At this point it seems like businesses have a higher demand for people specialising in generalisation.
Mediocre-Ebb9862@reddit
Exactly. There are people specializing deeply in databases, and mobile apps, and compilers and OS - just not many and there not many positions where they are required.
Mediocre-Ebb9862@reddit
This isn’t a good example, every cardiologist goes via medschool and has some decent understanding of anatomy and physiology overall, just not as deep as in his specialty.
Same here - generalist developers most typically have pretty surface level, comparatively to specialists, understating of all the things you are talking about.
pattobrien@reddit
It's funny how you created such a great analogy, yet came to the wrong conclusion.
Your home IS built by generalists: General Contractors. A great GC does 80% of the work, and their "specialty" is knowing how to bridge all of the different disciplines together into a functioning system. They leave holes and pathways in the walls and floorboards, then have specialist electricians and plumbers come in to do specific work that only a certified expert can do.
The "full stack" engineer is obviously abused by companies looking to save a buck, but that does not at all diminish such a generalist's value in the SDLC.
Perfect-Campaign9551@reddit
GCs don't do any work. The hire sub teams to do all of it
ChineseAstroturfing@reddit
A home is not built by general contractors. The general contractor is the equivalent to a product manager not a full stack dev.
OutOfDiskSpace44@reddit
Whenever a specialized worker goes to a house, they get a spidey-sense tingle when the wiring or plumbing is fucked.
I see the same with general contractors in tech. Oh sure you have authentication, but...it doesn't have X. Sure you got it in production, but it's going to break when you get to a tenth of the Y customers you expect. Then there's the revolving door of those contractors assigned to the project...
Educational_Pea_4817@reddit
so train them.
this is a solved problem.
KallistiTMP@reddit
I think shallow generalization is a reasonable expectation, but there's limits to how far that can actually be taken.
I've spent my entire career learning new things, and definitely consider myself a hardline generalist. And I have barely touched frontend, because the list of new skills I could develop is infinite, and "backend" is so broad that I will never even come close to learning "all of it". If I have a choice of learning how to build simple GUI's in angular vs. diving deep into strategies for tracing and profiling large distributed systems, I'm going to spend my time on the latter.
Frontend and backend are good absurdly broad domains, each with enough things to learn to keep an engineer continuously learning for their entire life. And the skills within those domains tend to synergize well and have heirarchical relationships. You can't get good at Kubernetes until you have a solid understanding of distributed systems and Linux, you can't understand multi-cluster scheduling frameworks until you understand Kubernetes and virtual networking, you can't understand the actual job scheduling frameworks for those multi-cluster schedulers until you understand accelerated computing infrastructure concepts like MPI and RDMA networking and NCCL. And you can't generally do a great job if you're just jumping in the middle of those things with no context.
I know enough frontend to run HAR captures and file good bug reports, and to incessantly bitch about how it's 2025 and multi-second input lag and page content constantly jumping around everywhere due to undefined element sizes is completely inexcusable. I can hack out simple interfaces, and given enough time even debug simple frontend issues. I know more than enough to effectively collaborate with people in those other disciplines, though I rarely ever have to.
But I'll likely never accumulate enough depth of frontend skills to be a solid senior frontend dev, because I'm busy picking up the skills needed to be a solid principal backend dev. My learning bandwidth is usually much better spent in areas that synergize well with my existing knowledge, and that are hard for people without extensive background knowledge to pick up - because those skills are harder for people to develop, and thus under higher demand.
Well rounded generalism is great, and IMO is a prerequisite to staff-anything. Backend developers should know a little frontend, and vice-versa - hyperspecialization in narrow domains is arguably the largest issue in the engineering field, and largely aggravated by skills inflation (see, "20 years experience in Kubernetes", and other lies hiring managers tell themselves).
But natural domains of specialization are real, and trying to train everyone to be equally okayish at everything is not as good in practice as it sounds on paper. You can go too general, just like you can go too narrow, and the results are just as bad.
Educational_Pea_4817@reddit
front end and back end development are so entertwined these days(who has a web app that doesnt talk to an api?) that i think its pretty weird to say you dont have time to "get good" at front end cuz you're spending too much time doing back end development.
also the bar that OP raised was to not write shitty front end code not be a front end guru.
no they should know alot its not a big ask.
yeah thats cool. but if you where put on a project that has front end work i expect you to learn or the very least ask for some training so your kid isnt shit.
if not im firing you.
355_over_113@reddit
The problem is when you have to wear 5 different hats under time pressure
Educational_Pea_4817@reddit
thats a management issue.
Existential_Owl@reddit
I agree, wholeheartedly.
A lot of folks in the industry will argue that teams should either be all generalists or all specialists, but I firmly believe that teams need a mix of both.
There's an efficiency to having people on the team who can work both sides of the stack, but you absolutely do need people overseeing their work who understands the domain entirely and can reject any and all PRs that violate key principles.
Otherwise, you'll get shit like, teams reinventing React Router entirely through
if
statements or stylesheets that repeatedly thrash the rendering tree with every new line. (Both of which I've seen in reality... at Fortune100 codebases).Unfortunately, I've been forced to work with startups these days (thanks, economy!) and full-stack "rockstars" are all they ever want me to interview.
quentech@reddit
Many (most?) startups simply don't have enough volume of work to support having full-time, narrowly scoped specialists.
WTF is a full-time DBA or DevOps person or team going to do all day in a startup? Nothing.
Mediocre-Ebb9862@reddit
In addition, it's very hard to attract true specialists there.
Why would true domain specialist in e.g. databases want to work for a small or mid-size startup? Their scale is small, their problems are trivial, their challenges are often something that companies at the frontier solves many years ago.
So why work there?
Existential_Owl@reddit
Even at a startup, you should at least have a minimum specialist backend and a specialist frontend.
I've been on both types of teams, and it's most certainly the teams with mixed generalist and specialists that runs the smoothest.
It's not the easy stuff that blocks teams, after all. Even for startups, you almost always run into issues that take deep domain knowledge do right.
For example, one of the biggest problems I'm dealing with right now is trying to unfuck our database queries so that our end-users can stop impacted by slow load times. The server was built by full-stack devs who only understood basic ORM usage, and it shows in the results.
quentech@reddit
That's just an issue with low-skill developers. Yeah, sure, if your generalists building your whole system are barely if even mid-level, you'll get crap.
A couple of experienced devs who are actually pretty good at both ends can move much faster on a greenfield app than one backend and one frontend siloed devs, in my experience.
But then I am one of these people who does back end, front end, infrastructure, devops, security, etc. and has been for over 20 years, and I work on a small team of devs most of which are plenty competent on both front & back end systems.
We're big enough (in services and customers) and old enough that we do have some areas that are particular to a couple of devs that are most skilled in those areas, but it took years before those relatively small areas started to stand out.
thekwoka@reddit
it just is the easier code that ends up taking the most overall time, cause there is just way more of it
thekwoka@reddit
Obviously they will spend that time finely tuning the docker images.
thekwoka@reddit
T shaped is the way.
Deep specialization in one thing (or tightly related set) and comfort in a wide range of related things
JohnDillermand2@reddit
You should see what they try to do with the database.
economicwhale@reddit
This approach makes a lot of sense at startups though.
If we’re honest, you should feel comfortable enough to learn a good amount of frontend, backend, basic infra, system design, databases etc. to be able to build a modern SaaS app that is reasonable quality, and if you don’t what is blocking you from learning that?
I’m at a medium sized startup (~100 devs) and of those around 5 are specialists. We really need those specialists, but ideally we’d hire as few of them as possible as most of the work is doable by a generalist to a reasonable standard.
Dziadzios@reddit
Additional negative: other people also get more keywords on their resume, so they will look marginally better than yours.
Awkward_Past8758@reddit
This. I’ve enjoyed it to a degree because early in my career I specialized as a front end work and I never got back end tickets despite wanting to improve my skills and stay relevant. Now that my current company expects me to do both I get to really shine with the front end work I do and fill in skills gaps with the back end tickets I’m now picking up.
I hate absolutely hate infra work though. I’ve been battling Azure the past 3 days and feel like I’ve been both kicked to newbie level and also feel like based off of my “level” I can’t ask more experienced infra focused devs because they expect me to kinda know this stuff already.
Master-Pattern9466@reddit
You also have devs that own the product from infrastructure to support, rather than piffing it over the fence for the support team / ops team to worry about.
Any organisation doing the everybody needs be full stack needs to maintain a skill matrix, and ensure that they always have experts in each area.
You also end up with better and quicker solutions, leave it to the dba to fix a problem, you’ll end up with stored proc kludges and triggers. Like wise with each specialisation.
However true specialists have their place, but often those roles get outsourced in the companies I’ve worked for.
coredalae@reddit
I think the sweet spot is we have specialists who occasionally (team member on holiday, whatever feature just requires only specialty x, whatever) helps in other specialties, while having support from a specialist. But just having the possibility gives you a lot of flexibility
cryptopian@reddit
I've heard the phrase "T shaped engineer" - someone who has depth in one domain, but a shallow breadth of other knowledge to appreciate who might be using their work
thekwoka@reddit
yeah. Like if you make front ends, surely you'd pick up some stuff about backends and DBs in that process, and should be comfortable to step across the aisle for quite a few things.
I'd be confused how someone could NOT get that.
Perfect-Campaign9551@reddit
This exactly. There is literally just too much to know. Even my company that does desktop apps send to be forcing us into this.
ironymouse@reddit
I think there are benefits for the company in being able to ask just one team to 'get it done'.
It simplifies things for them by not needing to prioritise across multiple teams or disciplines as much.
nachose@reddit
There is no benefits. All industries got huge gains with specialization. It is just that is very difficult to measure productivity in programming.
Aware-Individual-827@reddit
It's not for that, it's because if everyone is able to do everything, everyone is replaceable. That is the single reason why. The output of that is always worst but you don't have to pay steve that maintain the considerable script ecosystem that your whole company runs on more than bob which does new buttons all day.
They want to make software "unskilled" labor in the sense that you are but a cog in the system.
Truly_Spoken@reddit
This is the problem we have where I work. The frontend is written by backenders and it is incoherent spaghetti.
Big-Contribution-688@reddit
let me correct you OP bout the quote. "Jack of all trades, master of none". The complete quote is, "Jack of all trades, master of none, is (way) better than master of one."
it seems impacted din kyo sa integration ng AI sa workflow ng company nyo. babalik din ung structure nyo, siguro give it another year. gnun din ksi nangyari sa isa kong consulting gig.
PixelsAreMyHobby@reddit
Just keep telling that yourself! If you are happy to produce subpar results, that’s your coping strategy.
Big-Contribution-688@reddit
which one? the quote or the AI part?
PixelsAreMyHobby@reddit
Your quote Mr Full Stack
Several-Analyst669@reddit
Yeah, this is happening more than just at your company. A lot of companies are now collapsing specialist roles into “engineer does everything” because it looks efficient on paper. But it’s a false economy.
There’s a difference between encouraging engineers to understand the full stack versus making everyone own every layer. A healthy setup is usually some blend: you want people who can move around enough not to be blocked, but you also need deep expertise in areas like infra, data, or support. Otherwise you end up with fragile systems and burned out developers.
So, my opinion: it’s not inherently bad to want engineers to broaden, but eliminating specialization altogether usually backfires. Balance is the only sustainable play.
SpringShepHerd@reddit
Why wouldn't you just use pluralsight or something to build skills in a generalist?
Fit-Wing-6594@reddit
Also customer facing developer roles are on the rise...
AppropriateRest2815@reddit
We have split devops and engineers but otherwise engineers are expected to do everything. It’s a Rails shop so the db stuff is integrated anyway.
I have personally benefited from this because for most of my career I was told I didn’t fit any specialist roles because I’m too generalized.
We still have a few folks who excel at front- or back- end only and I’m glad there is room for them here.
I really enjoy being able to cover the full spectrum and have become “the specialist” in handling insanely complicated performance issues.
So I’d say there are different specializations in a generalized crew. Or can be.
CuriousPeterSF@reddit
With AI, any good generalist can become a good-enough specialist in a few hours for many tasks.
pailhead011@reddit
Does it work the other way?
PixelsAreMyHobby@reddit
🤦♂️
On a more serious note, here is my take: with AI, people will lose their brain power and actually lose their skills. You don’t know what you don’t know.
CuriousPeterSF@reddit
People rarely know what they don't know with or without AI. It is a matter of epistemic humility.
franz_see@reddit
Unpopular opinion: Those are as specialized as being good in for loops or while loops or if-else
Specialization is still good. But the specialization you mentioned are not as specialized as you think
It’s good to specialize in one of those in your first 5yoe. After that, i highly recommend you become a generalist on all of those. Not enough to be an expert on each one - just competent on each one
It’s very rare that you find anyone looking for a frontend person that has 10yoe. For those you mentioned, most job postings are only looking for 5yoe or less. That’s because market value wise, they have diminishing returns on investment
You’ll see this once you manage budgets and you hire people. In fact, if you need someone with 15yoe to maintain or work on your system rather than just 5yoe, i would question the architecture. A good architecture reduces the barrier to contribution.
What’s a good specialization then? - well, normally, this is domain knowledge or deep tech.
For domain knowledge, it’s great to be in a highly regulated space like fintech or healthtech. The market puts more value on those because for less regulated industry like e-commerce, it’s easier to teach someone that. For me, after I got into fintech more than 10 years ago, i keep getting pulled back into it even after i left it. But i’ve never been pulled back to adtech 😅
For “deep tech”, that’s up to you to figure out. AI? Geospatial? Robotics? Something along those lines. But it doesnt have to be deep deep tbh. For example, mine so happened to be bypassing anti-bots like recaptcha, cloudflare, datadome, etc. It’s not deep tech by no means but people who are looking for these skills are usually desperate that they’d pay more than your average backend dev rate (that’s because knowledge to do this are not seo-friendly which makes the skill sets rarer. Any anti-bot you can google is already patched or will be patched by those anti-bots. Their people know how to google to)
pailhead011@reddit
What distinguishes geospatial and robotics?
NeoHagios@reddit
I do wish that if the trend continues, specialists (and support for these roles) would still continue alongside having a full-stack role. For example, one could be a full-stack dev while specializing in frontend. So expectation would be that the dev can perform or juggle different hats (including devOps) but at the same time be a dependable contributor when it comes to FE tasks
FuckAllRightWingShit@reddit
Data architect here.
80% of my career earnings are thanks to front-end developers (many quite good at development) designing databases, choosing primary keys, and writing queries.
By the time I get there, the system can only be helped along for a few more years before a pricey rewrite costing tens of millions is required.
Vawqer@reddit
Do you happen to know of any good resources for learning how to design DBs and write queries that don't totally cause issues? I'm afraid I might be one of the devs you mention now, and my area is my company has no specialisations.
FuckAllRightWingShit@reddit
What I would do if starting out:
Learn the definitions of 1st, 2nd, 3rd and Boyce-Codd normal forms. Few people ever directly use them, but there a strong intro to the relational-database philosophy
I don’t know which software universe you’re in, but Itzik Ben-Gan’s T-SQL Fundamentals has just about every ANSI query you’re likely to write.
Same author: T-SQL Querying goes deeper, can be skimmed for what you find useful/interesting.
Learn what a data warehouse is, and how it’s laid out schema-wise - don’t sweat depth.
Learn how the query engine and indexing works for your RDBMS software, and why you should define all data elements, but most of all your keys and index columns, using the fewest bytes possible
Whatever the most recent Grant Fritchey book on SQL Server performance tuning is: honestly, if you read that book, you will never have a problem designing a database or writing good queries
Hard-core: Dmitri Korotkevich’s books on SQL Server, particularly Pro SQL Server Internals and Expert SQL Server Transactions and Locking
Vawqer@reddit
Thank you so much! That's exactly what I was looking for. Luckily, I've at least internalized the normal forms from college, so I wasn't completely making a mess of my DB schemas organizationally. Now to learn to make sure my queries and indexing aren't a mess.
EmeraldCrusher@reddit
Love this, I had this sort of career trajectory a few years ago. Stopped getting warm leads on jobs though awhile ago. Feels like now, they just let it rot?
FuckAllRightWingShit@reddit
Market is stalled in wait-and-see mode, with the exception of AI-related data tasks (pipelines, stuffing huge analytics and machine-learning databases w/ data). Everyone trying to became an AI company.
OLTP stuff is being kept alive with skeleton crews - which is what I'm good at doing, incidentally (am a duct tape and chewing-gum keep-it-running database developer/architect).
There is too much legacy data which must keep running. They will have to go about fixing it. Just have to wait out the present stasis.
WrongThinkBadSpeak@reddit
Small software businesses used to be in it for the long haul, now they're all working toward acquisition from Mag7 or PE, so they don't care too much about making a sustainable venture
EmeraldCrusher@reddit
Yeah, I just haven't figured what angle to play my career now that I've been unemployed for 3 years.
PoopsCodeAllTheTime@reddit
I think this happens in steps:
No-Inspector314@reddit
I get the sentiment that there should be specialization and some team should handle dev-ops and it shouldn't be your responsibility if you are doing data pipeline work. I have worked in the industry for 10 years and I have seen where specialization goes right, and often where it goes wrong. The places where it goes wrong, the specialized teams play politics, but honestly I don't blame them, the toxic work culture at those places from top leaders constantly causing layoff anxiety had everyone on edge. Engineers love working but when management starts building dashboards tracking progress of tickets closed, and that is used to determine if you'll have a job next quarter, the mindset quickly shifts towards playing political games.
I have seen it go well in companies where leadership is very technical and doesn't micromanage anything. They understand the interfaces between specializations and understand why you can't just take the data pipeline code and deploy it. The best place I worked, there was no Jira or any formal agile process. Everyone knew what they were doing and engineers talked to each other and got stuff done.
Going forward though, AI is bridging the gap in skills between specializations. A data engineer can easily pick up enough devops knowledge to do a good amount of devops. Of course theres always someone better at it so there is still some need for deep expertise in specializations.
Direct_Accountant797@reddit
Great take. This is the nuanced, unfortunately realistic version of "AI is going to replace devs".
thepeppesilletti@reddit
Sounds fun to me!
mlitchard@reddit
I see myself as a generalized specialist. I can do domain modeling for example but don’t ask me to do it with ruby.
randonumero@reddit
The reality is that many companies don't really need super specialization for a lot of product engineers. There are loads of situations where a slightly better UI experience because you had a front end rockstar isn't going to result in more traffic or paying customers. FWIW at least from what I've seen while developers are expected to be full stack, there's still investment in dev ops and database specializations.
Forsaken-Diver-5828@reddit
FYI the full expression is “jack of all trades master of none oftentimes better than master of one”.
Unpopular opinion, being specialised in an area is not going to take you very far in your career because above a certain level you will be expected to touch multiple areas which appeal more to generalists. Especially since the rise of senior+ roles in the last few years.
Similarly after a point it is all “programming” so the idea of being able to learn anything will also take you further. Don’t get me wrong but most “frontend” developers these days have 0 idea on basic concepts of programming like design patterns and data structures so if that trend is about to die im all about it.
BotBarrier@reddit
This trend is only sustainable if there are core teams of subject matter experts who are responsible for defining firm-wide roadmaps, standards, best practices and are the top escalation point for issues. The fortune 500's I've worked in all implemented this model and it works well. Without that, and without SME's, it is a race to the bottom, with the fastest/easiest approach, as determined by the teams members experience /skills, will result more often than not. One off implementations become the standard, tech debt explodes and risk accumulates.
shan23@reddit
Specialization exists if you have niche domain knowledge
Western_Objective209@reddit
It gives you a lot of experience, but honestly feels really wasteful. Constantly context switching between cloud engineering, devops, backend, frontend, testing, productivity really does tank and I feel like it gets worse as I get older.
prescod@reddit
The alternative is a different kind of productivity killer because you are always waiting on someone else to do the other parts of the job and the specialists are always task switching between projects. Choose your poison.
topological_rabbit@reddit
The last dev job I had that still had separate ops and qa teams fostered communication and cooperation between the teams and it was amazing. Worked far better than any other dev job I've had.
We were iterating much faster than agile, pushing out multiple solid released to prod per client per day.
Then they brought in a bunch of managers from Amazon, they dissolved the professional ops and qa teams, switched us over to agile / devops, and things went to shit very fast.
prescod@reddit
I take your point on specialization versus generalization.
But you say you were not agile before and now you are agile. I am confused by that.
What were you doing before that was at odds with the agile manifesto?
https://agilemanifesto.org/
Did you previously prioritize processes and tools over individuals and interactions?
Did you previously prioritize comprehensive documentation over working software?
Did you prioritize contract negotiation over customer collaboration?
Did you prioritize following the plan over dealing with change?
I would have thought that BEFORE the managers arrived you were following Agile more than after.
topological_rabbit@reddit
We had no standups, no sprints, no story points, none of that. The project manager would keep a simple list of prioritized features / bugs, we'd come in in the morning and grab whatever was at the top of the list, when we finished a ticket we'd submit a build to the QA team, and they'd get back to us with either a thumbs-up or a "we found some problems" with detailed repro steps.
For deployment, once we had QA's blessing, we'd just send the build over to our professional ops team who would run it through its paces on their isolated staging setup, and if that went well, would deploy to prod while us devs were busy with whatever was now on top of the work list.
Our clients were constantly changing their minds, so we iterated with them directly and would deploy to prod multiple times per day so they could try out what they'd asked for to see if it's what they actually wanted.
prescod@reddit
Everything you described is both small-A and big-A agile/Agile.
Sprints and story points are only Agile if they help you to prioritize working software over comprehensive documentation, Customer collaboration over contract negotiation, dealing with change over following a plan and so forth. And for some teams and industries and contexts they do. For you they did not.
So you didn’t add Agile to your processes. You removed it. Blame the managers who made you less agile/Agile, not the Agile concept which was in direct opposition to those managers.
topological_rabbit@reddit
That may be the "pure" definition of agile, but it's not the definition companies actually use. And when you're working under them, their definition is the one that applies.
I agree with the original manifesto, but I've never seen any company using the actual label "agile" implementing it.
We didn't call it anything, it was just the best we to do things in the environment we were in. No lists, no rules, no manifest, just a mandate of "lets get shit done efficiently".
prescod@reddit
Like all manifestos, the Agile Manifesto was written as a tool for revolutionaries trying to change the status quo. If a manager is going to use the term “Agile” and do things directly in contradiction to the manifesto then I will call them on their bullshit by linking them to the document just as I did to you.
To me it’s offensive to take someone’s ideas, do a complete 180 on them and claim you are adhering to them. So yes I will call it out every time I see it and I have done that with managers in the past. And redditors.
BothWaysItGoes@reddit
You are confusing Agile with Scrum.
ILikeTheSpriteInYou@reddit
Every time I used to remind people of the actual contents of the Agile Manifesto, I go either blank or nasty looks (as if I am being that "one" guy). It's sad that folks always overlook the actual Agile principles.
EmeraldCrusher@reddit
How do you not get angry and tell the managers to go eat a pile of dirt?
topological_rabbit@reddit
I was very, very explicit in my exit interview when I quit that job.
Perfect-Campaign9551@reddit
That's just bad team management then. I mean the whole point of having teams is your can move faster because work can be done in parallel
If you think that's a bottleneck well the problem isn't the team concept, it's just a badly run team that isn't focusing on the he same goal. That's an organization problem not a technical one
joshocar@reddit
I think the ideal is mix, you have a bunch of generalists and then some small teams is specialists that can one, build the bigger set of tools or frameworks that other teams use, two, help troubleshoot and solve really hard problems that need domain expertise, and three, can be deployed to teams to spin up things and get them off the ground. That way for simple things you can just do it yourself and not have to wait. You can also maintain things as needed, but you always have specialists you can reach out to.
AI think the big issues with is you need to be a big enough org to justify and support the smaller specialized teams.
prescod@reddit
Yes this is how we work.
rotewote@reddit
At least in my experience the later is the only way you get your product/program/management resources to actually give a shit about investing any energy in determining what the proper sequencing is for a given series of projects.
Western_Objective209@reddit
At least in my experience, projects at the same company tend to be in the same domain. I see projects siloed by team, and every team does things their own way and the wheel gets reinvented a dozen times with varying degrees of quality.
You should have a clean interface for your piece and be able to mock inputs, and if the system is well-designed each person will be providing inputs "just in time".
winnie_the_slayer@reddit
vertical stack a la team topologies is fine as long as its a very thin, well contained vertical stack. i prefer owning a piece top to bottom as long as its a small piece.
Western_Objective209@reddit
Do you see the issue where people working on similar vertical stacks duplicate the same work over and over? I understand people liking to feel ownership of an entire slice top to bottom, but then you don't have the ability to see opportunities for abstraction across say 10 different projects where they all basically write the same CI actions with small variations as an example
thermal-ice@reddit
That’s usually where platform teams come into play, especially for tricky parts of the stack that’s easy to get wrong. Examples include compute infra teams, observability teams, data store teams, etc. This is assuming that your company is of sufficient size to justify having these supporting teams though.
For something like CI, my company lets each team set it up themselves since most builds and deployments aren’t terribly complex. But for a company that’s like Meta’s size, they of course have their own CI and build tooling teams.
Western_Objective209@reddit
Yeah we do have teams like this, but it's usually at a very high level. Like they make wrappers over AWS auth and so on, but at least in my experience it's more about putting on guard rails to prevent bad things from happening then making development easier.
Cynically, I think a lot of having engineers siloed to projects is based around it being to know who to lay off when leadership decides to kill projects
winnie_the_slayer@reddit
Sure. It is a tradeoff. Somebody higher up the chain has to have visibility into it to resolve it across teams.
bradgardner@reddit
The hard truth is that for MOST companies, that level of specialization never made any sense. It's popularized by big tech and fits well there, but it never made sense in small/medium sized companies.
Big_Ad_4846@reddit
It is inconvenient but most people are much more productive when working in certain areas by a big margin. You can hire fullstacks but what you are getting most of the time is a js developer that is a permanent junior for nonjs stuff.
Svenstornator@reddit
In most small/medium businesses it is better to get people who have specialised in generalisation.
Northbank75@reddit
…. often in a small team the specialist is a guy that winds up twiddling his thumbs while he/she waits for something else to do ….
Svenstornator@reddit
I’d believe it!
Big_Ad_4846@reddit
Millons are being lost because of this. It seems easier to allocate work when someone "can do everything". The only problem is that 80% of those fullstack produce very bad code outside of their real expertise. And with AI it's only getting worse.
But hey, we're producing more problems for us so that we don't run out of work so...
apnorton@reddit
Your company has moved to a "full-stack engineering" model. This is not a universally-adopted strategy, though it is a common one. (And, as someone who used to be employed by such a company, I rather liked having full control of an application/complete vertical integration.)
Interestingly enough, this was the original intent of devops --- when companies take devops engineers and put them all on a team by themselves, they've recreated the wall between dev and ops that the devops methodology was supposed to break down.
ebinsugewa@reddit
> Interestingly enough, this was the original intent of devops --- when companies take devops engineers and put them all on a team by themselves, they've recreated the wall between dev and ops that the devops methodology was supposed to break down.
Agreed, the lack of a dedicated team OP is describing is a feature, not a bug.
You, the application engineer, are ultimately responsible for your application. If you just throw your hands up and deal with stuff like spending 20% of every day waiting for self-built pipelines to run.. fix them! No dedicated ops team is going to descend from the sky to do this for you. If your app breaks in prod.. fix it! If you don't know how to find a hot DB query or something even as a primarily backend engineer, you are never going to be able to design new features with performance in mind.
On the surface, this is frustration with having to do more with less. And that's understandable, but if you don't like your situation, you can always leave. But underneath the hood it's actually frustration with having to learn new things. That's like.. the defining skill that makes you successful in this field. Do what every other person here has done and use the documentation/forums/maintainer chats/mailing lists/your professional network/whatever and figure it out. Be resourceful.
You do nothing but increase your marketability by doing this. If you want to complain about the market being bad, I can promise you that your skills stagnating is not going to make it any better.
snorktacular@reddit
The handful of devops roles I've encountered could be called automation engineering, devex, infra, platform, IT or some combination of the above. The ethos of devops isn't about product devs managing their own Jenkins instances, and most devops teams or roles are about handling what 15-20 years ago would have been relegated to IT.
In my mind, devops starts happening when product devs actually hit the "deploy" button themselves, and also bother to configure their own CI builds because they're the best ones to decide how their builds and tests should work. We're really doing devops if those product devs bother to look at dashboards before and after hitting deploy, respond to alerts when things go wrong, and actually perform their own rollbacks and code hotfixes, plus config or infra fixes in their purview. And we approach operational maturity when product devs have SLOs and can reason about components above and below their part of the stack, open PRs against those components, and can reason about reliability
LargeHard0nCollider@reddit
I personally don’t mind it all being on the same team because you get to switch it up every once in a while, and you still definitely end up specializing in a couple things
prescod@reddit
Yes and no on the devops thing.
He said that the devops people are developers responsible for deployment pipelines. That’s a step forward from the bad old days where ops people were just responsible for keeping systems running and might not be developers at all.
Devops is supposed to be a discipline of experts who enable everyone else in the company to manage their own deployments and ops.
Venthe@reddit
Not really. DevOps was literally about shift-left of ops competences to remove barriers for the development team to be able to go from code to production including operation. devOps team (a devops role is a misnomer) has both competencies.
What you are describing is platform engineering.
prescod@reddit
Sure if you want to be precise with the terminology. My point was that there is nothing abnormal or intrinsically problematic with having a team that specializes in CI/CD. Whether you call them platform engineering or devops or engineering enablement is secondary. It’s just a name.
git_pull@reddit (OP)
I'd like that but I have no expert to rely on. If I run into an issue with terraform, there's no one to ask.
rwilcox@reddit
And heaven help you if you have to do anything network related…
terran_wraith@reddit
On my team, most people do full stack work, but each person tends to focus more on certain aspects. We ask each other for help when there's something tricky to do in the best way. I think it's a good balance of integration and specialization.
apnorton@reddit
Yeah, this was the situation I had when I was on a full-stack team. I thought it worked really nicely, because it gave people the opportunity to have some specialization (e.g. I was the guy who tended to do most of the terraform/deployment pipeline creation, along with managing python-based lambdas, while one coworker did our front-end and javascript, while another coworker handled a Java service and database, etc.), but still have knowledge of the "big picture"/why changes are being made.
Where this really shines is when dealing with conversations that would usually require multiple days of inter-team back-and-forth communication. Anyone who's been at a company with siloed teams knows the pain of, e.g., an application team blaming the database team for latency, while the database team blames the network team, while the network team blames the architecture team, while the architecture team blames the application team. Resolving that requires a lot of people to get on calls, having meetings, dealing with prioritization conflicts, etc. But, when it's all inside your team? You fix that crap in an afternoon.
lazoras@reddit
the secret is that "full stack" and the "agile" engineer only works while there are seasoned senior engineers who KNOW A LOT.....because experience
as soon as those seniors retire these companies are fucked....I think that's why there is such a hard push for AI. to compensate for the lack of specialization
ArchitectAces@reddit
When you shift left, ain’t nothing to the right
CautiousRice@reddit
That's part of the enshittification of our craft that started with Musk and the AI tools.
azat_co@reddit
i agree with the trend but originally we didn't have specialization, originally we had generalists and even people from math, physics and other sciences to work in tech/IT/software
so it’s just a circles
OrneryInterest3912@reddit
I’ve managed to stay deeply specialized with a strong tech stack and maintain systems thinking across most of the stack (except frontend), but I’m watching the death of specialization happen around me in real time. I’m an outlier, and I know why. I can only maintain my sharp skill set because I don’t have a family to support and have the mental bandwidth to actually think and stay current. Most of my peers don’t have this luxury - they’re constantly context-switching between reorganizations, tight deadlines, and completely different projects requiring different skills. The only solution I’ve seen work: quietly embedding technical debt work into ticket planning from the ground up. It’s rarely discussed publicly, but if you don’t systematically build refactoring into your sprints, you never get the time. You end up perpetually firefighting with deteriorating systems that teach you nothing except how to patch holes. When engineers are constantly thrown into these fires, they’re not building specialist skills - they’re just burning resources hoping the flames die down. The system becomes self-defeating: bad architecture creates more urgent work, which prevents the deep work needed to fix the architecture. This is why being a specialist feels increasingly pointless for most people. The industry has created an environment where constant reorganizations and deadline pressure prevent the deep work necessary for real expertise. I got lucky with my circumstances, but I’m watching talented engineers get their skills dulled by this hamster wheel. Anyone else seeing this pattern? Are there other “specialist survivors” out there, and what do you think made the difference?
Pttrnr@reddit
people are just blocks. if it can do anything you can move it around. unlike chess pieces HR/C* doesn't have to think about it.
Militop@reddit
It's bound to happen when AI gives all the answers.
sobrietyincorporated@reddit
Nothing new. You haven't been outside your current gig for a statistically long time for a SWE.
codysnider@reddit
This is how we all operated 20+ years ago. I welcome its return.
PixelsAreMyHobby@reddit
Yeah, but, things didn’t get easier, would you agree? Do you believe you can be great at every part of the stack?
yojimbo_beta@reddit
There are three reasons companies do this, from what I can see
In practice, it only solves problem (1) and partly problem (2).
EMs tend to make optimistic plans that a team of frontend engineers can pick up a very infra heavy quarter, and it creates inefficiencies like putting your best backend devs on React tickets whilst the mobile dev next to them is struggling with Postgres work.
Problem (3) is just the usual of managers hoping they can magic up more productivity out of people without it tiring them out.
c-healey@reddit
Fe swe at a large retailer here. I don’t mind dipping into Java code to fix a bug or a simple task. My current project is what a data scientist would do. The only way I can make any progress is lean heavily on ChatGPT. Ffs I thought fe was tedious. Try 500 line sql joins. I also stand in as designer, pm , devils…
EffectiveLong@reddit
I get that front end and backend parts. But i would never touch databases if I am not 100% well versed.
big_data_mike@reddit
I’ve been at my company which is similar (non tech but has a big technical component) and the title has always been data scientist for us. You ETL? Data scientist. Database administrator? Data scientist. You literally just buy and administer pre built software and show people how to use it? Data scientist. Data engineer? Data scientist. Mledevops? Data scientist.
Mediocre-Ebb9862@reddit
Creating database tables is hardly specialization, specialization would be tuning filesystem underneath database server; or working on the database itself, internals of it.
russels-parachute@reddit
Personally, I think that one important reason this keeps happening is that it works. Kind of.
It doesn't always work well, often not well at all, but any decent developer, no matter their specialization, knows how to figure things out and make them work. Thus, if you give a developer a new technology to work with, they will, eventually, deliver.
Combine with that the fact that it's notoriously difficult to measure developer efficiency, and that even understanding what kind of tasks are hard requires some serious technical knowledge, and you get a management that will have a hard time seeing any potential loss in efficiency but will see things working out somehow.
I don't mind the "full stack" label. I've worn it very different jobs ranging from sole responsibility for complete projects to effectively being stuck in a silo. All of them worked, because a great team made them work.
Given a great team and management that has the sense to not hinder them, "full stack" merely adds a level of freedom from corporate control over what exactly the role of any particular developer is going to be. We're free to grow into whatever we deem best for the team and the project.
PhaseMatch@reddit
"A jack of all trades is a master of none, but oftentimes better than a master of one" is the full saying.
Oftentimes is not always, which is what your org. is chasing.
In smaller orgs specialization mean key person risk, which is why they tend to play the "full stack" card pretty hard. Outside of that I tend to prefer the Team Topologies idea of having a context-sensitive mix
- some specialist teams with platforms/infrastructure or complex sub-systems
- some generalizing specialist teams that deliver "value streams"
- some enabling teams of pure specialists with deep knowledge
dashingThroughSnow12@reddit
I don’t think this is a cost cutting measure.
A bottleneck is communication. If you can have one person do a backend change, do the infra change that accompanies that, do automated testing, and do the minor frontend work, the primarily thing being cut is communication.
The pedagogical example I like to imagine is that before you’d have 10 frontend developers and 10 backend developers. Now you have 20 full stack developers.
local_eclectic@reddit
I prefer it. Fuck silos.
sM92Bpb@reddit
Im part of 4 devs with 1 frontend dev. The original purpose of the team is for a web based frontend. Priorities changed then we did cloud too.
All the devs like to work on web because that's what they signed up for but I can only give it to the frontend dev because he won't do backend. It's not his fault but I'm stuck with it. It's like I have to try split this cake to the devs so that they stay content and I do all the unglamorous work.
ATotalCassegrain@reddit
Let us know where this is so that we can sign on!
This over-specialization within the dev community was a result of when we were taking anybody and everybody onboard, and often people only knew how to do one thing.
Let's get back to actually being like other disciplines and having a broader practical knowledge base.
UsefulSimple6482@reddit
Yes but you end up being very average at everything. It's like saying why hire a plumber and electrician when you can just hire a handyman to do both. It might work but they might burn your house down or flood your bathroom
quentech@reddit
This just isn't true, not in my experience.
It's not "Jack of all trades, master of none," it's "Jack of many trades, master of some."
And it's less like an electrician vs. a plumber and more like a plumber that prefers to braze and solder and one that owns a full set of crimp tools.
Chwasst@reddit
Kind of disagree. It's easier to iterate, learn on the job and improve my "average" code over time than to get a broader understanding of systems and architecture when needed. Plumbing and software development are completely different domains too. I'd argue that fullstack development also teaches you more about the business value you actually deliver.
Or maybe I'm talking bs pulled out of my own ass and I have biased perception. I just like seeing the whole picture better, instead of isolating myself within a single piece of the puzzle.
stevefuzz@reddit
Agreed. I don't love doing everything, but, that doesn't mean I'm average at it.
sharpcoder29@reddit
This. I don't understand why we have separate people who only work on devops pipelines. The team should be responsible for everything, even monitoring in production. If you have a good tech lead they can fill in whatever gaps are needed.
morswinb@reddit
it's so your team of 5 does not spend half of the time debugging the old project pipeline while building a new one for the next year's project.
At some org scale it becomes more beneficial to have dedicated teams for shared infrastructure.
No-Economics-8239@reddit
It's a spectrum, not an all or nothing negotiation. There are obviously benefits from having a team that is completely familiar with all aspects of the application life cycle. But that significantly increases the breadth of knowledge we expect any given dev to learn. Which obviously decreases the overall depth of knowledge they will gain in that time.
And we can certainly acknowledge that depth comes with niche benefits that can be occasionally very beneficial but tends to involve edge cases that can be more niche than common. And those meetings from the Before Time with a table full of experts of their own systems but with no real understanding of anyone else's were extremely frustrating as each argued for their own requirements and no one had a clear vision of what trade offs would be the most optimal.
Even so, having an expert you could reach out to that could quickly address whatever edge case had you stumped was a nice perk, and I miss it. All these generalists have more utility, but few kids today seem to see the value in exploring deeper beyond their own use cases, and I miss when that curiosity used to feel more common. Of course, I could just be old and curmudgeonly and pining for the 'good old days' that never were.
AchillesDev@reddit
Any early-to-mid-stage startup works like this.
AvidStressEnjoyer@reddit
This is how it has been at my last company, and I frankly enjoyed it, loads of learning.
What I am finding now that I've been retrenched is that most companies don't understand generalists. I was turned down for a frontend role because I didn't list a specific react library that was mentioned and I was turned down from another backed role because I've used AWS and they use GCP.
I guess the point is that if you're trusted they give you more to do because you are more capable, but the market seems to favour hiring specialists.
seeSharp_@reddit
Nice username
eggrattle@reddit
To the company that turned you down because you know AWS and not GCP, that's their loss. Having spent multiple years in both, GCP is a far easier stack than AWS. Going from AWS to GCP is easier than GCP to AWS.
AvidStressEnjoyer@reddit
Yeah I know, it’s an indicator of either vastly inexperienced technical leadership, hiring manager, or hr.
It’s all good, I’m sure I will find something right at some point.
superdurszlak@reddit
I have a bit different experiences with specialization, or lack thereof.
First of all, wherever I came in my \~8 years, specialization was either already gone, or fading away, or all specialist roles were taken and you were to be the jack-of-all-trades sort of engineer. That being said, the hiring process rarely kept up with that shift and you'd apply for a specialist role knowing quite well you'd probably be getting thrown around.
Second, oftentimes this kind of generalization was simply in demand to unblock teams' work. Say, we need a pipeline for our project. We can either send a Jira or Zendesk ticket, go through 3 rounds of approvals and signoffs, and then wait 3-4 weeks for our busy DevOps team to set up a pipeline for us, or simply have someone on our team who doesn't mind to get their hands dirty with setting up pipelines. Likewise, you may have a person who is knowledgeable about databases so that you don't need to bug DBA team and wait for a response unless necessary.
For team operations, it's not realistic to have everyone do everything, but it's beneficial to be qualified in and own all critical specializations as a team - and own the product end-to-end rather than by layers.
With layered division of ownership, it takes forever to deliver a minor change, because it needs to be agreed between, and accounted for by multiple teams, take their capacity into account, meetings need to be arranged... etc.
On the other hand, if we as a team own a specific feature or sub-domain from the UI through the backend to infrastructure and databases, we don't really need to lose our nerves going through back-and-forth between 5 teams affected by a new feature request, nor do we get swamped with change requests in, say, 40 different backends across the org, just because we're "the" backend team.
CrikeyNighMeansNigh@reddit
I too love working like this. I don’t want to just do the same thing everyday, I like getting new experiences. Yes, there are benefits to specialising, but with this model, you have a developer that can work on a wider variety of projects, which means you’re a little less likely to have to lay them off because you’ve got more options for switching them into a different role.
OdeeSS@reddit
At my current place they seem to think they can cost save by having devs absorb every roll.
They got rid of uat testers, developers do it. No more dev ops, developers do it. Laid off all agility earlier this year, develops do it. Phasing out L2 currently, developers do it.
I personally like running and owning an app from start to finish, except they keep giving smaller and smaller teams more and more apps to manage.
Fun times.
BrokerBrody@reddit
The rise of cloud computing severely reduced the need of specializations (Ex. Managed databases eliminated the need for DBAs, network security has been extremely simplified, etc.)
A knowledgeable Cloud Solution Architect can generally handle many/most responsibilities at a level acceptable for a non-tech company with the assistance of the cloud platform.
Mountain_Sandwich126@reddit
Jack of all trades, master of none, but oftentimes better than a master of one
That's the full quote.
the_quiescent_one@reddit
Yeah. But if you have knowledge/experience of UI, backend and devops . You get the question during promotion. "I don't see any special expertise on something. Why do you want me to promote your sorry ass? "
This was after 1 award, multiple client appreciation in UI. Again in second year another quarterly award , multiple appreciations from client, business extension, specific mention of my project in APAC level meeting due to no errors in UAT or client testing. In other quarter devops guy up and left , I was left to handle the pipelines for another project. Received another award for that. Did some testing too, when testers were out getting married or on maternity leave.
Now after 3 years when I asked for promotion. They pull out this shit.
nachose@reddit
Not trying to be offensive, or anything, but I am not very smart and I noticed that 20 years ago.
OldAssociation2025@reddit
I think that's better, honestly. Chasing down overseas teams just to set up a simple build pipeline sucks.
OutOfDiskSpace44@reddit
Data scientist and IT are one person departments at many companies now. It's shocking, the bus factor is 1 in roles where it really shouldn't be. When there was too much specialization it led to a proliferation of tools that each have their own nuances...but the opposite of extreme generalization? Where everyone only has enough time to get a shallow understanding of things? It's a disaster waiting to happen.
Personally, since I started my career with contracting, I'm used to knowing that I, as one person, need to be able to tackle all the roles and get _the thing_ into production at any cost, in order to get paid by the client. At regular shops, the specialization helps so god damned much: file a ticket for new database table, have a QA crew go through the UX meticulously, have an expert dev ops engineer to write the terraform.
slakmehl@reddit
Having worked at a small company that does lots of products on 1-2 pipelines, being responsible for the entire stack is all I've ever known.
I knew that there were "DB" guys at other companies, but it was 10 years before I was even aware that there was a front end/back end distinction.
I suspect it's also what pushed me towards model-driven engineering and domain driven design. Having to be responsible for the total vertical meant that I absolutely could not be futzing around too much with database tables, or writing complex ORM or data serialization logic. I desperately needed that stuff to be done for free, and the only solution was to encode the principles of how the model behaves - the shape of the data - into the model itself, and then write general or reflective layers that require no updates as the domain model evolved.
It's only now - 20 years in - dawning on me how uncommon my experience is.
Anyway, it's also why when I started working on independent projects, I needed a model-driven framework for modern web stacks. For years in the 2010s I had used the Eclipse Modeling Framework, and nothing like that existed any more. So I made one and released it on github last week. You specify your domain model, serialization and MongoDB persistence works for basically for free, and you use the same entities across your entire stack (even if it's a Java backend, since it is a port of EMF and fully compatible with it).
I'm kind of hopeful that stacks can just move in this direction of not needing so much fine-grained expertise on the different computing contexts, and just using a common model across everything. Even in large team, it has to be nice if everyone can just have a shared mental model of what your domain data looks like.
aznshowtime@reddit
The issue with model driven engineering is that the stack needs an update. Because the stack is automated, it takes a long to update to anything. My MDE professor is very dedicated to this field, but after AI, hopefully we see some much needed renovations from this side of computer science.
slakmehl@reddit
This is another huge reason I ported it to TypeScript. It is a single small library, VS Code extension, and zero dependency on Eclipse (which was great in its time, but has gotten so slow and ponderous).
The link in my original comment shows how fast it is. 40 seconds to edit ecore -> regenerate code -> full stack from DB to UI supports all of your new entities and structure, since they are all built reflectively.
Darth_waiter2@reddit
In the long run wouldn’t it cost a lot more to fix issues or keep legacy apps running? Because companies want to maximize shareholder profits now and squeeze every single thing out of the workers, in terms of code maintenance this sounds like it’ll create a ton of hard to manage code over several years requiring specialists to come in to either fix it or start from scratch.
sleepyguy007@reddit
big companies figuring out what startups used to know how to do. get the smartest people and make them do everything.
Yeah I'd rather just be doing my very specific task if I'm at a big company and just trying to get a paycheck. But ultimately smart people know that , if you are realistic about it, a great front end dev, or great backend dev is probably still better than having 2 mediocre ones. I've worked at enough large bad orgs to know that honestly just taking your smartest people and stretching them out over multiple roles at least in the short term or even in the long term if you pay them a ton, is better than carrying a bunch of meh salarymen specialists, who turn out are actually worse at their speciality than the one god tier guy who does everything can do their speciality
Huge-Leek844@reddit
Not every company or product needs highly specialized roles. Some systems just aren’t complex enough (or no one cares) to justify dedicated Database experts or DevOps teams. In those cases, having generalist developers who can handle a bit of everything actually makes sense, it reduces overhead and can speed up delivery.
The real problem is when managent doesn't understand when specialization adds value and when it doesn’t. Trying to cut corners by collapsing roles in a complex system is a recipe for burnout and bugs. But in simpler environments, it might just be efficient.
fragglerock@reddit
"Full stack" has been the demand for a decade or more in lots of places.
avoacado1010@reddit
I think with Agents and LLM , the age of specialization will come back. Coding is mostly taken over by assistants. The stuff the matters most now is how much accuracy you can bring in that error prone basic development done by assistants and what kind of use-cases, high roi problems a SME can think about solving. I’ve seen entry level jobs decreasing day by day. I do understand your point on expectations wrt knowing 4-5 diff areas but hey this is not new and sort of got adopted in past 10-20 yrs but i think there’s hope for SME’s.
couch_crowd_rabbit@reddit
The specialization has shifted into who they hire. Due to larger talent pool looking for work we're back to stupid games like "20 years next.js experience" then they want you to do all the things since they're hiring less. Industry experience in hiring is now the specialization since recruiters think they can summon someone with x years exp in a niche industry using the same backend that they are told the company is using.
CreativeGPX@reddit
I think my current role is a really great example of the good and bad things about specialization. I work in a large organization with a big engineering division that has many specialists. They put out stable, reliable and massive projects pretty reliably, but they are relatively slow and full of bureaucracy. There are people who are bottlenecks because they're the specialist in X. There are delays because specialist team X doesn't know what specialist team Y is going to be able to do. Because they're very specialist oriented, getting anything done takes coordination between a lot of different people. But because they have lots of specialists and bureaucracy, they do have a lot of expertise and rigor.
My role basically exists explicitly to counteract that. I am a generalist who works independently of that division, directly under the executive leadership. There is a very broad range of topics that I have professional level experience and abilities in. I can sit with artists and talk their language. I can sit with lawyers and talk their language. I can sit with cloud architects and talk their language. I can sit with devs and talk their language. Etc. And if any of these people is too busy or is on vacation, I can step in, understand what they were doing and fix problems. Because of that, I get pulled in to save the day from the specialists in mainly two cases: (1) when something needs to be done very fast or (2) when a project is lost in bureaucracy because it requires the coordination across too many specialties. There are times I've made something in a week that the specialist organization took many months to do. There are times that I've taken a project that got lost in bureaucracy for years and banged in out in a year because I could meet with every single stakeholder understanding exactly what they need, what they are doing, etc. and because if they cannot do it I can either do it myself or articulate clearly to managers or contractors exactly what is needed. So, me being a generalist has been super valuable and gotten us out of some big jams.
As the generalist, I'm the get-it-done guy and will not stop for any reason, whereas the specialist division is more of a "stay in your lane" people who can get tripped up because of that. That all said, notice how both exist and my leadership isn't looking to eliminate either. It's not that everything goes to people like me because the generalist way is best. It's not that everything goes to the engineering division because their way is best. It's a tradeoff and it's an active choice as to whether certain jobs go to me or them or whether we work together on it.
To put all of that into specifics... A specialist oriented team have some potential disadvantages:
Meanwhile, having specialists can have advantages like consistency, depth of knowledge and even saved efficiency that comes from a person doing the same kind of work every day rather than needing to "get back into it" and keep changing hats.
Michaeli_Starky@reddit
I actually see the opposite for larger projects: BE, FE, QA, BA, SA, DevOps, DMs.
hibikir_40k@reddit
I'd argue a modern team should have a variety of people. Without some jack-of-all-trades people, you will run into sequencing problems when there's a lot to do on one kind of skill, but little on others, but you want to have some specialists for the things that are actually hard, and to have someone to ask.
The people who are actually good across stacks, or can handle from devops to frontend also cut down on communication: Nothing like a change that requires 5 lines of changes on each of 6 systems, and therefore needs to have 6 people communicating, instead of it all being done by one guy who understands everything in an afternoon. The problem gets even bigger in large companies, as the bureaucracy naturally increases. Maybe the frontend team and the devops team only have a shared manager 4 or 5 levels up, making organization extremely slow and expensive.
So getting rid of an infrastructure team as a concept is probably helpful, but getting rid of everyone in that team, not so much. You should have some experts.
Fidodo@reddit
Isn't that basically what a "web master" was? Have the roles changed or have the tools changed? There's still lots of specialization at companies large enough to warrant it, but the specialization of the past is more accessible today so the full stack "web masters" of today are doing the kinds of tasks that used to be specialized and harder to set up. Now the specialized roles are doing work at an even greater level of scale.
dijkstras_revenge@reddit
A jack of all trades is a master of none, but oftentimes better than a master of one.
Rymasq@reddit
it sounds like your company.
but imo the lines between data engineer and back end developer are getting more blurred. Also the idea of DevOps being purely pipelines is outdated. DevOps teams are SRE, pipelines, infrastructure all wrapped together, especially in smaller orgs.
Front end is the one position that is going to get killed by AI
RobertKerans@reddit
Front end is just drawing with crayons, only made hard due to overcomplication rather than because it's inherently hard. Good job AI is getting rid of it, letting real devs concentrate on real dev work that's much much too difficult to automate with AI
PixelsAreMyHobby@reddit
You are exactly what’s wrong with this industry – constantly bashing, undervaluing frontend and having zero expertise in it. Yet having the audacity to judge about it. 🥱
RobertKerans@reddit
How on god's green earth did you read that and think "he's serious"
PixelsAreMyHobby@reddit
My guy, how should I know that was sarcasm? I met too many people (on Reddit) who show exactly this attitude.
Just do you and everyone else a favor and put a damn /s at the end…😅
RobertKerans@reddit
Fair dos
IEDNB@reddit
Hard disagree that frontend is the one position to get killed by AI.
What makes you so sure about that? Do you know how bad AI is at understanding and catering for the endless different user interactions and edge cases that occur at the client? What is so special about the backend/DevOps that makes these positions safer?
Rymasq@reddit
Front-end has almost no persistence, it’s a gateway. The back-end handles persistence, the servers, the repos, these are all objects that carry a high degree of risk when it comes to letting an autonomous vehicle work with them. Obviously you can have AI do some of the work, but no company with real risk management is going to let it drive by itself. AI magnifies output, it enables swift refactoring and low effort MVPs, it doesn’t get close to the end state and it’s not going to be able to for quite a while unless they actually fix the deterministic learning issue which is a fundamental issue created by the very hardware AI runs on.
Ariandel2002@reddit
As a BE, making nice looking UIs is gonna be easier if you just give the design to the AI and currently is definitely easier. But, frontend is not just that in the modern world.
nobodyfromnomansland@reddit
Interesting take
DigThatData@reddit
I think specialization will never "die" as a consequence of just how complex systems work. niche specialization is just something that happens in ecosystems that persist for long enough to evolve significant complexity and diversity.
The problem here is not that your engineers aren't specializing, the problem is that your HR department isn't doing a good job mapping roles and responsibilities.
Why are individuals working in isolation? You can't know everything. I wonder if maybe your organization is conflating delegating responsibility for making sure a ticket gets closed with performing all of the labor associated with a ticket. If developer A is assigned the ticket "add feature Y" and they are bad at ci/cd so they create a subticket and delegate that part of the work to someone who understands that system better, the feature ticket still gets closed.
justwinning1by1@reddit
same everywhere.. I have to do now so many things which I had never done. Expectations from devs is now over the roof.
Moreover, forget about these dev related tasks.. you have to come with new ideas to include AI in your project even if it doesn't require or customers want.
etcre@reddit
But bro so is REVOLUTIONIZING THE WORLD don't you know?
kevinossia@reddit
Nah. Specialization still exists. I don’t do any of that shit. I have teammates for that.
Find a better company.
BarfingOnMyFace@reddit
Better… bigger… the terms can be interchanged here a bit. Large companies with specialized roles is practically the only way to get work done in a number of cases. Smaller companies, or companies that tend to do lots of small scale app development for clients, benefit from being “full stack”. Quotes necessary, as most people I’ve met that are full stack tend to be rather weak in many categories. But point being, at such companies, there might not be room nor a place for specialists (or too many of them)
Chwasst@reddit
Honestly? I love this. My ADHD makes it impossible to specialize in a single domain deep enough to be considered an expert. I love to hop around frontend, backend, devops stuff.
The only problem is the timeline didn't change - they still expect me to deliver the work of 3 different roles within the same deadline as before. This is the real issue.
kicharee@reddit
Lol I was going to comment the same thing. I have adhd and I love having varied things to do. At one point I only did front end and that was really boring.
I don’t recognize this as a recent trend at all. I started as a developer in 2016 in a team which had 4 developers and we all did everything. Actually I that this is a great way to work. You eliminate the bus factor and also get to learn and get experience about multiple things.
Live-Box-5048@reddit
I don't genuinely think this is the case. At my org, and others from I know, the specialization is still a thing. Besides, I personally don't mind that much, as it keeps the work diverse.
primacoderina@reddit
Huh, I've experienced the opposite over time. The fact that "full stack" developer is even a word that exists. No one said that 15 years ago because you were allowed to work with the whole thing.
Now development has turned into an assembly line and I'm forced to be a "back end" or "front end" or "dev ops." Recruiters only care about if I have experience with a tiny little slice of the stack.
I used to love my job 10 years ago, but this absurd level of specialisation has turned me into a factory worker who pulls a lever all day. I hate it now.
BarfingOnMyFace@reddit
I somewhat relate. While I like focusing on my particular role as a predominantly backend developer, I also like to have my hands in everything. I’ve lost an interest in working for the man, tbh. I hate it now, but because I’m tired of sprinting to a future that never actually happens. by the time we get there, the goal has morphed, and “adding value” now means something else.
Myself or a small team of peers working together on our own projects, it’s the only thing I want to do now. I want to be in control.
Idea-Aggressive@reddit
If you were looking for a job position you’d notice that most are looking for specific roles.
Blankaccount111@reddit
It seems same as always to me. Ever since the term "Full Stack" was coined poorly run companies have been chomping at the bit to only hire these magical make me rich magic wand developers.
The same company will have 20 different law firms on retainer for specializations but for some reason everyone in tech is expected to do the equivocal amount of work as those combined companies.
So many devs put up with it by working 80+hr weeks to keep up that it has become the norm.
markekt@reddit
I like being full stack. Just don’t expect me to do front end design unless you want it to look like it was made by a 5yr old.
swrosk@reddit
I was scrolling to see if someone had already mentioned this! I know many devs might have designed UIs, but not that many that have done it well. That and technical dept can really make life difficult. I might have had bad luck, but design really is a separate skill.
Last time I designed a front end I made it clear that my best efforts, erm...., would not be best in class. Turned out useful and ok in the end, but nothing the user would love.
markekt@reddit
My org has a dedicated UI design team. They are proficient enough in JavaScript to make a working mock of a UI, which the devs take along with the CSS they fully provide and implement in react. Makes a world of difference in the quality of the UI’s we deliver.
swrosk@reddit
Wow! That sounds so productive and efficient.
git_pull@reddit (OP)
That's kinda the problem. No one on my team is great at UI development and when I tried to hire a specialist, the other panel members rejected him because his 'focus was too narrow'.
softgripper@reddit
One thing that has changed drastically over the past 25+ years, is that web development for both front and back,, is significantly simpler and there are established patterns for most common problems.
25 years back - browsers sucked and no one knew how to use CSS. You had to specialise to do frontend - there was a lot to learn!! There were no frameworks!
Now you grab angular/react and sprinkle some flexbox and you're done. The complexity has shrunk so much, as to be a non issue.
The same can be said for backend.
You configure a some cloud infra, then you're off to the races.
This frees up enough mental capacity to handle front and back.
It is certainly not as cut and dry as "jack of all trades, master of none". This may have been the case at some point in the last couple of decades but not now.
Now it's "ok, I tell the computer to work like this in the browser, and to work like this in the server".
It might be 2 languages, but those problem spaces are closer than ever before.
Neuromante@reddit
To all the people that say that this "gives you a lot of experience"... is meaningful experience? Is an experience you would show on your CV?
In my company have been pivoting towards that, and the "experience" I've got in fields where I'm not specialized is putting out fires, tinkering with pet projects of other people that ended up in production and are a complete mess, and behold how people become more worried about the whole lifecycle in detriment of actually writing good code and making it readable.
I've repeated this a million times on interviews: While I can "get my hands dirty", jack of all trades, master of none. Also, I do like to write code and build things, but all that environment/docker/deployment/etc crap is as interesting to me as becoming an accountant.
dhir89765@reddit
Thanks to framework improvements, each part of the stack is now easier to learn. So it's easier for one engineer to be productive in multiple stacks.
Sakura48@reddit
Not a problem to me, bc I also want to do everything myself.
Round_Head_6248@reddit
If you love wastefulness, mediocrity or worse in your entire business, then generalists are the solution to that.
TomOwens@reddit
Some degree of specialization is natural. People have things that they are naturally better at and things that they are more interested in. Pigeonholing people into their specialities leads to overhead in managing work and dependencies. Not recognizing specialization (or the need for specialization) leads to not understanding the skills that you have and not having the essential skills needed for the work.
It seems like your company may have gone too far. Expecting everyone to master everything is unrealistic. Given the breadth of knowledge and skills, even expecting everyone to have deep competency in everything is unrealistic. However, encouraging people to have a few areas of deep expertise and be able to contribute in multiple things is good. Making sure that you have enough people with mastery of the skills means that you have people who can teach and train others to give them competency.
WranglerNo7097@reddit
Yea, I thought it was just me, but my last 3 roles (\~12 YOE) have been:
- Android SDK developer (no UI at all, more like developer tooling/platform)
- Android + iOS "Feature developer" (UI work + the same developer tooling/platform work)
- FULL stack (RN feature dev + iOS and Android native work occasionally + application server + BE service work)
Honestly, I kind of like it? I was getting anxiety about getting too holed into a specific mobile platform, career-wise, and now I feel like I can actually solo a real production feature which is rare... On the downside, sometimes I realize I have 5 IDEs open and my computer sounds like a jet plane warming up :|
eclipse0990@reddit
The death of specialization: are you calling my procrastination skills general?
Mr-Canadian-Man@reddit
Been like that at my company. Personally I find it pretty awesome, feels like I could be a one man startup at this point
stevefuzz@reddit
I tried that. It turns out adding on the responsibility of being a business person sucks
stevefuzz@reddit
Lol that's me!
jp2images@reddit
What was old is new again or maybe it’s the new old thing. I agree with many of the comments. It’s the wrong direction. It was easier to be a generalist 10+ ago. Today applications are so much more complex and security so important it’s easy to get it wrong. Even with AI.
Educational_Pea_4817@reddit
yeah and i like that.
i enjoy having full access to the stack. less red tape, less bullshit. it means teams can be small and easier to organize/manage.
it also means my team can take on any amount of work without having to "balance" out stuff.
if a project is front end heavy my team of 5 can ALL do it. same if its backend.
if the current dev cycle calls for testing automation or infrastructure setup/deployment we can all do that too.
good companies that support a proper full stack environment usually employs a plethora of ways to insure that their developers are trained and have the proper knowledge to actually be full stack developers.
so whats the problem here?
GrogRedLub4242@reddit
DBAs. QA
daemonengineer@reddit
Over the last 3 years I did DevOps, backend, Generative AI, architecture, product, and all that while leading 3-5 engineers. I am a principal engineer; its not expected from every developer, but for staff and principal engineers its considered ok to have more than one hat.
Although I am setting boundaries: for a given project I try to have one primary role, and I am vocal about every other role being detrimental to my performance. And I am trying to delegate as much as possible. It works well because it helps my to keep a good 360 understanding of each piece of the technical stack, but it can be pretty hard sometimes.
thomasfr@reddit
It might have reduced but it is far from dead.
There are still a lot of positions that requires so much knowledge about some specific math or scientific subject that it's some times is a one or two person team in the whole company that only does a specific kind of work.
Webdev as a whole is very easy compared to any heavy domain knowledge though so it might work there.
deZbrownT@reddit
Yeah, I have been working like this for decades now. I can see how that might be unappealing for folks who are into specialisation but each approach has its drawbacks. I prefer full stack approach since it gives me broad range of experience and I can use that in my projects or other customers projects.
RandyHoward@reddit
This has been happening in the industry for quite a while. You'll find that larger corporations tend to still have specialist teams, while smaller companies tend to prefer generalists. This is largely due to cost. It's much cheaper for a company to hire a few generalists than it is for them to employ teams of specialists. I don't think one way or the other is necessarily bad, what's bad is when a company doesn't employ enough people. I've seen small companies hire a single generalist to do everything, but that only leads to burning out that employee. Or companies that have specialists, but only a single specialist in each area of expertise. That also leads to burning out those specialists.
zattebij@reddit
I think this is the best way of organizing work, where possible. For some deep specialized technologies it may not be possible, but even then developers can learn these technologies over time.
Having the people, responsibilities and tasks segmented by domain c.q. use-case is imo better than having them segmented by specific technology (frontend/backend and their specific environments and frameworks).
And I don't know about software engineering studies nowadays, but 20 years ago when I was still studying, the emphasis was also more on generic things like algorithms, data structures and design patterns, rather than specific programming languages, software libraries and components (specific tech implementations will be replaced by newer ones, but the basic principles of software engineering will remain, and remain applicable to different or newer tech).
Most times, a developer with deep knowledge about business domain X will not just know best how to implement X in backend, but also how X can best be presented to a user, or how domain X interacts with domain Y. There may be a dedicated UI/UX specialist to ensure consistency across the frontend, but that specialist role would be mostly advisory and documenting; implementation of frontend for use case X would be done by a developer with broad knowledge about X.
Some advantages:
Developers become less restricted when learning multiple technologies required for implementing the software responsible for their domain. Gradually, everyone can add to their knowledge. Of course, people can and will still have their areas of expertise in specific technologies, especially when getting familiar with new domain knowledge and any associated new technologies required to implement them, but the point is that there is a continuous process of sharing knowledge and learning new tech. This benefits everyone (both the dev and the company) because broad knowledge will unlock insights about generic ideas like design patterns and algorithms, which then will improve performance for any specific new tech. You see the same thing when learning foreign languages; the first one or two other than your native language are difficult; then you start seeing patterns and learning further languages gets progressively easier. Of course, the company needs to be willing to invest in its people to get this longer-term ROI.
Requirements (and changes to them) from PO and stakeholders are normally domain (not implementation tech) requirements, so this method translates to a more efficient process. A team is then assembled based on domain knowledge, not on tech knowledge. And developers with deep domain knowledge will be better at judging the effectiveness of various competing technologies that may be used to accomplish the use case in that business domain. Developers with strict technology specializations will mostly keep using the same tool without broader introspection whether that is actually the best way to accomplish the requirement.
An advantage for individual developers is that they are staying more relevant c.q. valuable if they are staying up-to-date on various tech and are more adaptable. And if they are knowledgeable about one or a few segments of domain knowledge, they are also more valuable to that company where they work specifically: a dev specialized in tech X can be replaced by another tech X specialist, but someone who can provide value for business domain Y is more valuable and less quickly replaced.
pwd-ls@reddit
I’ve actually been pushing for this to help grow skillsets and verticality over the stack, should I not be?
edgmnt_net@reddit
Having well-rounded devs / engineers is a good thing. What you're saying isn't necessarily specialization, because highly-specialized engineers are a rare and valuable commodity. But they're rarely specialized to the degree that they don't really know much outside their areas. Most of the people I met who were highly successful had both considerable depth and breadth of knowledge, in various proportions. It's unlikely you can perform to a very high standard just doing one thing, you'll lack enough context to do so.
If your observation is accurate, maybe companies are transitioning projects away from being just feature factories and away from trying to scale work purely horizontally and cheaply.
Personally, being a generalist (relatively) helped me move across various dev fields pretty easily. I can access a much larger variety of jobs, which means more opportunities. I can also connect things across different fields the way others can't (which is useful if, say, you're reading a paper on browser security and have to consider things all the way down to the CPU, if timing attacks are mentioned).
lunacraz@reddit
i think theres a good balance of this. i do think specialization is needed - once you get to a certain seniority it's expected
however - i do lament engineers i meet who are SO focused on one part of tech they lose sight of the others. i think it's a good skill if you're a FE specialized engineer, to how the backend works, how builds work, how CI/CD works... you should never build in a vacuum
the one thing about dedicated devops is... a lot of the times issues that they get pinged it (i'd say even like 60-70%) are code related. very very rarely did some infra issue occur - either an unoptimized query, or a bug causes infra to start sputtering
but to your point, i expect this more from a smaller company. a large company should be pretty specialized (user management group, streaming services etc.)
Confident-Ant-9567@reddit
The number of frameworks and abstractions that make development easier made this a reality. When I joined the industry developing for the client also involved tasks similar to game development; tracking memory, optimizing algorithms, hunting race conditions… All that is alien when using React. Same for services, we were using our own models for AI prediction for scaling server instances, that is all abstracted away now.
throwaway0134hdj@reddit
Depends on the company and how large the project is.