程序员必读经典长文:用十年时间自学编程
雷锋网 AI 科技评论按,相信很多做技术的同学都自学过,也看过「Teach Yourself Programming in Ten Years」这篇文章。虽然离初次发表已经好几年了,但所有试图自学编程的人都应该发自内心的同意它的说法(除去少数过时的具体技术部分)。直到今天,这篇经典的文章依然很有借鉴意义。以下是这篇文章的中文版。
为什么每个人都这么匆忙?
走进任何书店,你都会看到如何在 24 小时内自学 Java,同时你还可以看到很多在几天或几小时内学会 C、SQL、Ruby、算法等等的书籍。在亚马逊使用「title: teach, yourself, hours, since: 2000」进行高级搜索,我发现了 512 本这样的书。在排在前十名的书籍中,有九本是编程书籍,剩下一本是关于财务管理的。用「teach yourself」代替「learn」,或者用「day」代替「hours」产生的结果类似。
结论是,要么人们急于学习编程,要么编程比其他任何东西都更容易学习。Felleisen 等人在他们的书《How to Design Programs》中提到,「糟糕的编程很容易,即便是白痴都可以在 21 天内学会」时,请对这一观点表示赞同。
让我们来分析一下在 24 小时内学会 C++意味着什么:
用十年时间自学编程
很多研究人员发现,在各种领域要成为专家大约需要十年时间,这些领域包括国际象棋、音乐创作、电报、绘画、钢琴演奏、游泳、网球和科学研究、神经心理学和拓扑学等等。成功的关键是不断的实践:不只是一次又一次地做,而是每次都用一个超出你目前能力的任务挑战你自己,尝试去解决它,在做它的同时和之后分析你的表现,纠正错误,然后重复这个循环。人和事情都没有真正的捷径:即便对莫扎特来说也是如此。4 岁就被称为音乐天才的他,在开始创作世界级的音乐之前又花了 13 年时间来打磨自己。另一个例子是披头士乐队。披头士乐队似乎以一系列的热门歌曲和 1964 年在艾德沙利文秀上的亮相而一夜成名。但实际上自从 1957 年以来,他们一直在 Liverpool 和 Hamburg 的小酒吧里面演出,虽然很早以前他们就受到大众的欢迎,但他们第一次取得重大成功的专辑「Sgt. Peppers」是在 1967 年发布的。
Malcolm Gladwell 已经普及了这个想法,尽管他的观点是 10000 小时专注的努力,而不是 10 年。Henri Cartier-Bresson (1908-2004) 有一句名言:「你的前 10000 张照片是你最差的作品。」(他没有预料到使用数码相机,有些人可以在一周内就拍完 10000 张照片。)真正成为专家可能需要一辈子:Samuel Johnson(1709-1784)说:「成为任何领域的卓越人士都需要毕生的努力,投机取巧并不可行」。Chaucer (1340-1400) 抱怨说:「人生太短暂了,而知识是无穷的」。Hippocrates (约公元前 400 年) 因为那句名言「ars longa, vita brevis」而被人称颂,这句话的原文是「Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile」,意思是「生命很短暂,但是技艺却很高深,机遇转瞬即逝,探索难以捉摸,抉择困难重重」。
当然,没有一个数字可以作为最终的答案,假定所有的技能(如编程、下棋、跳棋和音乐演奏)都需要完全相同的时间来掌握,或者所有人都需要完全相同的时间是不合理的。正如 K. Anders Ericsson 教授所说,「在大多数领域,即使是最有才华的人也需要很多时间才能达到最高水平,这是非常值得注意的。10000 小电影蜜蜂时这个数字让你感觉到,我们说的是一周 10 到 20 个小时。」
你想成为一名程序员
以下是我的编程秘诀:
考虑到这一切,仅仅通过书本学习你能走多远是个值得怀疑的问题。在我的第一个孩子出生之前,我读完了所有的「How To」类型的书,但仍然觉得自己像个笨手笨脚的新手。30 个月后,当我的第二个孩子出生时,我重新学习了那些书本知识吗?不,相反,我依靠的是我的个人经验,这比专家们写的几千页书更有用,更让我放心。
Fred Brooks 在他的论文《No Silver Bullet》中指出了寻找优秀软件设计师的三个步骤:
这假设一些人已经具备成为一个伟大的程序师所必需的素质,那么你的工作就是适当地哄骗他们。Alan Perlis 的说法更加简洁:「每个人都可以学会雕刻,但 Michelangelo 必须学会如何不雕刻。对伟大的程序员来说也是如此。」Perlis 认为,伟人有一些超越训练的内在品质。但是这些品质是从哪里来的呢?是先天的吗?或者他们是通过勤奋养成的?正如 Auguste Gusteau 所说:「任何人都能学会做饭,但只有无畏的人才是伟大的。」我认为这更像是愿意将一生中大部分时间投入到某种实践中,但也许无畏是总结这一点的一种方式。或者,正如 Gusteau 的批评家 Anton Ego 所说:「不是每个人都能成为伟大的艺术家,但伟大的艺术家可以来自任何地方。」
所以继续购买 Java/Ruby /JavaScript /PHP 书籍吧,你可能会从中得到一些有用的东西。但是它们不会在 24 小时或 21 天内改变你的生活,也不会教会你作为一个程序员所需要的所有专业知识。何不努力工作,在接下来的 24 个月内不断改进?
参考书籍
前面问题的答案
典型 PC 上各种操作所需要的大致时间:
附:语言选择
有人会问,他们应该先学什么编程语言。这里没有标准答案,但请考虑以下几点:
考虑到这些标准,对于要学习的第一种编程语言我的建议是 Python 或 Scheme。另一个选择是 JavaScript,这不是因为它是为初学者精心设计的,而是因为它有很多在线教程,比如 Khan Academy 的教程。但每个人的情况都略有不同,还有一些其他的好选择。如果你还是隔小孩,你可能更喜欢 Alice 或 Squeak 或 Blockly(年长的学习者也可能喜欢这些)。这些都没关系,重要的是你要选择并开始。
附录:书籍和其他资源
有人问他们应该从哪些书和网页上学习。我再重复一遍:仅仅看书是不够的。但我可以推荐以下资源:
备注
T. Capey 指出,Amazon 网页上那个「Complete Problem Solver」页面把《Teach Yourself Bengali in 21 days》以及《Teach Yourself Grammar and Style》这两本书移到了「购买此书的用户还购买过这些产品」这个区域内。我估计大部分人就是从这个区域看到这本书的。感谢 Ross Cohen 的帮助。
via:http://norvig.com/21-days.html
雷锋网雷锋网
雷峰网版权文章,未经授权禁止转载。详情见转载须知。
上一篇:长沙城区小学生上课时间调整到8:30 听证会代表多数赞同
下一篇:托育机构加盟:2022年十大托育排行榜上榜品牌推荐
最近更新素质教育
- 信用信息赋能,助力社会信用体系建设
- 今天距第二届全国博士后创新创业大赛总决赛还有10天!
- 北京自学考试和成教有什么不同?
- 道县:开展2023年基础教育业务工作培训
- 融入智能技术 赋能创新人才培养
- 怎么知道自己是不是脊柱侧弯?一个方法教你判断!
- 让长三角市民共享,上海城市业余联赛市面越做越大
- 华容县实验小学:最美莫过夕阳红 最浓不过敬老情
- 原创恭喜!王楚钦代替樊振东世界排名来到第一位,双方积分差仅有15分
- 自考会计专业有哪些课程?
- 播出预告丨上海市天山初级中学:不一样的学习评价
- 杭州亚残运会火炬传递圆满成功 “桂冠”画出现代版“富春山居图”
- 自考学士学位英语什么时候报名
- 日本学校要求的托福分数
- 证明差“老师”能教出好“学生”?江苏博士最新研究成果,引发国际关注!
- 让共同发展繁荣之路越走越宽广
- 原创拒绝恩比德!尼克斯目标清晰!锡伯杜点名要他,三分王成球队答案
- 喜庆乔迁五周年,共度九九重阳节
- 蚂蚁庄园今日答案最新:味精加热太久真的会致癌吗
- 2024年辽宁省普通高考报名即将开始
- 粤港澳大湾区第三届职业技能大赛将于10月23
- 难忘那次5天5夜的长途机动,还有那个同车的义务兵驾驶员
- “周五课堂”来了新老师
- 在学生中走俏的萝卜刀引发争议,消保委提醒:警惕其暴力暗示
- 校园圈丨让学生走出家门做历史作业,结果出人意料