1 April 2014

I did it my (hard) way.

Let's start this series by gambling all my credibility.

[Deep breath.]

[Another deep breath.]

[Yet another deep breath.]

The hard way is not my way.

There, I said it. And now, please, let me defend my position.

I know that Learn Python The Hard Way is one of the, if not the, most common answers to the question "I want to learn Python, can you suggest me a tutorial?" - so I don't doubt that there are people who find it extremely helpful. And I don't think it's a bad book; but I think that it has some serious limits.

Learn Python The Hard Way reminds me of Gioacchino Rossini's joke about Richard Wagner: "a composer who has beautiful moments but awful quarter hours."

Here's an example of a beautiful moment; even better, a deeply wise one:

As you study this book, and continue with programming, remember that anything worth doing is difficult at first. Maybe you are the kind of person who is afraid of failure so you give up at the first sign of difficulty. Maybe you never learned self-discipline so you can't do anything that's "boring." Maybe you were told that you are "gifted" so you never attempt anything that might make you seem stupid or not a prodigy. Maybe you are competitive and unfairly compare yourself to someone like me who's been programming for 20+ years.

Whatever your reason for wanting to quit, keep at it. Force yourself. If you run into a Study Drill you can't do, or a lesson you just do not understand, then skip it and come back to it later. Just keep going because with programming there's this very odd thing that happens. At first, you will not understand anything. It'll be weird, just like with learning any human language. You will struggle with words, and not know what symbols are what, and it'll all be very confusing. Then one day BANG your brain will snap and you will suddenly "get it."

(Emphasis mine.)

I cannot find a single fault in this passage.

It's encouraging and it keeps you grounded at the same time. It spells out the incredibly important study trick of "your tutorial is not a TV series, spoilers are good." It reminds me of what John von Neumann once said, that in mathematics you don't understand things, you get used to them (something should be taught to every child, to dispel that horrid idea that "I don't understand this" means "I'm hopelessly not good at this").

I want to stand up and cheer.

But then there are the quarter hours.

Twenty. Nine. Chapters. To. Get. To. See. An. If.

Twenty. Nine.

This self-discipline borders on masochism.

As someone who always finds it easier to solve other people's problems than to imagine brand new problems (although I'm good at finding the problematic limits of any solution; but I digress) I truly appreciate the incredible amount of exercises that the book offers. But there's a terrible side effect of this "old master teaches young apprentice by the way of apparently mundane and repetitive tasks" approach: the young apprentice becomes so diligent that they never step out of line. It's not just a matter of being overwhelmed by the amount of lines that you have to copy: it's ending up depending on the teacher even to break the toy to see what's in there.

Perhaps I'm giving for granted the desire to rebel. The joy of "hey, let's see what it happens if I turn left instead of right as you told me!" The mindset of not taking anything for granted.

(I'm not sure whether the paragraph above is more introspective or paradoxical.)

If you don't have this questioning instinct, it's likely that Learn Python The Hard Way is the perfect book to kickstart it; and since this instinct is a fundamental tool in any scientific and technical field, The Hard Way could be a very good way to start your journey into programming.

By the way: The Hard Way will also take you quite far if you stick with it. Many of the topics in the poster are there.

I still think it's very hard, if not altogether impossible, to teach rebellion - especially through discipline. But maybe it's just my hedonism, all play and not enough work, no reverence to my betters.

You decide. I'm off to boost my rebellious feelings with some Wagner. The last quarter hour of The Valkyrie. Beautiful opera about a girl rebelling to her father to obey her father's wishes; it's worth sitting through all four hours (plus intervals) of it. By the way: have I ever told you that I love Wagner much more than I like Rossini? Personal taste can be so strange and, well, personal.

Everyone has their own way, after all.

Unfortunately necessary disclaimer: let's not go into the "Wagner and politics" or the "Wagner was an [expletive] who lived on his friends' money while having affairs with their wives" issue. At least, not here.