
Ask HN: Advice for a junior Software Engineer - conqrr
I am a young Software Engineer. Although content with work and salary w.r.t any other field, I always wish to be able to do something in a niche area. The general software Engineer is something everyone around me does and does it well enough so that it gets impossibly hard to be or even judge the top 10%. I feel I should chase something which is not achievable by many. 10x Engineer can be one such thing. I want to develop&#x2F;master a skill that very few can achieve, which would make me highly valued and sought after. Every now and then something new in CS pops up and a million people are chasing it already. In other words, among 100 people I would like to be the one guy who is always calm, cool and confident because he has a skill that no one else can easily learn&#x2F;aquire. Is it even possible?  What advice would you give?
======
nostrademons
The tricky part is that there is no guarantee that the hot skill of today will
still be hot once you've developed expertise. When I was a young junior
software engineer in 2005-07, for example, the hot skill that everybody wanted
but few people had was Javascript (recall that this was before JQuery, let
alone Node). It was great for a few years, and helped me get my foot in the
door at a couple places where I could learn other skills. But now basically
everybody knows Javascript, and it's looked down upon as the language of
junior developers.

If I were you, I'd look for a sub-field that's _interesting_ , something where
you enjoy doing the work and learning the material itself. And then wait for
the rest of the world to come around. When you look at people who are actually
acknowledged as experts, it's usually because they got started on something
before it was cool, and then had built up years of expertise when the world
decided that this was suddenly the hot new thing. Note that there's plenty of
risk in this: there's no guarantee that the world will actually come around,
and you might end up working on something that the rest of the world thinks is
a niche hobby. But at least you'll be working on something you enjoy, which is
sorta the point of life after all.

------
PaulHoule
It's an interesting question, specialization vs generalization.

It may be easier for a generalist to get a job (any job) because there will
always be somebody who needs to get X done with Y technology and somebody who
can learn Y technology quickly and get X done is in demand.

On some level you are not going to be all that productive doing that since you
will spend your time learning how to get the length of of a String with
technology Y and then having to learn it all over against with technology Z.

At that rate, however, you will be a "junior developer" when you are 45.

On the other hand if you develop some specialized skill it may well be that
this skill is not in demand or that the jobs involving this skill may not be
well paying, etc. (i.e. many of the best paying jobs give you hazard pay for
working with toxic people, toxic code, toxic tooling, etc. -- even if you are
objectively more productive taking a "path less followed" you are bucking the
dominant paradigm)

There is "no silver bullet" for careers in software development.

------
gjvc
Do ten times the amount of study and practice as the rest of the crowd.

Read the best and as many relevant books you can afford about current and next
subjects you are working on. Keep reading. Don't stop reading.

