Ask HN: Being a generalist vs. being a specialist
Getting excited about new thing and learning as much as you can until some other newer thing come your way exciting you to learn about the new stuff...; So many interesting stuffs, so little time!
Life is short; why deprive yourself of so many exciting things? Or life is short; you can't do so many things so better speciallize!
What do you have to say?
26 comments
[ 2.9 ms ] story [ 61.3 ms ] threadIn my experience I find it more helpful to be really good at one thing but can do a lot of different things (full stack, design, product) to get the job done, you're more appreciated that way. In my case, iOS is my One.
http://darrennegraeff.com/the-importance-of-t-shaped-individ...
I'm a front-end dev, but often I find my self writing back-end stuff, because the back-end dev just doesn't have the time.
The generalization enables learning new skills/technologies faster and helps with problem-solving; the specialization helps with being able to bill a higher rate.
Hear me out. When people say they are a generalist, they actually mean they know a bit of JS and whatever the framework of the moment, a bit of rails (or Django or Play) and they can come up with a bash script. If this is you, better specialise otherwise you will be fucked.
Now, if you can do a full grown mobile app, a backend service for realtime data, do 3d for the latest console or write a CAD file viewer that is fast, write kernel drivers, hack up nginx to do your biding and write an ETL for oil company, pick an haskell AI/learning project and improve it. Keep at it. You will have so many doors open you don't know what to do with your time.
Also, maybe I'm more junior than I think, but your second class of generalist actually seems more like being really good in a few verticals. Not an expert, but demerit not a generalist.
Don't get me wrong, someone like that has a place in some companies, but it is the difference between being payed 20 bucks an hours vs 200.
All the stuff I've mentioned before, I've done. I've worked in more industries than some have jobs. Right now, I can pick and choose what I do and get payed way too much for it. I didn't specialise (but I admit there is a place for that) but I have enough breadth that I can go from games, to AI, to 'deep learning', to crud, to mobile apps without an issue, and with all that baggage, I can ask for the big money as well. Let me just put a quick list of language where I've worked professionally charging those values:
- C
- C++
- Ruby
- Objective C/Swift
- Haskell
- F#
- Java/Kotlin
- Python
- C# (and Visual Basic, both .net and not)
- Delphi
- Borland Builder C++ (I don't even remember the right name)
This isn't a brag, seriously, just to point out that what a lot of people consider to be generalist aren't even scratching the surface of it.
Curious, do you have a background in something else besides/before programming?
When I was 4-5, my father took me to the arcades. Playing games there I had the lightbulb moment where I said 'That is what I want to do'. At 11 I was reading the Turbo Pascal manual trying to figure out how things work (mind you, this was before Internet access was a thing and before I was playing with the ZX spectrum playground). From there to C/C++ (DJGPP anyone?) to VB when at 16 I started doing payed work. At 19 I wrote a book on C++ and games and from then on, games, insurance, banking, industrial processes, etc etc.
I did 1 year at university before I realised I preferred to be working. This didn't mean I didn't learn (I have a library that I'm sure some small schools envy).
But you know what my turning point in my career was?? Boxing! Boxing was what gave me the discipline and hardwork to go through whatever it was thrown at me. Not sure if that is relevant to 'background in something else' but hardwork, dedication is 80% of the path, the 20% left, well... that is just luck (this coming from someone that isn't really 'smart' by usual standard)
ps: I'm slightly tipsy so I apologise in advance for the lack of coherence.
I was actually wondering if you did something prior to programming thinking that it may have influenced your wife range of fields. I think coming from mech eng is probably the reason why I feel the need to understand how the whole system works.
Half-joking, but remember that there are two sides to financial security: your earning and your expenses. If you are making $200k but living paycheque-to-paycheque, you aren't much better off than living frugally on $75k. And the magic of compound interest means you are better off staving while you are young.
You don't need to write kernels, oil company etls, program mobile apps, or make a self driving car to be valued. You just need to solve real world problems, using smart tech that other businesses value too.
The biggest issue I've noticed is people aren't well connected to learn and read up on tech. Having knowledge of your industry and tools is required, some don't make a conscious effort to keep up.
For generalists, assuming intelligence and a reasonable affinity for learning there is a heap of benefit. A generalist can become a specialist relatively quickly, especially when doing something day-to-day on a job. And often a generalist has benefit in understanding the big picture which aids in getting the job done.
Specialists have that edge in knowledge and often stay up to date better and general skills can erode quickly in areas of moving technology. This is useful when you need something worked on at the highest level right now and don't have learning runway.
Personally I've avoided specialising as I like the work diversity, plus enjoy the employment opportunity of having a wider skill set. Also in my field of marketing I find specialists rarely amaze me with their topic knowledge, sometimes the opposite. For some of the specialists I wonder if they get limited to specific areas as they dont like learning new things vs actually enjoying taking their knowledge to as far reaches as possible.
Bare in mind, if you've got expertise in an area that people value, people will pay you handsomely for it.