成为优秀程序员的方法就是抛开编程?

原文:How To Become a Better Programmer by Not Programming
做者:Jeff Atwood
html

我在2006年写过一篇题为“Programmers as Human Beings”(程序员,亦人类)的博客,文中我提到过本身当时正在读《编程大师访谈录》。这本书出版于1986年,它收集了众多计算机行业先驱的采访实录。这本书里面全部的采访都是值得一看的,尤为是比尔·盖茨访谈中的一个回答,能够说是一语中的:程序员

《编程大师访谈录》是对19位计算机行业先驱的采访实录,采访对象包括查尔斯·西蒙尼、比尔·盖茨、安迪·赫兹菲尔德、雷·奥奇、杰夫·拉斯金等。访谈涉及他们软件创造过程的灵感、技术、编程习惯、动机、反思,以及对将来软件的畅想等。问答中集结了这些计算机先驱的精辟言论,到处闪烁着智慧的火花。——译者注编程

问:若要作好编程工做,必须积累不少年的经验才行吗?网站

比尔·盖茨答道:“不是这样的。我以为在最开始的3~4年以后,你是否是一名优秀的程序员就已经定型了。更多年的历练,只会让你更多地了解到大项目管理和人员管理。3~4年的时间足以看清你的将来。在微软,没有一我的是在一开始几年毫无建树、而在后来出人意料地成为多面手的。经过和一我的聊他所写的程序,我能够立刻看出他是否是一名优秀的程序员。”spa

咱们已经知道,会编程的人和不会编程的人中间隔着一条鸿沟。设计

可是,在软件开发领域一样有相似的一句话,而这句话一般不为人所知:优秀的开发者和平庸的开发者之间存在着一条鸿沟。经过4年的专一编程,一位平庸的程序员会略有心得,但他始终没法蜕变成为一名优秀的程序员——优秀程序员所具有的素质彷佛是与生俱来的。server

我赞成比尔·盖茨的说法。依个人经验,你要么是一名优秀的程序员,要么不是,这二者之间没有灰色地带。不管你多么埋头苦干,这点是没法改变的。但若是你能接受这一点,又会产生一个悖论:若是经验不可以使你成为更加优秀的程序员,还有什么能够呢?难道咱们的技术水平永远不会提升吗?天资不够是否是就根本无望成为优秀的程序员了?htm

要回答这个问题,你必需要看到编程的痴迷本性。优秀的程序员擅长编程,很是地擅长,甚至你会称赞他们无与伦比。若是和我有点相像的话,他们应该会在电脑面前度过生命中全部可用的时间;随着时间的流逝,他们理所固然变得愈来愈优秀。有能力的程序员已经靠自身所掌握的编程技巧跻身于优秀程序员的行列了,可是若是你已经拥有了97%的编程才能,是什么使得你得到最后的这几个百分点,而且最终脱颖而出呢?对象

随着年龄的增加,我开始越发相信:成为更加优秀的程序员的方法是抛开编程。你须要休整一下,放下编译器,好好评估一下本身正在作的事情。编写代码当然重要,但这只是整个过程当中的一小部分。blog

DesignObserver.com上有这么一段话,提到了一点不错的建议:

Design Observer是一个致力于讨论各类设计话题的网站,包括:平面设计、社会创新、都市生活、流行文化和批判等。——译者注

这么多年下来,我开始意识到,我最好的做品老是源于那些可以引发我兴趣的事情,更或者是那些我本来就感兴趣(甚至饱含激情)的东西——这种兴趣贯穿于设计工做的整个过程。我相信,我至今对平面设计仍然充满着激情。而平面设计的关键在于,它老是包含了一些与它自己并不太相关的东西,好比公司法、职业足球、艺术、政治、Rober Wilson等。若是我不能对这些事情产生兴趣,我就很难把设计师这份工做作好。在我看来,下面的结论是必然的:你的兴趣爱好越普遍,你就越能胜任你的工做。

Robert Wilson(罗伯·威尔森),1941104日出生于美国德克萨斯州的瓦克市,是一位国际知名的美国戏剧导演和舞台设计师。最知名的戏剧做品为《沙滩上的爱因斯坦》,此剧被誉为后现代主义的表明做品。——译者注

对编程有激情是一件很美妙的事情,可是它很容易让你迷失在你已经证实本身够格的一项技能中,而且越陷越深。为了真正地成为一名更好的程序员,你必须培养本身对于编程周边全部事情的热情

后来在2005年的一次访谈中,比尔·盖茨继续阐述了他在1986年的观点:

工做的本质并非闭门造车(埋头写代码),我相信这一点很容易理解。最最匮乏的人才是那些既对工程技术有超强的领悟能力,又能够与核心开发人员创建良好的关系,而且能够充当与客户、市场等之间桥梁的人。像这种工程管理人才,即便在微软也是很缺的,因此咱们不得不常常鼓励一些人去尝试。

我很但愿看到有更多人投身于这些职位。他们除了掌握基本的工程技能以外,也把人员管理和群体动力看做是一项对本身的历练。要是这样,那就太好了!

咱们能够对这些人承诺,在他们从事这个职位的开头两年里,他们作的绝大多数事情都不是写代码,由于有不少方向可供选择。好比身处Office部门,你将参与建立这款神奇的产品,你会看到人们是怎么使用它的,两年时间很快就会过去,你要开发一个新的版本,而且深层次地改变生产力。你还能够作一些大胆的尝试,准确地知足客户的需求。

单单靠编程,你只能补足或者加强本身已有的编程技能,永远也没法成为一名优秀的程序员。你须要尝试去了解你的客户、你所身处的行业及其相关的业务!

仍是那句话:“你的兴趣爱好越普遍,你就越能胜任你的工做。

相关文章
相关标签/搜索