6 ms·
Ask HN: Is it better to generalise or specialise as a developer?
I’m a freelancer, and very much a generalist. I’ll often say I can do something I haven’t done before (which has proven to be true) as an excuse to learn something new.
I find different kinds of projects keep me interested. One month web dev, next month apps, the next month microcontrollers, next automation, etc.
I often hear it’s good to find a niche. Wondering if anyone can speak to the benefits of doing so?
Thanks!
- gscott 5y agoIt is a loose loose situation. You either are so specialized no one will hire you because you don't know enough generally or you know too much about too many things and they feel you will be bored doing one thing all day. I would suggest you find something you like, find ways to contribute for free in forums and code given away for free so people will look to you as an authority and flip that into finding work.
- hcayless 5y agoNiches can certainly be profitable and stable, but I feel like being a generalist may actually make it more likely that you’ll stumble across a niche or two, simply by being exposed to more ideas.
- stormthebeach 5y agoCompletely agreed. Cal Newport proposes in So Good They Can't Ignore You that valuable (and therefore rewarding) specialties are only accessible by expanding your "Adjacent Possible" - you can't jump straight into truly niche topics because they are the top of a pyramid which requires a wide base.
- sebmellen 5y agoI will emphasize this — be a generalist until you find a niche or specialization you fall in love with. I have a friend who was a T-shaped generalist, stumbled into cryptography by working on some OIDC server, and then followed his way on to specialize in key interchange mechanisms (not sure exactly what his title is). That’s his job now, at a top ten US tech company, and he’s doing great!
- geocrasher 5y agoTwo things. First I'm not a developer. Second thing is I'm a generalist in every sense. And so I'm going to offer my opinion: generalists get things done no matter what the circumstances are. I'm not going to say anything bad about people who specialize because there is definitely room for that. But it sounds to me like being a generalist is working well for you so I change it? You've certainly heard the phrase "a jack of all trades isbetter than none" but the rest of that says "but often better than a master of one". If anybody ever questions why you don't specialize in one particular facet of your craft, you might remind them that being multi-dimensional in your skill set has often led you to solutions the specialist might not come up with. The amount of cross-pollination between specialties can often lead to better results in the long run.
- sebmellen 5y agoI’ve also heard: > A jack of all trades, and master of none, but oftentimes better than a master of one.
- geocrasher 5y agoIndeed I'm pretty sure I misquoted it. Thanks for the correction.
- halfmatthalfcat 5y ago> generalists get things done no matter what the circumstances are If the goal is to ship something without shipping it correctly (technically sound), sure you can "get it done" in the absolute sense. But you'll potentially end up creating a house of cards or untenable tech debt due to poor architectural decisions due to lack of depth with the underlying technology.
- pts_ 5y agoMy experience is you generalize and clients start low balling finding any number of faults AND demands. You specialize and you can be rock solid and demand solid rates. Please note that this is not an endorsement to become outdated but to evolve and specialize in current practices. I too love all things software but I have learned to conserve it for my own projects, not for my services.
- taurath 5y agoThere’s 2 types of specialization, and I’d argue it’s good to choose one, and be decently familiar as a generalist on other things. One is technical, along the lines of web dev, systems programming, integrated, etc. The other is domain specialization - whether that be a coding domain like billing, UI, microcontrollers, or a business domain (IE industry) like shipping, business to business productivity apps, entertainment, etc. It can be very easy to swap jobs within an industry. Likewise with coding domain. If you’re bouncing around all the time with no focus, it can end up that you will be less of a fit in a lot of places you work at. Still a very strong generalist is still quite impressive.
- sebmellen 5y agoMy answer is it depends on what you want to do. If you want to work at a FAANG, specialization is the name of the game. Find a niche like time-series databases or something, and work on that. If you want to work at a smaller company or found a startup, being a generalist is a great asset. It also puts you closer to the top of the hierarchy if you can make yourself invaluable to the business/yourself by being a “Swiss army knife.” By that, I mean everyone wants you around, because you can probably solve upwards of 90% of the problems that arise. Of course, you can’t be a full generalist, you will end up having some language or tech stack you’re more adept in. That’s fine. You’ll probably end up being “T” shaped. But to reiterate: if you want to make good money and you love a niche topic, specialize in it. Then go and work at a company with the scale/needs for that specific niche. Otherwise, if you’re a generalist, you’re better equipped to handle a vast multitude of problems, build initial solutions, and then hand them off to specialists as your company/project grows. Edit: You might also just be a fox and not a hedgehog — that’s what I would consider myself. An interesting read: https://en.m.wikipedia.org/wiki/The_Hedgehog_and_the_Fox https://en.m.wikipedia.org/wiki/The_Hedgehog_and_the_Fox.
- rtlfe 5y ago> If you want to work at a FAANG, specialization is the name of the game. Strong disagree. Most FAANG dev hiring is through generalist pipelines, and plenty of L5/L6 devs move around between different domains and tech areas.
- sebmellen 5y agoI’ve never worked at a FAANG, so I may be mistaken. What I do know is that all my friends/acquaintances who’ve ended up at FAANGs have branched deeper into various niches than would be possible at smaller companies. For example, at a company with 50 people, it might be unreasonable to develop hyper optimized native apps for each platform that necessitate a specialist in memory management optimization in Swift. (This is a real example.) At a FAANG, jobs like that seem to be relatively common. Scale brings challenges that the vast majority of businesses don’t have to deal with. These challenges require solutions the vast majority of companies can’t afford to build. The only other field I can think of that requires specialists to the degree FAANG-scale companies do is academia, which is ridiculously hyper-specialized (out of necessity). I’m not sure about the hiring process... I do know about the prevalence of “leetcode” challenges, though, which I suppose are rather generalist.
- usui 5y agoUnless entering a subdomain diametrically opposes the entering of other subdomains, the way I always approached this question was that of questioning why it's necesssry for them to be at odds with each other. I felt that over the years of meeting tons of people whom I felt were quite "specialized" from my point of view, it would turn out that these rockstars were also generalists in that they picked up so many things across lanes that they were able to develop their niche or what I thought of as their specialized skill. Sometimes having a lot of general skills and making them work together in a novel way could arguably be a form of specialization, thus establishing a spectrum or cycle of development At risk of oversimplifying: Einstein endeavored on his established specialty in physics, but everyone would agree he was also just really good at physics in general if considered by generalists or interdisciplinary scientists, right?
- vincent-manis 5y agoIf you do specialize, it's critical to develop and follow a serious learning plan to prepare for the time when demand for your speciality lessens. Mind you, that's not a bad idea for generalists, too.
- anon_tor_12345 5y agoI don't remember where I read this (or heard it) but someone said getting rich is easy: either be the best at something or be second best at two things. The phrasing is obviously just a little too neat but the point makes sense to me - someone that knows a few things very very deeply is just as valuable as the most knowledgeable about some (other) niche thing. Jumping around is fun (for a little while) but depth is what people really pay for eg how much could you charge if you could squeeze the last bit of latency out of some design that gives a firm an edge against their competitor. I'm sure people will claim that most business doesn't hinge on the margins and maybe that's true but there definitely are businesses that do.
- math 5y agoIn the context of a company, the higher up you get (on a technical track), the more you need to operate across different projects, technologies etc. - being able to jump into new things is mandatory/expected. But having deep knowledge in something important to the org gives you a foundation on which to succeed. I would say that specialising perhaps allows you to stand out more efficiently as a lower level IC.
- sidlls 5y agoNeither; or both: be T or ∏ shaped. Have broad, (relatively) shallow knowledge in many domains, and (relatively) deep knowledge in one or two that are complementary to each other, and for which your broad knowledge can be used to work with teams having more specialized understanding.
- dadoge 5y agoHa! Never heard of “ ∏ shaped”, but I think that’s the best way. Two areas opens up more opportunities both in your org/company and elsewhere.
- Zamicol 5y agoWell done. That's the best I've ever heard that said.
- cameldrv 5y agoI agree with this. Also, technological developments, business models, and fashions change rapidly. When the vertical part of your T starts to be in lower demand, you'll be in a difficult spot. If you go for the ∏ strategy, you have the ability to pivot your career towards the remaining leg, and hopefully start building up a new one.
- 1123581321 5y agoMy take is that you don’t have much choice. You can’t help but find these things interesting, and you’re presumably driven by your day job to excel at the specialties it requires to some degree. The most you can do is to shape your environment so that it requires you to do more specialist or generalist work through your job, or feed yourself with books that give you the urge to focus on more or fewer things in the rest of your time.
- whalesalad 5y agoBoth, but I’d go breadth first and then start going deeper into various topics as you need to. The trick is really learning how to learn and becoming an autodidact. Ultimately what is best is what will motivate you the most. You’re gonna get a lot of opinions here but you need to trust your gut. Do what makes you happy. If you want to learn it all - don’t deny that.
- MichaelMoser123 5y agomy two cents: ignore all this advise, and do whatever suites your character best. At the end of the day you have to manage in a demanding job, if you force anything down your throat that doesn't fit your character, then the result may turn out to be increasingly damaging down the road.
- Mandatum 5y agoOne persons generalist is another person's specialist. You could be a web developer, you could be a framework developer, you could be a EMCAscript developer, you could be a javascript developer, you could be a webasm developer.. If you like money, find a niche and "specialise" but to be honest you'll ultimately gravitate towards your interests even in that "specialist" field. Just work on shit you find interesting, the money will follow.
- xyzzy_plugh 5y ago> Just work on shit you find interesting, the money will follow. Unless it's video games, in which case pick something else.
- Mandatum 5y agoAlso don't work for consultancies for very long.
- idrios 5y agoI've never worked for one, but why not? Is it because you don't work on a project long enough to understand the consequences of design decisions?
- ipaddr 5y agoThey will teach you bad habits, pay you little and never train you. It's a good place to work on many projects and learn to not care if they fail.
- halfmatthalfcat 5y agoYou have to specialize in order to progress up the development latter (if you want to go the IC track). You wont get past Senior or even regular Software Developer if you don't specialize is something...unless you work at a place that rewards time-spent versus work product. The correct answer is both obviously but you will need to, at some point, specialize in something.
- Octoth0rpe 5y agoTwo comments: First, "One month web dev, next month apps, the next month microcontrollers, next automation" that is _incredibly_ generalist. You'd probably be better off specializing at least a little more than that. If you only were doing two of those, you'd still probably count as a generalist :) Second: I don't think there's one right or wrong answer to this question, but a generalist is in some sense a safer option. If you specialize, take care to specialize in something that will be around in 10+ years. Now would not be a good time to specialize in coffeescript or coldfusion for example, but specializing in Rust seems very safe. Specializing in julia, zig, or dart would be on the slightly riskier side.
- alfl 5y agoDepends if you want a job or a business. Employees do well specializing. Entrepreneurs have to be broadly competent.
- altitudinous 5y agoThere is more than two options - you can be anywhere in between - there is no need to choose one or the other. I find having a specific technical skill helpful in getting your foot in the door as employers are often looking to have their existing systems maintained. Other than that you can diversify as you want.
- jdauriemma 5y agoDo you find yourself doing freelance work in one or two specific industries or is your clientele generalized as well?
- lolinder 5y agoThe discussion a few months ago on the article "Short Fat Engineers Are Undervalued"[0] was really helpful to me in thinking about this issue. The top comment's perspective resonated with me: > The argument of specialist vs generalist is futile. They simple fit in distinct parts of the journey and evolution of a software product. > Generalists are highly valuable for many types of orgs and projects especially nascent projects. But sometimes you need the precise output of a specialist to achieve something. So, whether being a specialist or generalist is better depends on the context. In the end, it depends on what kinds of jobs you want to work on. If you enjoy working on the full stack, then there are still plenty of people who will want to hire you, especially smaller businesses. Larger organizations hiring a contractor are probably more likely to be seeking a specialist for a very specific job. [0] https://news.ycombinator.cdidam?id=26119087 https://news.ycombinator.cdidam?id=26119087
- shae 5y agoDon't be too broad, hiring managers won't know what to do with you. I have too many differing specialisations and interviews start with "what would you say you actually do?" People want to know which box you fit into.
- keithnz 5y agowhen you are a freelancer, having a niche really helps with marketing more than anything else, easier for you to find jobs and for jobs to find you. It's not really about "better" its all about what advantages there are to different things and what advantages do you want to pursue
- void_mint 5y agoI've never specialized. Each of my jobs has been in a totally different industry, and my role has been very different many times. FinTech/EdTech/Green Energy/Gaming/Insurance, and Fullstack/FE/BE/Hardware/Data/Game/Data Developer. Sometimes I get bummed at how deep my peers have gone in various subjects. Your brand kind of has to become "I can get production code working in pretty much any domain, but will be less great at hyper-specific areas of work". It's only bitten me once, and I even called out what was going to happen in advance and the employer just didn't listen. There's always time to change though. I am mostly motivated by making money, so I just learn as much as I can about whatever tech my employer is using, but sometimes I think it'd be nice to reuse some of this knowledge sometime. > I often hear it’s good to find a niche. Wondering if anyone can speak to the benefits of doing so? Being more knowledgeable than most people because you've taken the time to learn the stuff that's harder to figure out/more nuanced, is the benefit. Being a mile wide and an inch deep means your expertise is in the wide, but there are problems that need the depth. The job that I did not get was hyper-specific to the JVM, writing high performance Java, which I said prior to the interview I wouldn't be able to do (and I was right). If you're not interested in going deep on anything, don't. Keep chasing your interests. Just understand that the tradeoff is the lack of depth.
- block_dagger 5y agoDepends on your personality and career goals. I prefer to specialize 70% in my primary skill (Ruby web development) and spread the other 30% in other langs/topics.
- tkgally 5y agoHere’s my experience from a different field. I worked as a freelance translator—Japanese to English—from 1986 to 2005. From the beginning, I took whatever work was offered to me and ended up translating texts in a lot of different fields—business, advertising, engineering, public relations, etc. I didn’t know many other translators at first and just figured that’s what everyone did. Around 1995, though, I started to get to know other translators through online discussion groups and meet-ups, and I discovered that some were very specialized—translating only chemical patents, for example, or only corporate financial statements. The issue of whether to specialize or not was a hot topic on those discussion groups, with the specialists being especially fervent in favor of their choice. Their position was both that specialized knowledge is necessary to do good work in their fields and that, by being specialized, they could work more efficiently and make more money. The generalists, while recognizing the truth of what the specialists said, would respond that being a generalist allows a freelancer to respond more flexibly to changing market demand and that working only in one narrow field can get boring after a while. Looking back, I’m glad that I was a generalist. Since leaving freelancing, my career has advanced in interesting and unexpected ways, and opportunities have opened up that probably would have been closed to me had I spent those twenty years as a specialist.
- analog31 5y agoI'm very much a generalist, though not a software developer. I help out with problems that most engineers either hate, or that are disruptive to normal project planning. I can prototype anything. But... without being active as a production developer or designer in any of the engineering specialties, I'm not up to speed on their tools, meaning that they can run circles around me in project work. I think very much that moving up as a generalist requires developing "people" or "leadership" skills. If you're going to be thrust into ill defined or critical problems that can't be solved by any single specialty, there's also a much better than zero chance that you will also be dealing with the people who are affected by those problems, and with the specialists who will eventually need to be involved in order to implement a lasting solution. I also believe that one way to be a generalist is to specialize in things that are inherently general, like math and physics. My parents advised me that no matter how much technology changes, an understanding of math and science will serve me for a lifetime. They are both retired generalists.
- stadium 5y agoI got very deep into a niche business domain area for over a decade, but got bored with it and more recently branched out to a completely new and broad domain area that uses the same cloud provider and similar tech as the old one. I figured I can always go back to the old one of needed. It's good for job security I guess Business domain is another dimension to consider besides tech generalist or specialist. What is the problem you are trying to solve, and how do you know it's the right problem to solve? That can be a lot harder to do than the tech side.
- chrisgoman 5y agoIt is better to be a developer that ships! That would mean you have some generalization so you can start-to-finish and then you can specialize in one of the steps between.
- llaolleh 5y agoFunny story, i used to ask my interviewers for advice. CEOs told me to generalize and learn a bit of everything. Senior engineers told me to specialize. It really depends on what kind of roles you want next.
- GianFabien 5y agoI'm very much a generalist freelancer, having gotten to this point by sequentially being a specialist in many different areas - spanning programming, network and hardware engineering, business analysis and project management. Lately I have found it difficult to get work because the potential clients are looking for very specific skills both in terms of technical and business niches and they don't value my breadth of knowledge and experience. Hiring managers just can't seem to get their head around the fact that somebody can come up to speed on a specific tech and industry in a matter of days. It's not like I'm ever starting from zero, I'm just picking up how a new thing differs from all that I already know.
- forgotmypw17 5y agoI think we all start out generalists and gradually transform into specialists. Even as a specialist, it's good to remember how to be a generalist, keep trying new things. Your specialty is likely to form gradually, until you realize that you're a specialist one day. It will be based on what you spend doing the most for a few years in a row.
- jshc 5y agoThis book "Range: How Generalists Triumph in a Specialized World" may shed some light https://www.amazon.com/Range-Generalists-Triumph-Specialized-World-ebook/dp/B07H1ZYWTM/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=&sr= https://www.amazon.com/Range-Generalists-Triumph-Specialized...
- nickd2001 5y agoTo me, the most important Q is what is a tech's staying power, is it a skill you can still make a living in years to come. In my experience, general skills that can be applied, win here. e:g In 1992 I learned vi (what vim was at the time basically) and shell (csh on Solaris and HP-UX machines). 29 yrs later these skills are still totally relevant e:g bash on AWS EC2, or inside Dockerfiles. Much of what Microsoft had at the time is unrecognisable now. At the same time I learned lots of niche telecomms, which is no use now. I'd go for depth in general skills, rather than niche, unless you're really sure the niche stuff is here to stay. Perhaps some niche academic science solving real challenges, is worth investing in. The fundamental issue is that so many software skills have a short shelf life, compared to other fields of work, and if we don't watch out we get bitten by that
- JohnDeHope 5y agoI'd listen to the signal of the work you're seeing offered, and especially the gigs you're actually getting. That'll tell you if your strategy is a good one or not. If you find yourself having to chose between a few good offers, then clearly it's working. If you find yourself in between gigs for a while, then maybe it's time to re-think your strategy.
- justsomeuser 5y agoI would say to develop the tools of a generalist (get good at learning and being flexible) in order to find the speciality that best suits your personality and also generates income.
- giantg2 5y agoWhatever gets you the most money or happiness. I would generally say that is specialization.