Hacker Timesnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What's more valuable: expert or broad knowledge in different areas?
39 points by lichtenberger on Feb 15, 2023 | hide | past | favorite | 45 comments
What do you think is more valuable, being an expert for specific topics/stuff as security/database systems/performance engineers or maybe who have expert knowledge in one or two programming languages and perhaps a lot of frameworks and things like that or engineers who know a lot of languages a little bit, to maybe chose the right language for the right "smaller" project?

It certainly all depends if you do consulting/customer projects or have projects of your own with consulting on top, for instance. However, after ten years working extensively with Java and lately some Kotlin in the backend, I would like to know if I should have a much broader knowledge or the desire to learn everything (yeah, well, we all know a couple of languages a little bit). I'm currently learning TypeScript, and most languages, if they are not purely functional, are relatively easy to learn with some experience. But I'll sure lack some depth and to learn the major frontend concepts for instance underlying the frameworks, build tools, you name it will certainly need much more time than 2 or 3 months.

I think the most interesting from my perspective, however, is a much deeper knowledge of specific topics (for instance, lately, I'm all about reading latency/throughput-related stuff, as I'm extensively profiling my OSS database project and I'm reading books from experts as Brendan Gregg...).

What's your opinion on the topic? For example, be an expert in something or be able to use the right tool for the right project at hand, but maybe not be able to use it in the best idiomatic way or not know all the pitfalls and stuff you'd probably know if you're more specialized?



It depends on whether you want to optimize for stability or magnitude.

If you want to make the most money possible, and are OK with a much higher risk of being unemployable at some point, become a specialist. The field is a lot narrower for specialists and it can quickly become full, leaving you without work. As time progresses, it's likely need for your area of expertise will dissolve unless you are an expert in something abstract (e.g. one day no one will care much about deep knowledge of the Java language specifically, but knowledge of how a bytecode VM, JIT capable OOP language works in general will be valuable for a long time).

If you are OK with taking some "losses" in terms of how much money you'll eventually make, and prefer less risk of unemployment become a generalist. You won't be paid as much because you do not hold a scarce knowledge commodity, but you'll have a much wider field of opportunity to find jobs that want to leverage some of the knowledge you do posses.

Finally, this is all assuming you want to stay in a focused technical role your whole life. If your goal is to eventually do something else like run your own company, start becoming a generalist immediately.


Quite the opposite in my opinion. The companies know that specialist are in low demand otherwise it would spin off to a whole other line of work. That's why they can lowball you as much as they want.

On the other hand, generalist have a much bigger market and if supply<demand, they can easily make big bucks. The thing to notice is how quickly your field is getting filled with competent labour.


Yes, I think what is always most valuable are the underlying concepts :-)


Cue the obligatory Heinlein quote:

A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. —Robert A. Heinlein


That quote always felt way too extreme for me, like it's saying I should prioritize knowing how to repair a small engine I might never own or butcher a hog when I don't even eat meat, over skills I actually expect to need in the near future.

Everyone should probably have more skills than they do now, including some that aren't currently needed for most people, but I don't want to throw away specialization entirely, or nobody will be able to build satellites and cell phones, and people really will need to set bones without medical aid.

Some things are just really far outside of what a person expects to need, and everyone should probably pick a few of those, but I'm perfectly happy not knowing how a parser generator works or how to use a lathe I don't have space for. There's just too many skills to learn them all.

Then again, a rare few seem to be able to make real progress in a specialist field while also knowing a bunch of awesome skills and doing ninjutsu, but most people say "Yeah, that's why I have a job, to pay people to do that" sometimes and are fine with it.

But I go to events and do physical repair work, if I had to sit in an office of just all code all the time, maybe I'd have extreme views too, I've met a few people who were almost sad to watch, because they didn't seem to exist outside of code.

I'm not sure where the balance is, but I do know I'm happy about the fact we have a semi functional society even if I don't like all of it.


Tolstoi said something about this. Now he was talking about Jesus’ doctrine of “turning the other cheek“, and not to judge, I believe. And he says that that’s a very extremist position to take.

But he compares it with a man trying to swim across a river that has a very strong current. If that man wants to land at a particular spot on the other side, he needs to aim at a spot much further upstream. Only by aiming much further upstream does he least have a chance of reaching his spot.

Note that it also would not suffice to chose “pretend” that you’re aiming for the point further upstream. You actually do have to swim in that direction with all you’ve got. Otherwise you are going to be landing far downstream from where you intended to.

I think that Heinlein quote here is trying to do the same thing.


I like this analogy a lot, and hadn’t thought of it that way.

To me the quote also meant that knowing disparate things could lead to useful knowledge to the individual, even if they didn’t think so before.

A programmer learning how to fix an engine, despite not being interested in cars, may give them insights into how systems work that can be applied in their programming work


I’m not even sure he thought of it as a utilitarian thing. The answer to OP’s question might depend on whether you’re trying to solve for maximum monetary profit / social influence or for inner contentment. I think the Heinlein quote addresses the latter question. I mean, Bill Gates probably never cooked a meal in his life (I believe he said so somewhere).


