
Ask HN: How do I become an 'elite' programmer? - iobt92
I&#x27;m a budding undergraduate awaiting enrollment this year. I&#x27;ve already started to get into programming, and am nearing the end of a ML internship. I really admire people with robust programming skills and hope that I can become one of them (hopefully by the end of university). I wanted to ask, what steps can I take to help me work towards that goal? (I was thinking along the lines of daily deliberate practice, but what would be most efficient?).
======
verdverm
\- learn to break things, git affords you a place to do this (XR will for the
masses in domains we haven't considered this idea yet. I'm largely all in on
the HL2 right now)

\- try out as many projects as you can, specifically the k8s ecosystem as this
is where most efforts are orbiting

\- learn bash, it's an automation super power. Keyboard shortcuts too, make
lots of scripts, aliases. People perceive wizardry when you move around code /
computer at 2-5-20x the speed they do. Also, use the mouse as little as
possible

\- learn people skills (lots here), there are many discussions here you can
find by search. Also consider business (startup ideas around iteration and
get-to-market-fast ). Most elite devs keep the biz context in mind and that's
part of what makes them special.

\- keep all you things in something like GitHub, it becomes a bit of a library
or archive for projects, and also I a resume / portfolio

* This all depends on the elite type of dev you are referring to

------
tomohawk
First, consider what your goal is. Is your goal to use programming to get into
something else, or is your goal to make a long career of it?

If it is the latter, consider that you will be running a marathon, not a
sprint. Early on, look for positions and people to work with with good
mentoring possibilities. Also, cultivate relationships with healthy and
optimistic people.

Later on, look for positions where you can be the mentor, and don't be afraid
to strike out in new directions. If you never fail at anything, you likely
have not pushed yourself enough (a cliche, but true).

Like any marathoner, you need to take care of yourself. Physically, if you do
not actively cultivate healthy habits, you will not last in this career.
Drinking, smoking, drugs, unhealthy food, lack of exercise - they all take a
toll. The couch potatoes who were ubiquitous in this field when in their
twenties are gone within 10 - 15 years, or they are in a stagnant niche job.

~~~
iobt92
Ideally at the end of the day a long and fulfilling career would be my goal.
Hence why I am trying to source for more internships and hope to land a few
more opportunities over the next few years (although it is trying times amidst
the current virus situation).

By new directions would you also include exploring new fields of
programming/disciplines? If so, what are some which you think are good to
venture into and may potentially be something one would hold interest in the
long run?

~~~
verdverm
AR, get an Hololens 2, the world will change when consumer priced models are
widely adopted. If you can't get one, they have emulators and the Oculus Quest
is close enough for basic dev.

Mixed Reality Toolkit (MRTK), YouTube this to see why without the experience.
Everyone I'm showing is losing their mind at how amazing HL2 is out of the
box. I'm now dev'n for it full time

------
gregjor
Practice, a lot. On real projects when possible. There's no shortcut and no
substitute for experience.

You need peers and mentors. Practice only gets you so far if you don't have
people telling you what you are doing right and wrong. Don't take criticisms
of your code personally.

Read lots of code. Learn to run code in your head.

Don't just learn languages and tools. You have to master some subset of
available tools, but you also need domain expertise, people skills, and
judgment to succeed.

Master Unix/Linux and the shell and command line tools. Master a text editor.
Understand version control (git) and collaboration.

------
secondbreakfast
Daily process goals are a wonderful life skill.

You can improve your writing skills by writing every day. I recommend it.

But the best way to become an elite programmer is to understand complexity:
when it’s okay and when it will kill you. The best way to understand
complexity is to have ownership of projects that grow in size. You’ll watch
the database queries start to buckle or the abstractions hamper readability or
the singleton grow grossly in scope.

Build things, publish them, and work on them over longer periods of time.
Share them with friends. Learn from the brittle parts of the code.

~~~
iobt92
I like your point on complexity; from that statement alone I am far from it
yet. The layers of abstraction which I have had to deal with so far can be
said to be merely surface-level. This is a goal I'm still trying to
consciously work on as well (being able to handle complex projects). I guess
for someone who is a newbie like myself I may be jumping the gun too early by
finding myself veering towards systems which I may not understand e.g.
operating systems, compilers.

~~~
secondbreakfast
There is no jumping the gun! Go for it.

