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

kingstarer 2014-03-18 02:32:18
原文:How To Become a Better Programmer by Not Programming
作者:Jeff Atwood

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

还是那句话:“你的兴趣爱好越广泛,你就越能胜任你的工作。”
...全文
340 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
瑞卡哥哥 2014-04-01
  • 打赏
  • 举报
回复
分多分少都要来接一把,此楼一半,其他均分吧
kingstarer 2014-03-22
  • 打赏
  • 举报
回复
一个优秀的程序员应该是思考半天写一行代码或者一行代码没写出来 他主要做的事情应该是思考编程
kingstarer 2014-03-22
  • 打赏
  • 举报
回复
引用 10 楼 bobo928843007 的回复:
看大神的言语,我就像地上的一只小蚂蚁
大师也是蚂蚁,稍强壮一些而已 天道之下都是蝼蚁
bobo928843007 2014-03-21
  • 打赏
  • 举报
回复
看大神的言语,我就像地上的一只小蚂蚁
kingstarer 2014-03-20
  • 打赏
  • 举报
回复
引用 8 楼 jy251 的回复:
赞成这篇文章中的很多观点,全面的程序员才是优秀的程序员 我现在为了给我们单位的某个部门写某个模块之前,我都会去那个部门兼职一段时间,体验一下他们的需求 编码确实容易让人迷失在成就感中,如果说编程给我最多的是什么,给我最多的是思维的逻辑性与成就感
你有成为架构师的潜质 架构师是全才,是超人
jy251 2014-03-20
  • 打赏
  • 举报
回复
赞成这篇文章中的很多观点,全面的程序员才是优秀的程序员 我现在为了给我们单位的某个部门写某个模块之前,我都会去那个部门兼职一段时间,体验一下他们的需求 编码确实容易让人迷失在成就感中,如果说编程给我最多的是什么,给我最多的是思维的逻辑性与成就感
kingstarer 2014-03-19
  • 打赏
  • 举报
回复
引用 6 楼 RisJazz 的回复:
我是掌握魔法的大师!
your magic is mine
可爱的小灵儿 2014-03-19
  • 打赏
  • 举报
回复
我是掌握魔法的大师!
kingstarer 2014-03-19
  • 打赏
  • 举报
回复
这么好的贴没人关注
gogogo 2014-03-18
  • 打赏
  • 举报
回复
维护论坛氛围,杜绝纯表接分
啊呀 2014-03-18
  • 打赏
  • 举报
回复
kingstarer 2014-03-18
  • 打赏
  • 举报
回复
努力成为革命导师吧,你的思想比你的代码更值钱
kingstarer 2014-03-18
  • 打赏
  • 举报
回复
优秀的程序员是艺术家,是先驱,是神 他们做的主要事情不是编码而是编码革命
VB6.0全称为VisualBasic 6.0,是微软公司推出的可视化编程工具MSDN之一,是目前世界上使用最广泛的程序开发工具。如果你是一个对编程一无所知,而又迫切希望掌握一种快捷实用的编程语言的初学者,那选择VB 6.0没错的。即使考虑到VB程序本身编译和运行效率较低的不足(嘻嘻速度现在不是问题吧),单是它的快捷的开发速度,简单易学的语法,体贴便利的开发环境,它仍不失一款优秀编程工具,是初学者的首选。   也许你会问,我以前没学过任何一种语言,我能快速上手吗?别担心,没问题VB的语法的和QBASIB语言是基本相同的,也就是说它的语法是最容易被初学者所接受的。另外VB提供的是可视化的开发环境,我们可以象搭积木一样构建出程序的界面,而且VB提供了丰富的控件组,省去了我们自己写代码实现这些效果的麻烦,这样我们就能把更多的精力放在程序功能的实现上,所以VB学起来简单,用起来方便。   接着看看VB语言的前景,在目前各种编程语言共存的时代,VB会不会落伍呢?当然不会了,在我写这篇文章的同时,微软已经透露了VB7.0将完全面向对象的消息,可以肯定下一代VB的功能一定会强大很多,我们这些所谓的 VB 程序员总算可以放心了,VB不会落后于时代,毕竟它是使用人数最多的优秀的开发工具。   好了,侃了这么多关于VB的台前幕后,总之是为想学编程的你树立信心,编程一点都不难,只要你决定了开始,就让我们一起踏上愉快的编程之旅吧。   接下来谈谈怎样学习VB,先说说“看实例学VB6.0”系列教程,它是面向编程初学者的VB入门教程,这个教程的特点是抛开晦涩难懂的概念和语法,不做内容上的堆积和罗列,而是采用了每节一个生动有趣的小例子的形式,每个小例子中会涉及到一个或几个VB编程的知识点(可能是控件,也许会是某个函数或编程小技巧),使你快速入门。希望你学完此教程后能达到下述的效果:   从对编程一窍不通或从未接触过编程的状态,通过学习能够对VB6.0的编程环境比较熟悉,掌握VB开发界面的使用方法;对VB语言的基本语法大致了解,知道常见的语句的意义;学习VB常用控件的使用方法,并能将它们灵活运用到应用程序中;能开发简单的VB程序。到那时你已经能够继续深入的学习VB编程,可以继续参与到程序设计栏目其他版块的学习中去,嘻嘻,目标就是这样啦。

594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