
Learn Python The Hard Way: a new book by Zed Shaw - wyclif
http://learnpythonthehardway.com/
======
gcv
A nice quote from the last chapter:

 _Programming as a profession is only moderately interesting. It can be a good
job, but if you want to make about the same money and be happier you could
actually just go run a fast food joint. You are much better off using code as
your secret weapon in another profession._

Well said, Zed. Very well said indeed.

~~~
starkfist
_You are much better off using code as your secret weapon in another
profession_

In what fields is this true? What is the metric of "better off?" More money?
More "respect?"

~~~
gte910h
Marketing: You can analyze and check your data 100-1000x faster than your co-
workers. Hell, you can make entire vendors obsolete. Additionally: Making
graphs without opening Excel shaves days of work off your year.

Biology: You can catalog and simplify your workflow by breaking things up and
correctly keeping them all organized while doing things the fast way.

Author: You create smart searches, web spiders, pattern recognition (to
capture your repetitive sections) and you learn formatting. Additionally, the
text editor skills are _very_ nice for some types of writing.

Automotive/Racing: Calculating gear ratios? Analyzing race data? Optimizing
pit stops? Not everyone is a formula one racer.

Small Businesses: Automated Scheduling of Clerks/floorpeople, inventory
managment, loss detection.

Fashion: Modeling (no pun intended) cloth usage by shape cuts, number of seams
required, etc.

~~~
billybob
This is all great - if you're already a programmer and decide to pursue a
different career, but still like programming.

Notice how weird that is? If you like programming, why are you doing something
else? If you don't, why would you add programming to your duties as a race car
driver? OK, if you really love both, do both.

Otherwise, you're just wasting time that you should be working on your actual
job by piddling around in related programming projects. You're probably being
mediocre at both instead of good at one.

~~~
josh33
> Notice how weird that is? If you like programming, why are you doing
> something else? If you don't, why would you add programming to your duties
> as a race car driver? OK, if you really love both, do both.

It's not weird to like more than one thing. It's also not weird to look at all
of the areas you enjoy working in and make a combination of them work. This is
what allows us to make a unique contribution.

------
XFrequentist
From the final chapter:

"Programming as a profession is only moderately interesting... You are much
better off using code as your secret weapon in another profession.

People who can code in the world of technology companies are a dime a dozen
and get no respect. People who can code in biology, medicine, government,
sociology, physics, history, and mathematics are respected and can do amazing
things to advance those disciplines."

Don't know about the programming profession, but the secret weapon bit is true
to a degree that might shock many of the readers here. I would even go so far
as to say that NOT knowing how to program causes ridiculous waste of resources
in other disciplines.

Working as an epidemiologist during the H1N1 pandemic, I saw literally dozens
of man hours drained on repetitive statistical reporting and database tasks
that the average reader here could probably automate in under an hour. There
were lots of extremely smart people running around with a ton of important
things to do, but since no one (myself included) really knew how to program,
what were we to do? I think I was the only one to even have the inkling that
we could probably be replaced by a few Excel macros.

I don't know this guy's back-story (or why he seems to inspire such
antipathy), but this passage got me very excited! I'd already bought into the
idea that learning at least the basics of programming would be a good way to
improve my general analytic thinking ability (a noble goal, IMHO), but I was
being held back by the thought that it was a bit of a frivolous endeavor. This
has really inspired me to get started!

Secret weapon indeed! Wooo!

[EDIT: I see several others have commented on this bit. Sorry to be
repetitive!]

~~~
zedshaw
Yep, that's the idea. Writing a book for programmers isn't really that useful.
There's plenty of those and adding one more programmer to the tech scene would
be like spitting into the Pacific.

But, if I can improve every other discipline by making it easier for them to
learn to code, and then get them to use code to improve things, then that's a
much better goal.

~~~
XFrequentist
That sounds like a good goal indeed. Looking forward to reading it!

