

Advice to a young programmer - jgrahamc
http://www.jgc.org/blog/2008/06/advice-to-young-programmer.html

======
emmett
Generally good advice, but I disagree with #9 (avoid debuggers, learn to unit
test). Unit testing is important perhaps if you have a large project with many
contributors, but no good hackers I know learned to program with testing and
"Best Practices".

~~~
jgrahamc
I disagree (but that I did write TFA). I have a piece of commercial software I
sell, it has an extensive set of unit tests. I'm the only developer and I
wrote them because I need to know that if I ship a new version to my customers
that I haven't broken anything. Unit tests give me the flexibility to
refactor, improve, bug fix, etc. with the assurance that I'm not messing
things up.

It would be very costly for me to ship broken code to my customers.

~~~
emmett
For sure, but did you start learning to program by using unit tests? "Use unit
tests" is great advice for a developer shipping commercial software, and bad
advice for a 13 year old who wants to learn to code.

------
warwick
Why would debuggers or unit testing be an exclusive choice? I see unit tests
as a way to work in the existing code without breaking it, and a debugger as a
way to figure out what's happening when you've broken something.

------
pavelludiq
Wow, i started learning seriously 6-7 months ago and i basically did all that.
I even have most of the recommended books.

------
morisy
I think a lot of that is great advice for a thirteen-year-old just getting
feet wet, particularly the suggestion about diving in and hacking around.

I self-learned a whole lot about programming (and game design) with
<http://www.alice.org/> around the same age. It gives you a built-in 3D engine
but learning more and more about Python lets you do cooler simulations. Maybe
he should check it out?

------
cliff
I don't know about you guys but I've never done this whole 'practice coding
with simple applications' thing.

When I started writing software I did it with specific goals in mind, things
that would either help me or others, and then found out everything I needed to
to accomplish that task.

Everyone has their own learning style, but this one seems to be rarely
presented.

------
parenthesis
I would add: find like-minded people (among your peers, and older 'mentors').

~~~
j2d2
Perhaps even recommend IRC. IRC has developed the brass balls on many of my
programming friends. Though it hurts at first, I'd recommend it to anyone
seriously considering programming professionally as a psychological benchmark
for having ones logic and presentation brutally criticized.

------
hugh
Didn't everybody want to be a games programmer when they were thirteen?

------
gojomo
_avoid debuggers_

I'm of the opposite school of thought: stepping through code with a nice
debugger -- even non-buggy code -- helps build the internal mental model of
how code works, so you can more easily 'run code in your head'.

