山歌好比春江水

苟利国家生死以,岂因祸福趋避之。

两年,终于自由了……

Posted on 十一月 12, 2008 - Filed Under 杂七-杂八

整整两年前,我下决心把做网站必需的技能全部学会(其实,我只需要做“内容型”网站)。这两天检查了一下这两年的时间表与任务记录,发现自己真的已经走了很远:

W3Schools当作起点,加上十几本书,再加上不知道多少网站和无数次GOOGLE……很多的时候,并不一定要学到“顶级专家”的,但起码要够用。只要够用,就可以用,而在用的过程中,还是会不断进步的。

前两天还在说,几乎任何一种技能“在习得的那一瞬间,整个世界都会为之而变”。这两天我被巨大的快乐包围——每到极致,就想起来艾尔帕西诺在《Carlito’s Way》(1993)中的台词,想像他一样呐喊:

I am free at last, free at last — thank God Almighty, I am free at last!

两年真的不算长。

想起来有一篇文章一直以来就是我的路灯,转载如下(原文地址中文版):


Teach Yourself Programming in Ten Years

Peter Norvig

Why is everyone in such a rush?

Walk into any bookstore, and you’ll see how to Teach Yourself Java in 7 Days alongside endless variations offering to teach Visual Basic, Windows, the Internet, and so on in a few days or hours. I did the following power search at href=”http://www.amazon.com”>Amazon.com:

and got back 248 hits. The first 78 were computer books (number 79 Learn Bengali in 30 days). I replaced “days” with “hours” and got remarkably similar results: 253 more books, with 77 computer books followed by Teach Yourself Grammar and Style in 24 Hours at number 78. Out of the top 200 total, 96% were computer books.

The conclusion is that either people are in a big rush to learn about computers, or that computers are somehow fabulously easier to learn than anything else. There are no books on how to learn Beethoven, or Quantum Physics, or even Dog Grooming in a few days.

Let’s analyze what a title like Learn Pascal in Three Days could mean:

Teach Yourself Programming in Ten Years

Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music. In another genre, the Beatles seemed to burst onto the scene with a string of #1 hits and an appearance on the Ed Sullivan show in 1964. But they had been playing small clubs in Liverpool and Hamburg since 1957, and while they had mass appeal early on, their first great critical success, Sgt. Peppers, was released in 1967. Samuel Johnson (1709-1784) thought it took longer than ten years: “Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.” And Chaucer (1340-1400) complained “the lyf so short, the craft so long to lerne.” Hippocrates (c. 400BC) is known for the excerpt “ars longa, vita brevis”, which is part of the longer quotation “Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile”, which in English renders as “Life is short, [the] craft long, opportunity fleeting, experiment treacherous, judgment difficult.” Although in Latin, ars can mean either art or craft, in the original Greek the word “techne” can only mean “skill”, not “art”.

Here’s my recipe for programming success:

With all that in mind, its questionable how far you can get just by book learning. Before my first child was born, I read all the How To books, and still felt like a clueless novice. 30 Months later, when my second child was due, did I go back to the books for a refresher? No. Instead, I relied on my personal experience, which turned out to be far more useful and reassuring to me than the thousands of pages written by experts.

Fred Brooks, in his essay No Silver Bullets identified a three-part plan for finding great software designers:

  1. Systematically identify top designers as early as possible.
  2. Assign a career mentor to be responsible for the development of the prospect and carefully keep a career file.
  3. Provide opportunities for growing designers to interact and stimulate each other.

This assumes that some people already have the qualities necessary for being a great designer; the job is to properly coax them along. Alan Perlis put it more succinctly: “Everyone can be taught to sculpt:Michelangelo would have had to be taught how not to. So it is with the great programmers”.

So go ahead and buy that Java book; you’ll probably get some use out of it. But you won’t change your life, or your real overall expertise as a programmer in 24 hours, days, or even months.


ReferencesBloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985.
Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.Bryan, W.L. & Harter, N. “Studies on the telegraphic language:The acquisition of a hierarchy of habits. Psychology Review, 1899, 8, 345-375

Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.

Chase, William G. & Simon, Herbert A. “Perception in Chess” Cognitive Psychology, 1973, 4, 55-81.

Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.


AnswersApproximate timing for various operations on a typical 1GHz PC in summer 2001:
execute single instruction 1 nanosec = (1/1,000,000,000) sec
fetch word from L1 cache memory 2 nanosec
fetch word from main memory 10 nanosec
fetch word from consecutive disk location 200 nanosec
fetch word from new disk location (seek) 8,000,000 nanosec = 8 millisec

Appendix: Language ChoiceSeveral people have asked what programming language they should learn first. There is no one answer, but consider these points:

Given these criteria, my recommendations for a first programming language would be Python or Scheme. But your circumstances may vary, and there are other good choices. If your age is a single-digit, you might prefer Alice or Squeak (older learners might also enjoy these). The important Nthing is that you choose and get started.


Appendix: Books and Other Resources

Several people have asked what books and web pages they should learn from. I repeat that “book learning alone won’t be enough” but I can recommend the following:


Notes
T. Capey points out that the Complete Problem Solver page on Amazon now has the “Teach Yourself Bengali in 21 days” and “Teach Yourself Grammar and Style” books under the “Customers who shopped for this item also shopped for these items” section. I guess that a large portion of the people who look at that book are coming from this page. Thanks to Ross Cohen for help with Hippocrates.来自:xiaolai

Rand Posts:

Comments

Leave a Reply