[Tutor] specific recommendation for a Python book, to move from baby-level to intermediate-level

Brett Ritter swiftone at swiftone.org
Wed Feb 15 16:50:42 CET 2012


On Wed, Feb 15, 2012 at 7:46 AM, Joel Goldstick
<joel.goldstick at gmail.com> wrote:
> Programming is all about doing it -- over and over.  I think Malcolm
> Gladwell proposed that it takes 10,000 hours to get good at anything.
> Its great to be smitten, but there is no shortcut.

Jumping in because this is a favorite topic of mine.

The 10,000 hours has been followed-up on a lot, and as a I recall (I'm
no expert) it varies considerably.  Experts (meaning that they have an
intuitive approach to problems) can arise in much less time, while
others (with a rule-based understanding only) can put in far more than
10,000 hours and still not become experts.

What I've found works for me personally is to combine _doing_ (which
is essential and unavoidable) with _variety_ in the tasks and also to
google the heck out of "best practices", "anti-patterns", and "tips"
on the topic.  Make sure to get a feel for the reliability of the
source of these tips, and don't trust them blindly, instead try to
understand them.

For example, there are three levels of progression in handling how
Python uses "self" in objects:

1) This is stupid, other languages are smarter than this.
2) I do it without worrying about it because I'm used to it, but I
don't really get why it works that way.
3) I understand how "obvious" alternatives won't work as Python is
modeled and have come to appreciate the way it works.

You can't jump straight to #3, but if you know it's there you can
regularly poke at the issue as you're otherwise learning (via doing)
and get closer to a higher understanding more quickly than writing
10,000 hours of "To Do" lists will get you there.

Other common enlightenments to strive for:
* I grok list comprehensions
* I understand generators
* I understand decorators
(where understand is more than "can use")

-- 
Brett Ritter / SwiftOne
swiftone at swiftone.org


More information about the Tutor mailing list