I didn't think of that! Do average people commonly feel an inner disquiet over the fact they lack skills, or is the quote saying that learning skills will help with the vague mental unwellness people might have but don't know why?

For the most part I've always known, or at least thought Ive known, Why I'm Miserable, and the only skills that have a part in it are math and driving a car, and a few highly specialist things I wish I'd learned, like going into industrial controls.

I do know people who are uncomfortable being a specialist that couldn't function without industrial society as we know it, but the quote seems to paint it as a universal thing.


He obviously drew on varied experiences and interests but I'd say there's some irony in the fact we know of Heinlein because of his specialist career writing science fiction, he wasn't throwing in technical manuals, guides to horse husbandry or poetry anthologies


Heinlein was also in the US navy


So try and live life and partake in all its fascets


Set your life up so that every day is an adventure.


I think you'll find most of us would do poorly at planning an invasion. The list seems bizarre and arbitrary.


With that particular example, he might have been thinking not so much of modern society with its division of labor but of Stone Age tribes. Or, for that matter, many of the indigenous peoples who used to live in what is now the United States.


love this quote


"Jack of All Trades, Master of None" is the usual quote used to dissuade people from being broadly capable and not specialized in a field.

This is a misapplication of the full quote, which is, "Jack of All Trades, Master of None, Oftentimes better than a Master of One".

I would try to master at least 1 topic or at least approach mastery of a topic, but then branch out into whatever interests you that will pay the bills. Might be a bit more fun that way.


I've heard. Jack of All Trades, Master of None, Master of the Universe


You've asked the wrong question.

The most valuable knowledge skill is being knowledgeable enough to communicate with your audience on their terms.

For example, I work on Linux kernel networking, and I'm usually helping people solve problems with that.

I expect an application developer to have some vague idea that their applications make TCP sessions, maybe they've even read a webpage about the SYN and SYN+ACK handshake. I expect them to be able to follow a heavily annotated and well-explained packet capture where I walk them through a problem line by line in detail, and to ask sensible questions if they don't understand.

I don't expect application developers to know all the various corner cases that traffic can be silently dropped by the Linux kernel for a variety of reasons, and be able to use the various Linux tools and debuggers to pinpoint which specific one of those reasons is causing their application problem. That's my job.

Likewise, I think it's reasonable of me to roughly understand the ways that applications are built and deployed, and which programming constructs and libraries are available to the authors. Maybe I can tell them how to manipulate their java.net.Socket object to achieve something, maybe I can suggest they use a connection pool instead of rapidly cycling through new connections all the time.

There are things which are reasonable for everyone within a domain to know, and things which really only specialists know. Being able to communicate that knowledge to and from others is the key.


Depends a bit what your goals are. But I think generalist are undervalued on average. Range: Why Generalists Triumph in a Specialized World by David Epstein is all about this and he says it better than I can so it’s easiest to just point you there.


Epstein being interviewed on the Econtalk podcast provides a good introduction to the book.

https://www.econtalk.org/david-epstein-on-mastery-specializa...


I like to have a shallow knowledge of a broad swath of things (not just technological), and deep knowledge of a couple of things.

There's a synergy around that. It's amazing how often one thing can be extremely helpful to understanding an apparently unrelated thing. Having a breadth of non-expert knowledge means that you have more grist for that mill.


Being an expert in one area is far more beneficial than having broad knowledge. One of the main perks is being able earn reputation in one area(your area of expertise) in order to spend it in another.

Many people see through this, but not enough that the payoff isn't worth it. Far too many people see it as simply, "This person is knowledgeable of X, so they must also be knowledgeable of Y." Exploited tactfully, this is a substantial opportunity compared to being simply pretty good at several things.


In general I would say expert knowledge is more valuable. However, I think of knowledge as a pyramid - how high you can go is determined by how wide/strong your foundation is.

In my experience I've found that trying to develop deep expertise requires a solid understanding of many different fundamentals. For example, when I was doing NLP research, I had to learn about distributed systems in order to diagnose problems when training with multiple GPUs, or about dynamic libraries for fixing CUDA errors.


Solving problems. Solving problems for a business is what's valuable. Sometimes you need broad, sometimes you need expert, sometimes you need to find an expert.


This here.


You will see tech "luminaries" talk about T-shaped people sometimes on Twitter, implying that you need both breadth and depth. Depending on your level of cynicism, you can either take that as them trying to get 2 employees for the price of 1, or a genuine observation that breadth alone doesn't let you do very much, while depth alone might leave you doing the wrong things.


Valve talked about that and also self-organising teams, and then they laid off a bunch of people.


More valuable for what? Value doesn't exist as an absolute.

Do you need a pianist? Get the world-class pianist.

Do you need an assistant? Get the one that knows the most things. If you have a particular need, you can always hire a specialist.

I find in these discussions people tends to say whatever career they have chosen is best. I am a generalist, so I am biased. Sure, sometimes one needs a world-class COBOL engineer, but pretty much any startup or small-mid business needs a software engineer that can wear many hats.

--

In simpler words. Which company sizes prefer which role?