------
douglasputnam
As a teacher I can attest that it's impossible to find decent programming
"text books" for Python, PHP, etc for classroom work. Most of the books you
see on the bookshelves at Great Big Book Chain may be great books for
programming language autodidacts, but they don't get adopted in courses
because they universally lack relevant exercises for newbie students.

As a result, instructor's have to create all of the questions and exercises
for the course---he/she might as well work without a book. At MIT, the Intro
to Programming Course (using Python), doesn't have a textbook because, say the
instructors, there are no good _textbooks_ for Python. If Zed can come up with
well-paced and instructive questions (Little Schemer-style), he's got a
winner.

BTW, If you plan to contribute questions to Zed's book, try to put yourself
into a newbie state of total ignorant bliss. Remember that the ideas you take
for granted and think of as "simple" are completely daunting to beginners.
Pacing is everything.

------
jonpaul
Sometimes I'm not sure if Zed is a prima donna or just misunderstood. But, one
thing is for certain. Zed definitely contributes to his respective
communities. He contributes a lot. Probably more than most of us ever will.

Thank you Zed for your hard work and contributions.

~~~
zedshaw
I prefer Diva. It implies I have skill. :-)

~~~
ube
Zedonna?

~~~
zedshaw
Oh, holy crap that's good. You may see me steal that.

------
Adaptive
If Zed started off life as a slightly loose cannon coding rock star, I believe
we've seen him evolve into something much more important with greater staying
power. Here's hoping he stays excited and engaged in the Python community.

~~~
zedshaw
I was _never_ a coding rock star. That's an image other projected on me along
with "he's a Ruby guy", "he's a Python guy", "he only codes scripting
languages", and many other bizarre myths.

But hey, like David Lee Roth said, "Who am I to fuck up a good myth?"

~~~
aaronblohowiak
I think the ZSMFA thing was hilarious, but it went over most people's heads
(sadly.)

Watching your vim-fu at the first RoR conf (which I don't expect you to
remember,) I still long for a series of vim screencasts from you, going into
things like custom vim scripts and how you integrate it into your workflow.

------
jmm
Holy... The output of this guy is as awesome as it is diverse. Way to go, Zed.

------
abyssknight
I said this on Twitter directly to Zed, but it bears mentioning here. This is
a sweet introduction to both programming and Python. I started playing with
Python a couple weeks ago and wrote a few small applications. One of my
pythonista friends looked over my code and noted that I could have used string
formatting instead of concatenating everything. None of the books and
tutorials I'd skimmed mentioned the print formatting but this book explained
it perfectly. Best of all, its succinct.

I'm sure there will be a ton of new exercises added to the book, and more
topics to come, but this is a great start. Thanks Zed!

~~~
zedshaw
Glad it's working for you. As I work on the book, let me know if any exercise
isn't making sense. Many times if that's happening there's something you're
missing I need to include.

~~~
elblanco
I'll be getting some free time in about 3 weeks and have been interested in
picking up my python education again (after a very long hiatus). I've written
some non-toy language tools in it and was impressed with the language, but the
existing books I was learning from were too hard to keep referring back to and
I've long since forgotten even basic syntax.

I'm following this book with a great deal of interest and plan on working
through it completely. I'll let you know if I get any hangups.

------
vinhboy
Be sure to read the end.

~~~
ube
The message at the end is quite good. It is the same message he gave at the
[http://blog.cusec.net/2009/01/05/zed-shaw-the-acl-is-dead-
cu...](http://blog.cusec.net/2009/01/05/zed-shaw-the-acl-is-dead-cusec-2008/)
talk. I discovered Zed through the rant against Ruby's community (I had done a
google search about ruby disadvantages or something like that and his post
came up). He's grown up quite a bit.

~~~
zedshaw
No, not really. :-)

~~~
ube
Well...I suppose my criteria is weak since I couldn't find your Judas Priest
image on your site...so I assumed you've grown up (a little) :-P

~~~
zedshaw
Ohhhhh, I forgot some people equate "serious" with "grown up". Sorry, yeah,
I'm totally grown up now that I took that one joke down. :-)

