
Teach Yourself Programming in 10 Years. - djshah
http://www.norvig.com/21-days.html
======
RiderOfGiraffes
An earlier submission: <http://news.ycombinator.com/item?id=43243>

Mentioned quite regularly: <http://searchyc.com/teach+yourself+norvig+ten>

~~~
byrneseyeview
This is offtopic, but: why / how do you find so many duplicate articles? When
I saw that this was posted, I was immediately pretty sure you'd leave a
comment linking to past posts. Are you doing this manually, or do you have a
script (that, e.g., checks the 'new' page and searches for the title and URL
on searchyc?)

~~~
RiderOfGiraffes
Why and how are different. "Why" is because I prefer to see discussions linked
together rather than spread. In this case there is some previous discussion
(although not a lot) and anyone coming across this and finding it interesting
might find the previous discussion worth reading also. They could search for
it themselves, but it's easy for me to do, and one person's work (mine) saving
lots of people work seems a good trade-off.

"How" is different. I just tend to remember stuff like this easily, so I know
if something's duplicated. A quick search will usually find it, and that often
turns up other stuff that I find interesting in its own right. I haven't
scripted this, I just remember stuff.

That also feeds back into the "Why." I've found many things of value (to me)
on HN because an article that was vaguely interesting prompted a search for an
earlier duplicate, and that search turned up related, more interesting
material. Having found any duplicates I then put in the comment to help save
other people some time because, well, why not?

However, I'm pretty much considering stopping. Although I'm not really
bothered about karma, the recent instance of PG linking the ability to vote to
one's average karma has made me re-evaluate what I'm doing. Although it's only
approximate, clearly "karma" embodies an indication of the behavior PG wants.
Flagging duplicates like this drags down my average karma because it rarely
gets up-voted and occasionally gets down-voted. That suggests that, in some
sense, PG doesn't want me to do it, even if I think it saves people time and
helps to cross-connect related discussions.

If you'd like to discuss this more, feel free to email me.

~~~
tokenadult
To allay your concerns, I almost always upvote links to previous submissions
on HN. I make them, and find such links valuable, so I upvote them when
someone else makes them.

P.S. I find the best way to find previous HN threads that I remember is a
site-restricted Google search with a few keywords, e.g.,

[http://www.google.com/search?q=site%3Anews.ycombinator.com+p...](http://www.google.com/search?q=site%3Anews.ycombinator.com+previously+submitted)

~~~
bootload
_"... I find the best way to find previous HN threads that I remember is a
site-restricted Google search ..."_

Way better ~ <http://searchyc.com/previously+submitted?sort=by_date>

~~~
s-phi-nl
I find both Google and searchyc useful. When one doesn't find what I'm looking
for, the other usually does.

------
csallen
>> _Why is everyone in such a rush?_

Because everybody has different goals. Although many programmers seek to
become masters of their craft, I suspect many more look at programming as a
tool to be used in furthering some other pursuit. Those who see it as a tool
are understandably better-served by "Learn C Before Dinner!" books than they
are by a 10-year program.

This reality may be frustrating to experienced coders. It results in legions
of sloppy programmers producing piss-poor code. It is, however, reality. And
I'm not sure it's such a bad thing. Most of the people I interact with don't
know a thing about computers -- I'm pleasantly surprised when I talk to
someone who's had a run-in with some programming, no matter how brief.

~~~
toadpipe
If you are not interested in learning how to do it properly, then hire someone
who is. Failing that, do not attempt to do it in C.

------
wglb
I agree with this being reposted occasionally, as its lessons are fresh to
newcomers.

Several of the other comments reference useful books on the topics,
particularly on algorithms. One book that has a lot of important lessons about
becoming a good programmer is _Coders at Work_.

One of the interviews is with Peter Norvig who tells about a bloggers failed
attempt at solving sudoku. Peter's solution used a very novel approach to the
problem that is non-obvious, and I would put this in the category of what you
can learn from studying algorithms. They are not all about reducing
computational complexity. Perhaps the other extreme example is an epic stack
overflow answer that repeats many times that you can't use regular expressions
to properly parse html. And this keeps coming up, it seems.

And I found the lessons in _Coders at Work_ somewhat startling. I recommend it
to new programmers and old programmers alike. It's not about the IDE, it's not
about the language, it's not about the testing.

------
ErrantX
I realised last night that I've actually been programming for almost 10 years
now.

And you know; Im still going to be learning something in another 10 years. I
think that's a really good thing.

------
morphir
or you can take a algorithm class and become one within 2 years, as somebody
once stated ;)

~~~
nostrademons
I don't think it works quite like that.

When I got my first programming job, straight out of high school, I finished
tasks in 2 days that took the other programmers there 4 months. I figured that
if I was that much faster than them, I ought to be able to become a world-
class programmer in just a couple years (or more accurately, I thought I could
become a world-class physicist in my 4 years of college and then a world-class
programmer in the 2 years afterwards).

So I resolved to take all the shortcuts I could. I'd read all the classic
books in the field and learn from those with more experience than me. I'd take
internships with experienced, accomplished programmers and pick their brains
for everything I could. I'd take on volunteer coding tasks so I could get some
experience building things on my own. I'd cherry-pick all the tough courses at
college so I got the best part of a CS degree without having to sit through
stuff I already knew.

I did all that. I've read all the classic CS books - GoF patterns, Mythical
Man Month, Extreme Programming stuff, Pragmatic Programmer, Knuth, SICP, TAPL,
Dragon Book, On Lisp, etc. I've worked with programmers that wrote large
chunks of curses, Rogue, vi, Jini, JavaSpaces, HotSpot, Gallery, Stratus,
Equalogic, DEC compilers, Python, Google, and a bunch of other projects they
don't brag about. I wrote Amherst's course-evaluation system, and rewrote the
software for a 100k-user site, and wrote one of the front-page hits for
[haskell tutorial]. I have that CS degree, and aced the algorithms class of
which you speak, and took compiler design and OS and computer graphics too.

It's been 9.5 years since that first programming job, and it still feels like
I have a really long way to go before I'm actually a world-class programmer.

The part I didn't realize, in my youthful arrogance, was that I was comparing
myself to the wrong people. When Norvig tells you how to become a programmer
in 10 years, he's assuming you're _already_ taking all the shortcuts you can.
It still takes 10 years. Most of the people you'll meet straight out of high
school, or in most colleges, or in random companies, will _never_ become
programmers in the sense that Norvig's talking about. Eventually they'll give
up trying, and start grumbling on Reddit about how the software industry is
mostly boring cubicle farms where they push around Enterprise JavaBeans and
never use the algorithms that they learned in college.

~~~
cousin_it
Which topics in programming interest you now?

~~~
nostrademons
Professionally, I've been doing mostly web UIs, bunch of JavaScript.
Personally - I've always had a fondness for programming language design,
theory, and implementation and (naturally) am working on my own compiler. I've
also picked up a bit of an interest in machine learning and distributed
processing, mostly because of where I work now.

------
mrcharles
Is 10 years when the site comes up? 503 Unavailable.

