top | item 12803450

Ask HN: Is it better to be good at many things or great at one thing?

113 points| matonias | 9 years ago | reply

Talking about the digital world of course. Young man here, should I learn one thing really good (like back-end programming) or go all out and learn as many things(front-end, 3d, photoshop, back-end etc..) as possible and be okay in all of them.

107 comments

order
[+] dasmoth|9 years ago|reply
> "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 Heinlein
I've certainly always found being a generalist more satisfying, even if it isn't always what gets rewarded.

I wouldn't necessarily restrict this to "the digital world."

[+] majewsky|9 years ago|reply
> Specialization is for insects.

Yet the advancements in human civilization arose precisely from specialization. Nobody would have had time to build computers if they had to spend all day farming, building houses and writing sonnets.

[+] matonias|9 years ago|reply
This is true, because nowadays many people don't know how to do all the things above, because its all about the digital world. Yay! We should get even more broader.
[+] HeyLaughingBoy|9 years ago|reply
You know you're getting old when, every time you see that quote, you realize that you've done one more of those items...
[+] afarrell|9 years ago|reply
Learning to plan an invasion is actually not worth doing. It takes way too long (invasions are really fucking complex operations) and if you actually need it, you will know about it 3 years before.
[+] hatmatrix|9 years ago|reply
What I get from this is that we should acquire a specialization to be employable by the corporate hive.
[+] BenoitP|9 years ago|reply
To quote from the Valve Handbook [1]:

> We value “T-shaped” people. That is, people who are both generalists (highly skilled at a broad set of valuable things—the top of the T) and also experts (among the best in their field within a narrow discipline—the vertical leg of the T). This recipe is important for success at Valve. We often have to pass on people who are very strong generalists without expertise, or vice versa. An expert who is too narrow has difficulty collaborating. A generalist who doesn’t go deep enough in a single area ends up on the margins, not really contributing as an individual.

Where you choose to be deep should be an area of interest to you and which the market values.

[1] http://www.valvesoftware.com/company/Valve_Handbook_LowRes.p...

[+] cylinder|9 years ago|reply
People who are highly skilled at most things and top experts in one thing are highly valued. Revolutionary!
[+] rkangel|9 years ago|reply
That also is the term that we use to describe the people we're looking for.
[+] usgroup|9 years ago|reply
Hilarious, we like the broad and deep. Because the broad are not deep and the deep are not broad.

I think be broad by default and acquire depth when you need to...

[+] fao_|9 years ago|reply
Honestly? Try to learn as much about everything as you can. I mean every subject, every subfield. What I've found is each effort I made in one subject improved my efforts in others by a significant order of magnitude. With more knowledge you gain more ways of looking at the problems you're faced with and therefore can find more paths to solutions.

Each new piece of knowledge you learn will give you a better base from which to learn more, and slowly the amount you are able to learn will increase to help you cope with the load.

After a while you gain the ability to reduce a problem you're faced with down to other problems in other disciplines, then things start getting boring because you can already figure out a way to reduce this problem, etc. So at that point it's time to mix it up a little and refocus.

Another thing that should be noted is that you should always make sure that you are out of your depth with at least one thing you are studying. You can only really improve by pushing yourself. However remember that you cannot push yourself constantly, sometimes you need a break. So in doing this, you should be driven by your own interest.

What I have found is that I am not necessarily able to do everything at once, so I end up doing a rotation of things I find interesting at that moment. Eventually I'll either discard some topic or problem or such, because I don't find it interesting or I will find something new that I find more interesting. If things get stagnant, mix it up a little!

I've been doing this for approximately the last five years, and I think the payoffs have been great, and I have learned so much more than I think I would have otherwise. However I have nothing to compare to! So we cannot be sure =)

Do what interests you.

[+] pbhjpbhj|9 years ago|reply
What work do you do?

Everything interests me, superficially[1]. Most of it is useless except for playing trivia games.

If I were a FU-rich autodidact that wouldn't be a problem but I'm a poor schmuck with a family to support.

