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

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

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

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

问:若要做好编程工作,必须积累很多年的经验才行吗?

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

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

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

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

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

随着年龄的增长,我开始愈加相信:成为更加优秀的程序员的方法是抛开编程。你需要休整一下,放下编译器,好好评估一下自己正在做的事情。编写代码固然重要,但这只是整个过程中的一小部分。

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

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

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

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

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

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

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

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

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

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

还是那句话:“你的兴趣爱好越广泛,你就越能胜任你的工作。

你可能感兴趣的:(程序员)