------
gte910h
Still very incomplete. Goes from exercise 10 (by which point they've not done
if statements) to exercise 27 (where they start learning about AND OR etc.

Tone/diction/sentence structure is a bit patronizing. I think Shaw was going
for more basic than is required for most intelligent adults.

~~~
zedshaw
Yep, still a work in progress. Ex 27 is where they switch to learning logic,
so I laid a marker there to work toward.

It's not really patronizing so much as "gentle" to non-programmers. I do
however poke fun at programmers because non-programmers have some odd beliefs
about coders being these gods that they aren't. By cracking little jokes are
programmers I'm hoping to get them over this fear.

~~~
gte910h
Oh hi there, forgot this is a small world we're in and you might actually read
my comment. You're a good writer most of the time, however, I believe you're
trying to use a certain style here, and that style may not be appropriate for
this type of work if you are aiming at adults and children both; it is
appropriate for a children's book though.

The patronizing part wasn't the non-programmer part and making fun of
programmers. I actually loved the line about VI/Emacs. It was the overly
simplified sentences. Let me dig the pdf out:

 _You can print things out with print and you can do math. The next step is to
learn about variables. In programming a variable is nothing more than a name
for something so you can use the name rather than the something as you code.
Programmers use these variable names to make their code read more like
English, and because programmers have a lousy ability to remember things. If
they didn’t use good names for things in their software they’d get lost when
they came back and tried to read their code again._

For instance in this section your actual sentences are very simple. Over and
over you use these simple sentences. And you use an explicit "you". It gives
the feel of a children's book (I don't know if you have kids, but if not,
google for some of the books or ask a co-worker to borrow some). I think
explicit "you" is fine, but the constant reassurance compounded with the
sentence structure and explicit "you" feels patronizing.

Other examples:

 _You might not know it, but every time you put " (double-quotes) around a
piece of text you’ve been making a string._

 _Most of these concepts will be exciting once you get them. You’ll struggle
with them, like wrestling a squid, then one day snap you’ll understand it._

I know several people professionally who'd benefit from the book if you upped
the "implicit respect" of the style a few notches. However, I'd be afraid to
give it to a few of them out of fear of insulting them with the way some
people will interpret the tone. I'm putting this out there in all earnestness.

Here are a couple books on two different styles which might be more applicable
for the work. They are on actual explicit styles of writing, although the
second pretends all writing should look like that.

Clear and Simple as the Truth by Thomas & Turner (Classic style).

Nonafflink: [http://www.amazon.com/Clear-Simple-As-Truth-
Writing/dp/06910...](http://www.amazon.com/Clear-Simple-As-Truth-
Writing/dp/0691029172/ref=sr_1_1?ie=UTF8&s=books&qid=1272401038&sr=8-1)

Example of classic style:

 _When I was a boy, there was but one permanent ambition among my comrades in
our village footnote [1. Hannibal, Missouri] on the west bank of the
Mississippi River. That was, to be a steamboatman. We had transient ambitions
of other sorts, but they were only transient. When a circus came and went, it
left us all burning to become clowns; .... now and then we had a hope that if
we lived and were good, God would permit us to be pirates. These ambitions
faded out, each in its turn; but the ambition to be a steamboatman always
remained._ \--Mark Twain

Style by Williams (Plain Style):

Nonafflink: [http://www.amazon.com/Style-Clarity-Chicago-Writing-
Publishi...](http://www.amazon.com/Style-Clarity-Chicago-Writing-
Publishing/dp/0226899152/ref=sr_1_1?ie=UTF8&s=books&qid=1272401237&sr=8-1)

Example: _After Peter the Great died, seven out of eight reigns of the Romanov
line were plagued by turmoil over disputed succession to the throne._ \--
Williams edit to uncredited work on Russia

~~~
zedshaw
That's only patronizing if you take yourself too seriously. Otherwise it's
just direct and simple. That makes it easier to read and makes sure that the
prose doesn't make things seem more complex than they actually are.

Another way to put that is the complexity/simplicity of the prose attempts to
match the complexity/simplicity of the exercise.