* Startup: generalist (fewer hires, better time-to-market)

* Established tech company: specialist

* Established non-tech company: generalist (means smaller tech budget)

* Very large tech company/FAANG: generalist (in theory specialists are preferrable, but they use off-the-shelf or cutting edge tech that no one is truly specialised for).

* Very large non-tech company: specialist (to run their Oracle databases, and they have large budgets)


In modern society, deep specialised expertise is more valuable.

There is a famous quote from Heinlein “specialisation is for insects”, suggesting we should not specialise. But in modern society where everything is interconnected, we are not unlike a “super organism” akin to ants, termites, bees.

Another reason deep technical expertise is better is that, once you go deep in one thing, one appreciates and can connect with others who are deep in other things.

For example, world class pianists, violinists, cellists have deep expertise in their own field, but their deep expertise precisely gives them access to connect to a larger body of work (e.g. chamber music).


I think you need the right company which values general and broad knowledge. There might not be so many positions which specifically look for such a person and so having some expert knowledge might come in handy from time to time when your general input is not what the team currently needs.

In my experience having some deep knowledge on a topic makes you a bit better situated on the market if you don't have a strong network, but having broad knowledge allows you to have impact on a greater scale and you might value that more.


Your question is ill posed.

Any potential answer will heavily depend on the assumptions you are making, there is no broad set specific answer, and depending on the assumptions you made but haven't communicated, it might spark whole new spectrum of potential solutions. You will get a different answer for every person you ask as it is written, which is structurally a poll with no real benefit...

There is no one size fits all answer to the questions you've asked, additionally, it may be you are really asking another question that you haven't actually communicated, the why? of the particular question you asked. For what purpose?

Until you narrow the scope, you will only get guesses about what people think you meant, and communication is inherently receiver based. We can't mind-read. Care to elaborate on what you are really trying to do?


Both being an expert in a particular area and having broad knowledge in different areas can be valuable in tech, depending on the specific context and goals.

Being an expert in a particular area means having a deep understanding and mastery of a specific technology, tool, or domain. On the other hand, having broad knowledge across different areas of tech can be valuable in roles that require a generalist skill set, such as product management or entrepreneurship.

If you haven't been aware of, for example, Blockchain technology, you can start expanding your knowledge with this blog: https://www.ratherlabs.com/blog

I highly recommend it for those who want to study something new!


It depends on your end goals, if your target is to find a job, implement some feature without going into too details. Not every people like to deals with the implementation details. Being a generalist is the road.

For example, many people just know how use React components, Angular components. But that’s ok in many jobs become there is no strict UI requirement on many jobs.

However, If your endpoint is to write components with design system / customise / optimise the components a little bit, you really need to understand how CSS and JS works.

The biggest pitfall I think is career development, if you are too generalist and your knowledge just stays on the surface, you just can’t solve some problems with technical complexity. It is hard to know what you don’t know … and some problems need expertise.


"One of Tetlock's findings from the Good Judgment Project was that cognitive and personality traits were more important than specialised knowledge when it came to predicting the outcome of various world events typically more accurately than intelligence agencies"


Having a broad understanding of how a business works, what its outputs are and what goes into those outputs is extremely valuable.

Of course, it all depends on the job and industry you're in. But many organisations struggle because people don't talk, share and understand each other.


I say you should learn and try to understand not all things you see but some atleast and master in atleast one which makes you a better person also which brings bread to the table.

Learn it, Update yourself, Play with it, Upgrade yourself, Practice anytime, Keep in constant touch.


Would like to recommend reading the book `Range by David Epstein`. It has some interesting thoughts about being a generalist vs specialist in our complex world.


I don’t like this question because everyone I’ve met seems to considers themselves a generalist.

Is a generalist someone that’s competent in sales, marketing and has technical skills? Or someone that codes in a couple languages? Or maybe someone that’s worked in a couple different labs over their career?

Until everyone agrees on the definition, we’re left with a bunch of empty platitudes.


Or both. Over the course of a long career, not only can you be 'T' shaped, you could be 'TTTTT' shaped.


> you could be 'TTTTT'

Sometimes referred to as "Paint Drip People".

Apologies for linking to a repost, but the original is behind a FB auth wall: https://www.linkedin.com/pulse/paint-drip-people-jack-many-t...

> “Moving the brush” is the curious exploration. Keith reports that he tries a project a week or so, but that most “don’t go anywhere” (I beg to differ). The drip rolling down is an area of specialization. Once it starts rolling, it’s not clear how far it will go. In any case, the brush keeps moving. Eventually the last drip stops and a new one starts."


Right now being a specialist seems to be the way, the market is flooded with full stack generalists.


You will have a hard time doing expert level stuff on things which are cool like latency and performance.

I'm trying to find a real job like this for ages.

Expert in business things business need like sap systems is highly sought after and payed well.

Best case you are broad and an expert on 2-3 things.


Generalist if you have high emotional intelligence (“leadership skills”). Otherwise specialist.


It all depends. I consider my self to be generalist at the place where I'm at the moment. But if I were to switch companies at some other place I would be considered an expert.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: