Ask HN: Should I specialise?

12 points by ZoFreX ↗ HN
I'm a "generalist" with shallow knowledge in a wide number of areas, and I think that might be a bad strategy. It seems most people are looking for hackers that are really, really good at just a few things. What's your opinion? Is it better to specialise?

The other half of the problem is what to specialise in. I have no idea, and I love so many different things it's hard to deliberately give up on most of them to focus. Right now I feel very directionless and could really use some advice from people a bit further on in their development than me (I left university a year ago). To give you an idea of my knowledge and capabilities, the things I've done (or helped with) include:

Basic game physics engine (C++) †

Inverse kinematics solver (C++) †

Cross-platform dynamic music engine (C++, OpenAL) †

High performance bittorrent tracker (Java - and way faster than XBTT, the main competition)

Raytracer (Java) †

Typing tutor (Java) †

Bittorrent web front-end with forums etc (PHP, memcached, Sphinx - one installation of this code has 120000 users with a single MySQL server)

I've also made a lot of websites (this is my day job), and I consider my skills to be most developed in this area - but again, I'm a generalist, I do a little front-end, a little back-end, a little server administration.

† denotes a student project, so these aren't "production-ready" (with the exception of the typing tutor, which has been downloaded 10,000 times and so potentially has some life in it)

I'm confident that I have a lot of raw talent, and could make some great things - I just have no idea how to get there from here. Thank you for reading my ramblings, I can't tell you how much I appreciate all the advice and guidance this community gives and I look forward to reading any advice you may have for me (and others in similar situations to mine).

6 comments

[ 3.5 ms ] story [ 27.1 ms ] thread
I am a proponent of specialization. I've found it is easier to convince clients to use your services if you have a track record of developing similar projects and appear to have expert knowledge in that area.

Of course, it's also great that have breadth of knowledge so you can always say Yes to client when they ask if you can do X.

I would think about which areas that you mentioned above you are most passionate about and what skill-types your current network has and base your decision off of that.

It is definitely better to be a specialist than a generalist. In the field of high dollar per hour consulting, for example, you can't make the pitch "I'm a generalist!".
You can, and should, do both. It really isn't a one-or-the-other situation.

Specialize in something, but keep up your general knowledge. Being too specialized is just as big a weakness as being too generalized. Unless, that is, you become the absolute best in the world at it. Which is not something you can plan for.

Also, don't pick a specialization just because you feel like you need one, or you'll always be behind the curve. If there's nothing you are passionate about to dive deeper and deeper into, keep looking.

Let me throw out this quote from Scott Adams [1] proposing that being a generalist has a lot of value too.

"I succeeded as a cartoonist with negligible art talent, some basic writing skills, an ordinary sense of humor and a bit of experience in the business world. The "Dilbert" comic is a combination of all four skills. The world has plenty of better artists, smarter writers, funnier humorists and more experienced business people. The rare part is that each of those modest skills is collected in one person. That's how value is created."

1. http://online.wsj.com/article/SB1000142405274870410160457624...

Scott Adams is a generalist in a set of very distant disciplines. The difference between art talent, writing skills and a sense of humour is far greater than the difference between Java, C and Ruby.

I'd say learn one programming language and then learn two more skills which programmers rarely hold.

Thinking about specializing or not, you need to first some general idea about what you really like and what you want.

Without some sort of short-term (1-4 years) goal, whatever you do won't makes sense.

Once you know more what you like and what you want to pursue, then the pieces like specializing/generalizing will start to make sense.

Generally speaking, having a particular strong area is a good idea since teams need these type of people to fill in specific roles (even startups).

Don't rabbit hole into and stay curious to other things is also crucial ofcourse.