

Learning the Programmer's Craft - ojbyrne
http://blogs.zdnet.com/BTL/?p=9953

======
kaens
"Finding a mentor" is good advice. So is the other advice, but most of it has
been stated many times by many people (read code, write code, think about code
you have written, etc).

I personally have had two people that I would call "mentors" in the time that
I've spent learning about programming. One was my high school comp-sci teacher
- we learned using C++, but he did not teach the language, he taught general
concepts - and did a very good job at it.

The other is a friend of mines older brother. He's one of the smartest people
I know, and a brilliant coder although he doesn't really code much anymore. I
have a printout of code he wrote for a TI graphing calculator that is a 2d rpg
engine, including NPCs that have semi-generative text dependent on "important"
plot points, and smooth-scrolling. A lot of the code is code-writing code and
memory management - it's incredibly impressive given the limitations of the
platform that it's written in. This guy is one of the only people I'm around
on a semi-regular basis that I can really "nerd out" with, and he's always got
good advice on improving system designs and performance - mainly because the
vast majority of his experience is building non-trivial systems really close
to the metal.

A mentor can come from anywhere, I suppose that people on newsgroups or forums
would work as well if you work well with that sort of communication /
exposure. There is something to be said for face-to-face conversation with
someone who is a _lot_ more experienced than you are though.

I remember one time I was playing around with a sort of image transformation
algorithm, and this guy took a look at what I was doing, picked up a pad of
paper and scribbled out about 20 lines of psuedo-C which did the same thing,
did it faster, and did it with constant memory use. I probably would have
arrived at the same solution after a while of thinking, but seeing someone
identify something that they've seen before and spit out the optimal solution
can be a very enlightening (and humbling) thing.