My brain is so full of interesting stuff and tangential thought that there no room for focused attention on anything mundane enough to count as useful work (though I'm sure with an equipped workshop/lab and a couple of years I can turn one of my book-of-ideas concepts to something useful for mankind).

Don't we \have\ to do what gives us a living?

[1] superficially perhaps isn't the right word, the minutiae of everything is infinitely interesting too, more that things are only interesting temporarily, which leads to flitting about across diverse subjects.

[+] eastindex|9 years ago|reply
> Do what interests you.

I had a roommate in college who every next morning after waking up talked of different interests/career options. This advice works for people who know what they are doing but, it's quite broad for people who have no clue what they are doing.

[+] Unbeliever69|9 years ago|reply
I am the consummate jack-of-all-trades. It is a disorder. And it irks me EVERY day that I'm not amazing at one single thing. I am SO envious of people that possess a single-minded focus and the older I get the more I regret not finding that singular passion. The problem is...I get bored with one thing. Or at least, I'm never crossed that painful membrane of boredom to find bliss in single mastery.
[+] TeMPOraL|9 years ago|reply
Skills are recursive. If you're jack-of-all-trades, it means that while you're neither good at A, nor B, nor C..., you're good at the combination of X = {A, B, C, ...} ;). Find something for which you need to apply many of the skills you have - single-minded people won't be able to follow you there ;).
[+] markatkinson|9 years ago|reply
Amen to this. I am 29 (I suppose that is still considered young) and I can relate. I feel like I may have a similar disorder. Luckily for me my hand is being forced by my work. I have to know C# and SQL Server for my work, and this forces me to specialize.

My side projects on the other hand consist of F#, Elixir, C#, Python, Java, Unreal Engine playing around with Azure and Firebase. Just a giant list of things I build to 10 - 25% completion. There is this unreasonable and insatiable hunger to understand how EVERYTHING technical works, but only 80 years to learn it all in. So I end up buying books on Kivy (Python), Fsharp, I have 2 books on Elixir, one which I never even started etc etc. Send Help!

P.S. I even have a book on Openstack cause I was like "Wow, that sounds awesome, I must learn all about it." I haven't opened it.

P.P.S This obsession with knowing how to do everything also manifests outside of the digital world. I have a fridge full of kimchi I will never eat, and a laundry full of Mead I will never drink.

[+] techdmn|9 years ago|reply
I have a similar problem. It bothers me a bit that I'm not amazing at any single thing, but not nearly as much as it bothers me that there are things I can't do well. I have this strange belief that I should be at least competent at every skill there is. (I blame my dad for this, by the way. He is good at everything. :-) )
[+] ceeK|9 years ago|reply
What do you do as your day job? Do you find that you don't focus on one thing as part of that?

I'd say I'm the opposite. Funnily enough, I'm envious of people who are a jack of all trades because they can choose the right tool for the job. I just do iOS development in my day job and side projects and although I love app development, I find the lack of knowledge on other tools limiting.

[+] verbify|9 years ago|reply
I recommend reading 'The Wealth of Nations'. As an economics textbook, it is fairly dated, but it makes the point that ten people with a specific specialization can do more than ten people all doing the same work at once. Therefore the value you can provide increases with specialization as you can be part of a team than can provide more.

My salary increased once I marketed myself as having a specific specialization, but the difficulty of finding a job increased too.

It is a basic application of supply vs demand. As, say, a PHP developer, you're competing with millions of other PHP developers around the world. There are plenty of jobs, but there are also plenty of people who are competing with you, driving your price downwards.

If you narrow it down to knowing a lot about a very specific framework or PHP system - for example, you know a lot about Laravel or Drupal, then you're competing with fewer people, and people are willing to pay more for an expert, but there are also fewer potential jobs.

There's also an associated risk. If you specialize in Laravel and Laravel goes out of style, you will have to remarket yourself as a PHP dev again... Some people specialized intensely in Microsoft Silverlight, and they ended up like this - http://www.commitstrip.com/en/2015/07/28/betting-on-the-righ... (it's not a total loss, as some programming paradigms work across languages). With the risk comes increased reward.

[+] shubhamjain|9 years ago|reply
> I recommend reading 'The Wealth of Nations'. As an economics textbook, it is fairly dated, but it makes the point that ten people with a specific specialization can do more than ten people all doing the same work at once. Therefore the value you can provide increases with specialization as you can be part of a team than can provide more.