~~~
gte910h
It's not me I'm worried about it coming off as patronizing to.

I'm worried about people I might recommend it to (and thereby seem patronizing
myself). With the current style, I'd probably only recommend it to kids and a
couple adults I know very very well.

Encouragement and assuming the user only knows what you have told them (which
you do in a few places) are the things that don't come off as "adult
literature". Hell, a couple teens I know would feel patronized by that, and
teens definitely take themselves seriously. The short sentence structure is
only the biggest of deal because of the other two facets. You could keep your
grade 6 FKA score but ditch the other two parts of the style.

As the tone is now, I'm pretty sure they'd take me handing this to them worse
than a X for dummies book.

~~~
Radix
Why can't you simply deride the language while praising the approach. Then the
adult can believe you aren't being patronizing, maybe the book is, but the
book is an effective way to learn. The teenagers can run through it in a short
time (or read through it if they should be reading another book), and the
adults will be fine. Have you heard how many adults say "oh I'm not very good
with computers"? What's there to be good with?

Not that the book is worth derision, just as a tactic for those who take
themselves too seriously.

~~~
gte910h
As I said before: >It's not me I'm worried about it coming off as patronizing
to.

I know Zed's history. I'm not going to have issues using the book. But random
non-programmers don't. And those are the people I'd hand the book to. I've got
a thicker skin than some of them, and wouldn't care about the tone of the tome
even if he directly insulted me. But THEY would. That's the issue.

~~~
jordyhoyt
You aren't listening. He said to, "deride the language" and "praise the
approach" to those you give the book to.

i.e. When you hand it to them, say, "the language is overly simple and
patronizing, but his approach is a good way to learn." Then your (apparently)
big-ego friends can mantain their air of superiority while reading the book,
without being insulted.

Not that I agree that his language needs to be changed; on the contrary I
think is is great. I would have loved such a gentle introduction, at any age.

~~~
gte910h
They're not friends who I'd hand the book to.

They're certain people at companies I know and work with professionally who
ask me "Hey gte910h, what's a great way to learn programming".

I'm known as respectful yet blunt. If I handed this to someone, they'd wonder
if I was saying they came off as retarded or that I had no respect for them
(or programming is much harder than it is for the type of tasks they want to
do).

For people who work in relationship based businesses (many non-programming
businesses are), what others think about you is very important. The idea I
thought them incompetent would be a very bad thing.

Some of the people I'd hand a book that went through the typing approach
without the coddling part would hear the book loud and clear and possibly not
remember the message I could use to hand them the book: "Hey, this guy who
tends to be a bit insulting to people in some of his writing wrote a book on
programming. He acts like you're a dull 11 year old throughout the book. But
hey, his method is good".

These aren't people with big egos, but I'd sure as come off as having one
about my profession if I tossed this at them. Especially if they handed it off
to a third person who I never met but had heard of me.

I'd just be more respectful and less helpful and not ever mention the
problematic resource. It's not worth the risk I'd lose a client over it.

>You aren't listening. He said to, "deride the language" and "praise the
approach" to those you give the book to.

It wasn't clear to me the poster was talking about those you give the book to.
It just sounded to me like he wanted me to give props to Shaw for his approach
while saying he wrote in a manner some would take offense to.

As to Zed Shaw, I think I've honestly put in more work on the book already
than 99% of the people who love it unconditionally have. I've read it in it's
entirety and given suggested changes. Editors and critics are very useful when
writing books.

He doesn't need to change the style. If he changes the style, he can market it
as a book for adults and children. If he keeps the style the same, he should
market it as a book for 12 year olds. Then, when someone hands a copy, it says
right there on the cover "Yo, this is for kids" and no one get's insulted as
you can reveal "Hey, this is really good, in spite being for 12 year olds".

------
smiler
The output of Zed Shaw is unbelievable in terms of stuff he actually gets done
and delivers. Maybe he should deliver a few GTD seminars :)

~~~
DannoHung
He'd just yell at you until you left the room and started doing something
else.

~~~
pyre
From what I hear is online persona and real life persona term to be quite
different.

