

Ask HN: How can a programmer optimize learning after getting a job? - adamzerner

I&#x27;m looking for my first programming job. I&#x27;ve just finished a coding bootcamp and have spent some time teaching myself (I&#x27;m currently studying algorithms).<p>When you&#x27;re in school, the answer to &quot;how do you learn as much as possible&quot; is pretty straightforward - study hard, study smart, take hard classes etc. But I sense that the answer becomes different once you&#x27;re not a student anymore.<p>* I sense that what you work on has a lot to do with how much you learn. If true, how do you end up in an environment where you&#x27;re learning a lot?<p>* I sense that who you&#x27;re around has a lot to do with how much you learn (because of guidance and mentorship). How do you end up in an environment where you&#x27;re surrounded by the right people?<p>* Is it a good idea for more experienced programmers to still take classes? Read books? Etc.<p>* What are the skills worth having? Is it worth learning all the different frameworks? Being familiar with different levels of abstraction (hardware, architecture, systems level, scripting level...)? Drilling math and logic?<p>* Are there other disciplines that are particularly worth learning? I know PG talks about Art vs. Programming.<p>In general, how can a programmer learn as much as possible? And a related but tangential question, if you&#x27;re a good programmer, how did you get good?
======
jeanlescure
Right off the bat, with honesty based on what I have lived through already,
people who are smart and experienced enough to offer mentorship usually find
"pupils" who have already reached a certain level on their own. So trying to
surround yourself with "the right people" before gaining enough experience to
offer insightful feedback to your peers is truly like expecting a venture
capitalist to invest in your business when you possess no real business plan
to maximize their return over investment.

With that said, keep yourself efficiently informed. Read quick bits of
information to maintain a broad image of what's trending in the fields you are
interested in. Twitter, Quora, LinkedIn articles are all great places to get
just enough to keep yourself up-to-date.

Find what makes you truly passionate. At any given time there will be 20 or 30
emerging technologies which will claim and convince many that they're the next
big thing. So instead of trying to bloat-up your resume with every trendy set
of acronyms you can find, focus on the few that really resonate with your
programming personality. This will increase the quality of the learning you
are able to squeeze between (or even during) office hours.

In that same line of thought, keep your peers, and especially your superiors,
in the loop of what makes you passionate. Once you find the next big thing
which interests you, make a presentation and share the knowledge. This will
not only guarantee that you'll place yourself in a spot where opportunities
will multiply to work with the tools you like best, but, to make sure you're
truly prepared for thorough questioning, it'll also force you to truly sharpen
your knowledge and go that extra mile when digging through the docs and
teaching yourself.

------
whichdan

      * I sense that what you work on has a lot to do with how much you learn. If true, how do you end up in an environment where you're learning a lot?
    

Ask during your interview! If a company has a culture of learning, they'll
usually be very upfront about it.

    
    
      * I sense that who you're around has a lot to do with how much you learn (because of guidance and mentorship). How do you end up in an environment where you're surrounded by the right people?
    

Again, you'll have to scope this out during your interview. It's definitely
true that you need good teammates in addition to a culture supportive of
learning.

    
    
      * Is it a good idea for more experienced programmers to still take classes? Read books? Etc.
    

Definitely. I find that I read more programming books now than when I started
learning. The big difference is that I'm reading to learn about new concepts
and ideas, rather than "how does this piece of syntax work."

    
    
      * What are the skills worth having? Is it worth learning all the different frameworks? Being familiar with different levels of abstraction (hardware, architecture, systems level, scripting level...)? Drilling math and logic?
    

There's value in everything you listed, but becoming proficient in all of them
is a life-long task. Find what interests you and focus on it!

    
    
      In general, how can a programmer learn as much as possible?
    

The key is to spend every waking minute programming.

    
    
      And a related but tangential question, if you're a good programmer, how did you get good?
    

Wrote a lot of code, and constantly critiqued everything from the code I wrote
to the tools and processes I used.

~~~
a3n
All good advice.

> Find what interests you and focus on it!

There are different ways to interpret this. I think most people think of
programming related technologies.

But remember, software runs almost everything. Which means that, with your
programming skills, you can work in almost any industry that uses software.

So besides thinking about what about programming interests you, think about
what in the world interests you. I've been fortunate to work in: shipbuilding,
airliner manufacturing, , telecommunications, finance, web development and
medical device manufacturing.

Besides the programming technologies, the subject matter is usually at least
as interesting, if not more.

It was really cool walking under 747s to get to my office.

------
kellros
Learning after school is self-study. Don't expect anyone (even a mentor) to
teach you what you need to know.

Every job comes with different challenges and requires learning new things.
You'll spend the first few years getting comfortable with the technical side
of things. When the business side becomes a more important/bigger challenge
than the programming side; that's when you know you're a developer.

My advice is this: identify role models in the fields/technologies you are
interested in and follow them. Try to find someone who is more passionate
about what you do than you (i.e. someone doing the same things as you but is
better than you) and learn all you can.

One of the books I can highly recommend is Evan's Domain Driven Design, it
makes it easier to reason abstractly about business.