I think it's improper to retrofit a dated analogy into something innately complex like software engineering. It ignores the communication overhead needed in creating software which was almost absent in low mentally-taxing work of 18th century.

Let's say a team wants to build a website. Are you sure you'll have better odds at making it in time with a specialist for HTML, CSS, and Javascript? Brook's Law is at play here — finely grained task spread across dozens of people who have a little idea about everyone else's work is bound to prove disastrous.

The role of specialist is crucial, but only when the her knowledge in a singular aspect can save a lot of time for the whole team.

[+] zhte415|9 years ago|reply
Dug well into later pages of the Wealth of Nations is the pretty brutal passage below. Smith's works are a lot more complex than often paraphrased as, as are many modern classics. (Currently writing a book on BPO, so a topic of interest.)

Quote follows:

> “The man whose whole life is spent in performing a few simple operations generally becomes as stupid and ignorant as it is possible for a human creature to become. The torpor of his mind renders him not only incapable of relishing or bearing a part in any rational conversation, but of conceiving any generous, nobdle, or tender tentiment, and consequently of forming any just judgement concerning many even of the orginary duties of private life.”

[+] highfestiva|9 years ago|reply
An expert without basic generalist know-how is just ignorant. An expert in only a single field is single-minded (think "SAP expert":). A generalist without expertise is just average.

Do both, as people always have. But start out a generalist to get an understanding of what is good to specialize in. Then pick 2, 3, 4 diverse areas to home in on.

[+] herghost|9 years ago|reply
Exactly this.

I have a current specialism within a fairly specialised field, but this leaves me plenty of bandwidth to move within the field in the short term.

My background is loosely related but has given me a set of core skills which I can draw on where I see other people being employed as specialists. I try to maintain my core skills in other areas to the extent that I can commoditise them for my own purposes if needed, even though I have no interest in actually pursuing 'excellence' in them.

When I first started down my specialism a number of years ago my expectation was that my previous background would become irrelevant as it felt like quite a big pivot. I was (and remain) surprised at just how wrong I was - having additional background skills that aren't directly related makes me more valuable.

[+] jventura|9 years ago|reply
I agree with this! Personally, I have a CS degree and a PhD degree in Natural Language Processing, although my current interests are larger than this. For instance, I work as web developer, do some mobile apps, do data processing and some tutoring, as they traverse a big range of my current interests.

Later on you can start mixing things. For instance, I do freelance tutoring on these subjects, I use my webapp backend Python code on an Android app I have, etc..

