[Python-Help] Re: [Tutor] What would you say is the best way to continue learning python

Danny Yoo dyoo@hkn.eecs.berkeley.edu
Sat, 21 Sep 2002 17:48:00 -0700 (PDT)


On Sun, 22 Sep 2002, Magnus Lycka wrote:

> Regarding Norvigs notice that it might take 10 years to learn things, I
> could mention the yearly programming tests referred to in DeMarco &
> Lister's excellent book "Peopleware". In their measurements, people with
> ten years of experience was not better than those with two years of
> experience.

Gerald Weinberg has written an article called "How Long Does it Take to
Make a Programmer?" in his book, "Understanding the Professional
Programmer".  I hope he doesn't mind if I quote extensively from his book.


Weinberg says:

    """... Programming is another subject with no shortage of experts.
    Six weeks of ``training'' is typically considered all that is
    necessary to elevate one to the ``expert'' level, beyond the need for
    learning anything new and qualified to design online life-support
    systems.  When you see an advertisement for ``experienced''
    programmers, it often means about one year or perhaps two years of
    experience...

    ... Yet before we go too far in ridiculing those who hold this view,
    we ought to acknowledge that fifteen years of experience, in and of
    itself, need not teach you anything about programming..."""


One problem with people who do too much programming is that they risk
losing perspective.  To demonstrate the need for flexibility, Weinberg
mentions the "Manhattan Problem":

    """The problem is to determine how much the $24 supposedly paid for
    Manhattan island in 1627 would be worth today if it had been placed
    in a savings account at 4.5 percent annual interest."""


One program that could do this might look like:

###
year = 1627
amount = 24
while year != 2002:
    amount = amount * 1.045
    year = year + 1
print amount
###

And this works.


But Weinberg mentions that there is an alternative way of solving this
problem:

###
amount = 24.00 * (1.045 ** (2002 - 1627))
print amount
###


Weinberg continues: "If the most trivial problem imaginable can be
programmed in two ways that differ in cost by factors of 5 or 100, what
must the difference be between a professional and an amature job of
programming an operating system?"

My point is that it's not the language syntax itself that takes years to
learn: it's the things we try to express as code that takes practice to
get right.  And not just by practicing writing code in isolation, but by
looking and and understanding the programs that other people have written.


> Either way, I also suggest learning by doing. All people are different,
> and I don't think there is one method that fits all, but I'd try to make
> something practical, and then get back to this mailing list when I get
> stuck.

Yes, I agree; learning by doing works, and it's my feeling that it's a lot
more effective if it's done with other people.  In this sense, I believe
we learn any language more effectively through practice and exposure.


Talk to you later!