~~~
zedshaw
No, it's just there's more abusive dicks online who need to be told off. :-)

------
rincewind
if zed is indeed the anti-why, this will be his non-poignant guide

~~~
Lozzer
Zed's soothing guide to Python?

------
sync
Interesting captcha system on the login page:
<http://learnpythonthehardway.com/login>

~~~
wmf
That ASCII art CAPTCHA looks geeky, but it should be trivial to crack and is
thus worthless if very many sites use it.

~~~
zedshaw
Or, just hit the little javascript button at the bottom that fills it in.

It's only there to keep bots out. It's not all that secure.

~~~
codexon
You mean script kiddie scanners.

 _document.getElementById('p').value='5544e312'_

This isn't going to stop anyone who knows urllib.

~~~
zedshaw
Have you tried using urlib and urllib2? I think that alone prevents anyone
from getting to the site. :-)

Seriously though, I'm going for simple and if there's a problem then I'll lock
it down more completely.

~~~
codexon
I have written multiple crawlers for sites like facebook with them.

 _import
urllib2;urllib2.urlopen("<http://learnpythonthehardway.com/login>).read()_

Since you only want basic protection, you could avoid the visual captcha all
together and have the "Fill out captcha" button auto-submit.

------
j_baker
The restrictions on proposed exercises seem a bit extreme:
[http://learnpythonthehardway.com/wiki?name=Proposed+Exercise...](http://learnpythonthehardway.com/wiki?name=Proposed+Exercises)

If a beginner can't learn OOP or use projects that span multiple files, are
they really ready to learn Python the hard way?

Plus, I would disagree with the definition of "complex math". My college
discrete math teacher (who was from Mexico) said that he learned everything he
was teaching us in elementary school, so I don't think that just because you
learned some math in college necessarily makes it complex.

~~~
zedshaw
Well, they can't quite code Python when they're done with this book. They
could then move onto a book that teaches those concepts.

And if you think about it, there's no point in learning OOP before you've even
learned basic logic, functions, and I/O. That's what I learned first (because
there was no OOP when I was learning).

Finally, your professor and you are _not_ who this book is meant for. The
simple fact you think discrete math is alright for anyone but a CS major is
proof of that. Not to be mean, but it is.

~~~
j_baker
"The simple fact you think discrete math is alright for anyone but a CS major
is proof of that."

Fair enough, but that doesn't make me _wrong_. There is a valid case to be
made for teaching discrete math to people who aren't CS majors or even in
college:
[http://www.artofproblemsolving.com/Resources/articles.php?pa...](http://www.artofproblemsolving.com/Resources/articles.php?page=discretemath)

In particular, the argument that discrete math is fun is the most compelling.
Be honest, what did you enjoy the most: algebra, calculus, or discrete math?
I'd argue that if you say algebra or calculus that _you're_ the abnormal one.
:-)

~~~
zedshaw
Calculus by far. I read this "Calculus Made Easy" by Silvanus P. Thompson and
it's still to this day my inspiration for explaining complex technical topics
to lay people. It's a fantastic book, and even if you know math you _must_
read it if you want to understand how to teach complexity to others.

~~~
j_baker
I'll check the book out, but I still say you're a freak. :-)

------
Keyframe
How is this better than python docs again? Seriously. It's not for beginners,
it's not for intermediate, it's not for advanced users in its current form.

I remember when I was a kid (cue _during the war..._ ) we had to type in
sheets of paper in order to play games, learned through modifying them,
experimenting like in a sandbox. I don't remember if I saw something similar
in the past 15 years or so. It doesn't even have to be a book, it would work
as a sandbox type of environment. I think I saw one based on scheme, but I
can't remember the name right now.

~~~
zedshaw
That's the feel I'm trying to capture, but in a more structured way so it's
more generally effective. I learned that way too. Typed in a game where a
Donkey had to dodge cars, all written in BASIC. Reams and reams of paper. Line
by line.