[+] T-A|9 years ago|reply
Wouldn't you know it, it's best to be both: https://en.wikipedia.org/wiki/T-shaped_skills
[+] anta40|9 years ago|reply
As an IT guy (I'm a developer, BTW), I think T model is probably the best model.

Technology is progressing rapidly nowadays and we need to know about them in general (the horizontal bar). But we also need to master 1 or 2 (or a few), and these will increase our "value" (this is the vertical bar).

For example: I know how to build web apps using some PHP frameworks, I know how to write Android apps using Java, I can write desktop apps using Java, etc. This is my "generalist side".

My "expertise side" is smart card (at least this is my current plan). So I focus on mastering Java card, ISO 7816, GSM 11.11, GSM 11.14 and so on.

I keep my eyes open on new, emerging technologies, but will not put much effort to master them.

[+] matonias|9 years ago|reply
That's interesting! Never heard of the T shape skills
[+] SixSigma|9 years ago|reply
Me: 30 years professional programming

Certified AutoCAD technician

Certified TIG Welder

Degree in Supply Chain Management

Certified Bicycle Wheel Builder

Potter

Wood Turner

Proficient in 3D Modelling

Launched an ISP in 1995 that is still going

Project leader for a charity market garden supplying produce to a food bank

Assistant director / Assistant Producer of a feature film released on DVD (you can buy it on Amazon)

Producer of 4 music videos that have appeared on MTV

Made most of my own furniture from scratch - bed, table, freestanding kitchen unit, chairs

Was resident VJ at a successful rave series for 5 years

Appeared in stage plays for paying public

Qualified scuba diver

Arrested twice on TV on environmental protests

Occasional data analyst for a Superbike racing team at the national level

This isn't even my final form & this list is incomplete

Live life, box sets are for the dead to get buried in.

[+] dasmoth|9 years ago|reply
Inspiring list!

One thing I notice is quite a few qualification. Obviously, some of them are more-or-less essential if you want to do, e.g., scuba diving -- but for the others, how valuable have you found them?

[+] aunlead|9 years ago|reply
WOW! I'm truly inspired!

PS: Which feature film did you produce?

[+] matonias|9 years ago|reply
That's awesome man! Great example
[+] JohnBooty|9 years ago|reply
Well, I'm going to cheat.

Be somewhere between "mediocre and good" at many things, and be really good at one or two things. If you can be great at one or two things, that is nice, but not strictly necessary.

There's a lot to be said for generalists, or "T-shaped" people. Every single project requires a large breadth of skills all up and down the stack... and a lot of moving pieces (client, server, markup, JS, CSS, blah blah blah) that work together.

There is a place for specialists, too. In fact, we need them to make the world go 'round. But... there aren't as many of those places.

Here's a real-world example. I literally just finished troubleshooting this issue. Finding the bug and developing a fix involved (1) our iOS client (2) our React web client (3) our server-side auth, implemented in Rails (4) a messaging library with both client and server components (5) some other bullshit I can't even remember at this point.

I'm not the best at any of those things. I'm barely even good at them. Honestly, I don't even fully understand the auth fix that our brilliant (and I don't mean that sarcastically) programmer implemented. But I understood enough of those moving pieces to isolate the problem and get things into his hands.

It'd be really fucking great if I was the world's leading iOS developer or whatever, but if that's all I knew, this issue wouldn't have been fixed.

[+] d23|9 years ago|reply
> There's a lot to be said for generalists, or "T-shaped" people. Every single project requires a large breadth of skills all up and down the stack... and a lot of moving pieces (client, server, markup, JS, CSS, blah blah blah) that work together.

That's not really the meaning of T shaped, as I understand it. The point of the T shape is that you have a lot of breadth (the top of the T) as well as a deep depth in an area or two (the stem of the T).

[+] distracted_boy|9 years ago|reply
I think having good grasp in different domains and tools can be good for you both career wise and for your own sake (entrepreneurship, creativity etc). But it can also be a disadvantage depending on where you work.

When I first graduated from the university (at 23), I got a job as an IT support guy in a growing company (80+ employees at the time). I was the only IT support and my job was to help people with their issues and maintain the IT infrastructure. I managed to solve all types of issues which I guess people started to recognise. This was fine. However, since I also knew programming, my managers wanted me to help out on development (PHP), to ease the load on the developers. As time went on I became better with our framework and started to get more more complex programming assignments, while still being IT-support. For me this became a real struggle, completing programming tasks on time, maintaining IT infrastructure (servers, network, buying hardware, phone calls) and helping people with their issues. Somehow I managed, which my managers recognised (I assume, and hope), so I got additional assignments regarding "Big Data", basically get information, store it, connect the data with other data sources and so on.

At the end I was doing everything with IT. Data science, development, IT support, system administration and more. The reason it become like this, at least what I think, is because I had a sufficient grasp on most domains and tools so I just continued to get more stuff to do. When I finally quit, I actually realised that I was not feeling that great. I could feel the stress inside me slowly diminish.

[+] 0n34n7|9 years ago|reply
My story is very similar to yours. I have come to appreciate that those years formed a very strong foundation for me, and today I can be domain specific with a large blob of context.

Point is if you don't become a good generalist first, then you'll be a mediocre specialist.

[+] mcv|9 years ago|reply
Both have their value. Personally I prefer broad over deep, but that's me. You need to figure out what works best for you.

Deep has the advantage that when specialists are in demand, you're really in demand. It's good to have someone on the team who knows absolutely everything about the thing you do. The downside is that when technology or your career moves on, you know nothing. You're stuck doing that one thing, and may have a harder time getting into something else.

