时间:2019-08-02 19:36:06 作者:johnnyl 浏览量:36
当然,没有一个数字能够作为最终的答案,假定一切的技能(如编程、下棋、跳棋和音乐演奏)都需求完全相同的时刻来把握,或许一切人都需求完全相同的时刻是不合理的。正如 K. Anders Ericsson 教授所说,“在大多数范畴,即使是最有才调的人也需求许多时刻才能到达最高水平,这是十分值得注意的。10000 小时这个数字让你感觉到,我们说的是一周 10 到 20 个小时。”
程序员必读经典长文图3
你想成为一名程序员
以下是我的编程秘诀:
对编程感爱好,由于爱好而编程。请坚持满足的爱好,以便你乐意投入你的 10 年或许 10000 小时。
编码。最好的学习方法是实践。更严格地说,“在特定范畴中,一个人的最高水平不是由于经历的积累主动获得的,而是经过深思熟虑的改善,经历丰富的人也能够提高水平。”,“最有效的学习需求有一个明确的使命,对特定的人来说难度适中,还要有信息反馈以及重复试错和纠正错误的时机。”“Cognition in Practice: Mind,Mathematics,and Culture in Everyday Life”这本书正是这一观念的风趣参阅。
与其他程序员交谈;阅览其他程序。这比任何书本或培训课程都重要。
假如你乐意,能够在大学(或研究生院)呆四年。这将使你有时机获得一份需求证书的作业,让你对这个范畴有更深的了解,但假如你不喜爱学校,你能够自学或在作业中获得相似的经历。不管怎么,光靠书本常识是远远不行的。“The New Hacker's Dictionary”的作者 Eric Raymond 说:“计算机科学教育不能使任何人成为一个专业的程序员,就像学习刷子和颜料不能够使某人成为一个专业的画家相同。”我雇用过的最好的程序员之一只要高中学历,他开发了许多优异的软件,拥有自己的团队,并且拥有满足买下一个夜店的股票期权。
与其他程序员一同做项目。在某些项目上你是最好的程序员,而在某些项目上你是最差的程序员。当你是最好的时分,你能够锻炼主导一个项目的才能,并用你的远见鼓励他人。当你是最坏的时分,你能够学习大师们做什么,观察他们不喜爱做什么(由于他们会让你为他们做自己不喜爱的作业)。
程序员必读经典长文图4
接手其他程序员的项目,了解他人写的程序。当原来的程序员不在时,学习需求怎样了解和修正程序。想想怎么规划你的程序,让那些在你之后的人保护它们更简单些。
学习至少六种编程言语。包含一种强调类笼统的言语(如 Java 或 C++),它强调函数笼统的言语(如 Lisp 或 ML 或 Haskell),一种支撑句法笼统的言语(如 Lisp),一种支撑声明性规范的言语(如 Prolog 或 C++模板),一种强调并发性的言语(像 Clojure 或 Go)。
记住“computer science”中有一个“computer”。知道计算机履行一条指令、从内存中提取一个字符(有或没有缓存)、从磁盘中读取连续的字符以及在磁盘上寻找新的方位需求多长时刻。
参与言语规范化作业。它或许是 ANSI C++委员会,也能够是决定你自己的本地编码风格是有 2 个或许 4 个空间缩进。不管哪种方法,你都能够了解到其他人对一种言语的喜爱,他们的感触有多深,乃至或许了解他们的感触。
有很好的判断力,尽快习惯言语的规范化
考虑到这一切,仅仅经过书本学习你能走多远是个值得置疑的问题。在我的第一个孩子出世之前,我读完了一切的“How To”类型的书,但仍然觉得自己像个笨手笨脚的新手。30 个月后,当我的第二个孩子出世时,我重新学习了那些书本常识吗?不,相反,我依靠的是我的个人经历,这比专家们写的几千页书更有用,更让我定心。
Fred Brooks 在他的论文《No Silver Bullet》中指出了寻找优异软件规划师的三个过程:
尽早体系地发掘尖端程序员。
指使一名工作导师负责指导他,并慎重对待履历。
为成长中的程序员提供彼此交流和互相鼓励的时机。
这假设一些人现已具有成为一个巨大的程序师所必需的素质,那么你的作业便是适当地诈骗他们。Alan Perlis 的说法愈加简洁:“每个人都能够学会雕琢,但 Michelangelo 有必要学会怎么不雕琢。对巨大的程序员来说也是如此。”Perlis 以为,伟人有一些逾越练习的内涵品质。可是这些品质是从哪里来的呢?是先天的吗?或许他们是经过勤奋养成的?正如 Auguste Gusteau 所说:“任何人都能学会煮饭,但只要无畏的人才是巨大的。”我以为这更像是乐意将一生中大部分时刻投入到某种实践中,但或许无畏是总结这一点的一种方法。或许,正如 Gusteau 的批评家 Anton Ego 所说:“不是每个人都能成为巨大的艺术家,但巨大的艺术家能够来自任何地方。”