But, to be honest I also had some original aptitude, so I got lucky that this
worked out for me. Expecting other people to just "type in a load of code"
probably won't work the same.

~~~
ezy
One common theme, at least for the programmers growing up in the 80s, was that
all the BASICs had graphics support.

Like you, I didn't learn logic and control structures to print out tables of
numbers, I learned it so I could make an object move on the screen and to draw
pretty pictures. I learned all the print capabilities to make a pretty looking
layout on the screen and to get some random information "just so".

The reason I say this is that I like the idea behind this text, a lot, for
people who want to learn from nothing, but I don't think it will hold people's
interest for that long. I keep wondering if they'll just burn out if you're
doing nothing but printing out the textual results of logic puzzles.

I'm not asking for a video game, in fact, I'm not sure exactly what I'm asking
for, but there's got to be a way to light a fire in someone's head the same
way it lit in mine when I typed in "line 32,32 to 32,64" from the BASIC manual
and a red line appeared on the screen... and I realized I could do _anything_
on that screen with the right sequence of commands... _anything_.

(Well, I found out otherwise later... but that's how it felt)

(And yeah, I realize getting graphics set up in python sucks for rank
beginners... part of the reason I'm not sure exactly what should be done...)

~~~
zedshaw
Yes, but before you did any of that you did printing. Admit it, the graphics
came much later unless you started with logo. If you started with logo though,
you probably don't consider that language your first programming language.

I just think that until there's a solid totally idiot proof way to do "write,
run, fix" _and_ get graphics you'll fail at this. It's this patter of writing
out a file, running it, and fixing it that's missing really.

But, I also think making things fun for people is overrated. Too often we
think that in order to teach we have to entertain. Problem is that makes
people (kids and adults) who can't learn anything hard. Hard problems are not
entertaining. They may be satisfying, but until you've slogged through solving
a bunch of them they aren't really entertaining.

Anyway, I just don't think graphics and entertainment is where it's at. Making
it possible to accomplish the exercises and feel like you learned something
that gets you ready for fun and graphics is all I'm aiming for.

~~~
ezy
No, that actually wasn't the case -- although I can see why you'd think not. I
typed in the graphics example from the BASIC manual[1] that gave you a blinky
smily face and played with that. Ok, I went to printing and '10 print "hello"
: goto 10' shortly after though... :-)

Fair enough about the rest.

I sort of wish I could look at the innards of that manual again to see how
they structured it...

[1] [http://www.amazon.com/Getting-Started-Extended-Color-
Basic/d...](http://www.amazon.com/Getting-Started-Extended-Color-
Basic/dp/B000E35KDK)

------
madmanslitany
I have a younger cousin in high school right now who's just starting to show
some interest in an engineering career. It could be interesting to try to use
this to teach her to program. Tempted to try over the summer and then blog
about it. I think she's thinking either computer science or electrical
engineering, might be a good way to sway her over to my viewpoint from my
father's...

------
Tichy
Whoa, that was quick.

~~~
elblanco
He must have written a perl script that automatically writes a python book.

~~~
bad_user
Yeah, with Markov processes, taking sample data from StackOverflow.

------
mmacaulay
I've never heard of fossil before. There's a lot of noise around Git and
Mercurial these days (I just recently transitioned to Mercurial from SVN), but
fossil sounds like an interesting concept - and indeed, once I've got an SCM,
the next thing I go looking for is some kind of bug tracking system to
integrate it with. Nice!

~~~
sandGorgon
<http://news.ycombinator.com/item?id=809493>

------
Qz
_If a programmer tells you to use vim or emacs tell them no._

------
simplegeek
This is awesome. I love this guy, really. Zed, I'm interested in knowing how
did you evolve as a programmer? Do you've a degree in Computer Science? If no,
how did you go about learning all the stuff that you know today? Totally OK,
if you choose not to answer this one ;)

Non-native speaker, so sorry for bad English.

~~~
zedshaw
I have a business degree, MIS. CS was boring with no depth, but business let
me study a ton of random things and focus on people and computing.

Other than that, I don't drink, so that gives me lots of extra money and free
time. Like I just bought another guitar. Woot! G&L Comanche. Can't wait.

------
jacoblyles
This is awesome, Zed. I would have loved this five years ago, the first time I
tried (unsuccessfully) to teach myself programming. I actually tried to learn
with emacs and SICP because I took advice from the "wrong" people.

The second time I tried to learn programming it was a lot easier because I was
in grad school and had people to help me. If you don't have people to help
you, then existing materials are very hard to learn from. This book seems
perfect for solving that problem.

------
n8agrin
This looks like a good start for what may become a great resource. Like others
have noted, the ending is well worth reading, pity it had to arise from such
vitriol.

------
blehn
I like the idea of this -- any chance for a Ruby spin-off?

~~~
sigzero
Maybe by someone else? I think Zed is done with the Ruby camp. Although only
he can really answer that.

~~~
zedshaw
I registered learncodethehardway.org in order to do similar books for other
languages. I'd do a Ruby book, but probably after a C book.

~~~
bhdz
Would you include Haskell in?

------
jay_kyburz
I know Zed was just reacting to dive into python, but if I seriously wanted to
help people learning to program I wouldn't write a pdf, I'd make a fun
interactive website.

The first think Zed asks his readers to do is find the terminal and get a
python command prompt up un going. arrg..

The first thing a new programmer should do is something cool and interesting,
or useful. Immediate gratification.

10 PRINT "Jay Rocks" 20 GOTO 10

~~~
zedshaw
I'll have a page on the site they go to for the first exercise, so it's always
updated with the latest best starter thing to do.

However, the #1 problem all the people I've tested this on have is getting
basic gear going. The simple act of just "write, run, fix" is even daunting.
The goal of this section is to give them a very simple set of things to do so
they can get to just enough working gear to do write, run, fix.

That "immediate gratification" just doesn't exist anymore. It existed for
BASIC because Microsoft included it for free for years, so no install needed.
These days there just isn't something like that out there.

The _only_ exception to this would be a Javascript book. But, javascript is
such a giant nasty mess it would be hard to teach things like this. Without
good error messages, syntax errors, etc. it'd be pointless to teach it.

~~~
steveklabnik
> These days there just isn't something like that out there.

If I could find some time to fix up Shoes and then Hackety, there would be.
It's hard when you can't get the library you're building on to compile...

------
tingley
This is wonderful. I've "been thinking" forever about trying to write a book
to teach children (in particular) how to program in python. But among other
problems, I had never come up with an approach that made sense. (That is, one
that didn't start with something stupid like "data types".)

So, I really like the approach here, and I really like the tone.

~~~
seanc
Allow me to recommend "Hello World, Computer Programming for Kids"

<http://www.manning.com/sande/>

Full disclosure, I know the author, and helped out a bit with the book.

------
tgerhard
I've just started showing my nine-year-old son how to do simple printing and
math in Python (basically Chapters 2 and 3 in LPTHW), and he is pretty stoked
about it. This will be a great addition.

Not to overburden the discussion regarding the last chapter, but I have to
agree with the very last line: "You can code. They cannot. That is pretty damn
cool."

------
donaq
That was an interesting read. I think Zed has very nicely anticipated many
questions a novice programmer might ask while avoiding the trap of trying to
spare them the grunt work required to understand the basic concepts a
programmer requires.

------
samratjp
Thank you zedshaw for doing this. I do hope this will make it to the HN
"evergreen" page (if pg ever makes one). It seems like every now and then
someone asks how to get started with coding and well now they can.

------
bufordtwain
I like it a lot so far - a very nice start to a book that is very different
from the typical beginner book (in a good way).

------
mikeklaas
The <title> element reflects the current page, which is a nice improvement
over his other new sites <g>.

------
c00p3r
Maybe the case is not that programming became less interesting, but that there
are too many (mediocre) programmers.

------
Keyframe
on a related note, has anyone read through Thinking in Python?

~~~
jacobolus
Is that supposed to be a yes-or-no question?

~~~
Keyframe
Maybe