And broadness has a specialization of its own. Knowing multiple things is particularly valuable if you know how to connect those things. If you can develop front-end with an eye on what's easier for the back-end, if you can design the graphics that you will need, rather than having to wait for someone else to get around to it. Knowing different unconnected things is less valuable, but even there you may find unexpected connections. But for the deep technical stuff, you may find that you'll have to ask a real expert.

[+] leonroy|9 years ago|reply
This'll sound like a cop out but it really depends. Are you going into academia? If so it takes years of specialization to get good enough to make a meaningful contribution in the form of innovative and good quality research.

Are you planning on going into startups? In which case jack of all trades does very nicely!

The key is to be very good at some things but to also keep your eyes open and learn things outside your comfort zone - you never know where your new found knowledge can take you and often times it can make you better at whatever you chose to specialize in.

So senior architects who write APIs - for fucks sake (showing my background here!) - write the prototype client library - it will improve your API design skills.

Backend devs should write a front end or two or at least do some pair programming with the front end guys.

Bottom line - be very good at some things - but be open to learning new things and getting out of your comfort zone.

[+] cies|9 years ago|reply
For yourself: be good at many things. It will make you happy.

For your (potential) employer: be great at one thing, that they are willing to pay you a bundle for. Then use that money to buy all services you need to be happy.

[+] Franciscodr|9 years ago|reply
Everybody goes to the general doctor, but want treatment from the specialist one. Usually a balanced combination between some general knowledge of many things and specialist in one thing is the best. Beware some people can be specialist in more than one thing but they are not typical, not the best always: https://www.ted.com/talks/emilie_wapnick_why_some_of_us_don_...
[+] JoelMcCracken|9 years ago|reply
More food for thought:

https://hn.algolia.com/?query=generalist&sort=byPopularity&p...

https://hn.algolia.com/?query=rennaissance%20man&sort=byPopu...

https://hn.algolia.com/?query=specialist%20vs%20generalist&s...

Personally, I like having a variety of skills. I want to be able to dip in anywhere on a project and be productive.

You'll naturally have focuses, or drips of paint, which I see is referenced in another post. Your focus really can only be on one thing at a time, and presumably you're not just learning for its own sake, you will be learning to accomplish some goal, which will drive the learning.

I'd rather work with a well-rounded engineer than one that is a poor communicator, tool user, etc but has very excellent skills in a very specific area.

YMMV. There is lots of value in having deep skill sets. There is also a difference between being a "dabbler"/"knowing enough to be dangerous" and being a competent engineer.

[+] agentgt|9 years ago|reply
I'm somewhat reminded of some Einstein quotes (probably dubious but whatever):

"You ask me if I keep a notebook to record my great ideas. I've only ever had one."

and

"It's not that I'm so smart, it's just that I stay with problems longer."

At the same time:

"The important thing is not to stop questioning. Curiosity has its own reason for existing."

and

"I have no special talent. I am only passionately curious."

So I say follow your curiosity. If it wants to go deep go deep. If it wants to go broad go broad.

[+] tduk|9 years ago|reply
Find something that is a good fit for you and in demand (preferably rising), avoid niche and fads. Be good at that one thing and a handful of directly related tech. Keep yourself informed about other stuff to the degree where you can hold an intelligent informed conversation and contribute to decisions. Use your spare time to satisfy intellectual itches. Expect periods of boredom in any job. Look after your spine.
[+] 6DM|9 years ago|reply
I would recommend you start with something you're the most curious about and/or find the most useful in your day job. It's like this, you're hired to bring value to a company so it should make you productive if you know it better. Get to know that well, seek out edge cases and new techniques. If you put your time into it, you will gain that knowledge fast.

The important part is not to stop when you're finished. Pick up the next thing and do the same. After you go through a few phases you will have enough general knowledge to apply in many areas.

In this way you start a specialist and become a generalist. You'll know fully well what your tools and technologies will be capable of and you will be able to give reasonably accurate estimates.

As far as I can tell, unless you have an eye for design, it's generally easier to start on the back end and move to the front end. This way you can be productive and are able to move between companies. Front-end is still changing a lot. But there are a lot of promising releases/tools in the works that are making getting started a lot easier.