
Letter to a Young Developer - joshuacc
http://avdi.org/devblog/2011/08/19/letter-to-a-young-developer/
======
pnathan
Depending on where someone is is where I would advise people...

One of the issues I've seen with CS students is simple inexperience. They
simply did not have experience coding outside of the simple assignments they
were handed. They, consequently, were largely bad at programming.

My single piece of advise to early CS students who want to get better but
haven't really hit their stride yet is to _code_. Write and maintain a program
that is over 5KLoC. Keep coding. And code some more. You have to have a base
of experience, or all the sage advise will go over your head like a smell in
the wind. :-)

~~~
jseliger
I'm not a programmer / hacker, but this is almost exactly the advice I give to
people who say they want to be writers. If you want to be a writer... write. A
lot. And not just assignments you're given in school: those simply aren't hard
enough, and you'll be outcompeted, artistically and otherwise, by people who
do more. There is no speed limit: <http://sivers.org/kimo> .

------
6ren
+1 for wikiwiki (interesting discussions of issues I was concerned about that
I could not find addressed anywhere else); and stackoverflow (for issues that
documentation isn't clear on).

I would suggest that the hardest part of programming is not coding, not
learning APIs/tools, not managing projects or other people - and not even
getting clear on specifications. It's understanding problems and creating
solutions; this often requires designing new algorithms, but it also involves
restating problems into forms that are easier to solve. Arguably, there is no
actual coding in this.

But the way to be absurdly successful and useful is to find a need and meet
it. The quality of programming (in itself) is of almost zero relevance to
this.

------
Zimahl
Overall not a bad list, if a little too Ruby-focused. But he left out
something:

* Build Something. Get some hosting and build something that works, who cares if anyone actually uses it. Start simple and add features. This should get you thinking about design, things you did wrong that is hamstringing you now, refactoring to solve those issues, etc. In the end you have something you can show to potential employers and talk about with them. You can show them the code without a pesky NDA preventing you from showing your chops.

~~~
spacemanaki
Too Ruby-focused?? Ruby appeared twice in the list, and both times as examples
of much more general advice.

------
LKoi
The author forgot to mention how to cultivate an interest in coding which, I
think, is a very important part. I have seen so many CS students that didn't
like programming at all. They just finish the tasks their teachers give them
and never want to see one more LoC in their idle time(Ironically, they still
want to be great coders when asked). In my opinion, the first step to level up
to a programmer is to "force" oneself to love coding.

~~~
Adkron
You are comparing a college student to a professional...

First, you can't "force" yourself to love programming. If you came here for
the money and not the challenge, then you will fail. I spent a lot of time in
college learning about programming outside of class, but I also spent a lot of
time avoiding programming.

The experiences in other parts of your life also help shape you as a
programmer. Practicing 14 hours a day 7 days a week is not going to make you
the best programmer. Problem solving skills come from all aspects of life.

If you truly want to be a great programmer then you are going to have to
practice. The best advice isn't really about programming: -If you program 14
hours a day, and have no other life then it is time to find something else to
occupy some of your time. It will change the say you think and help you solve
problems better. You need some knowledge of people too or you will create
horrible solutions to people's problems, and you will never be successful. -If
you never program outside of work/school you need to find a side project. You
won't get great without practice. Take at least 4 hours a week to work on
something that someone is not forcing you to work on. This can be some OSS
project you have been hearing about. It can be a new OSS project you want to
build. It could even be the next big thing that will have you buying yachts
and race cars for the time you aren't coding.

------
herTTTz
Nice list, I particularly liked this one:

"Flip a coin. Heads pick Vim, tails pick Emacs."

That pretty much sums it up. Spending any time deciding between any of the two
is just wasting your time, if you are serious about programming you will
_eventually_ master both.

~~~
cmontgomeryb
"if you are serious about programming you will _eventually_ master both."

Starting to really dislike the text editor snobbery on HN.

At home I use TextMate for Python and Ruby, Eclipse for Java. At work, Eclipse
for Java and Visual Studio for C#. I'm not 'serious' about my hobby and career
because I like a different text editor to you?

~~~
herTTTz
It's not snobbery, it might have come out the wrong way (the word serious was
a bad choice), but the idea still stands. It's completely fine to use
different editors, as it is fine to keep developing web applications in php
and not trying things like ror/django/node.js/nextbigframework, or never
learning a lisp dialect.

But in all cases, just learning them will most likely improve your skills in
many ways. Maybe you won't change from textmate to vim or emacs, but you will
pick up many things from them that I believe will make your life easier.

------
sadlyNess
This goes up there with Zed's Advice from an Old Programmer. Good practical
advice for people just starting out.

