牛逼程序员是如何炼成的?

jopen 10年前

        英文原文:What Makes A Great Programmer?

        一切就像发生在昨天一样,在我的记忆中还是那么清晰、宛若历历在目。那是在 2000 年,Pargas 博士正在给我们上数据结构课,当他谈及某些数据结构的时候,他在墙上投影了一个 SSH 会话。在回答完某位同学提出的问题后,他随后总结了一句,“如果大家想成为一个真正的计算机科学家,那么你需要从现在就开始学习使用 vi 文本编辑器”。我仍然记得他说这话的时候,脸上带着真挚的笑容,但是事后却证明他的说话是不甚正确的。不过,那个时候我还年轻,很容易受外界影响。所以, 下课后我一回到宿舍,就迫不及待地开始学习如何使用 vi 编辑器了。这样一段时间之后,我突然发现我对 vi 真的熟练多了。

牛逼程序员是如何炼成的?

        时间飞逝,6 年过去了,TextMate 编辑器渐渐成为了我的左膀右臂。尽管那个时候我正在做一个 Java 开发项目,但是我还是挤出时间去学习 Rails,并在自己的业余时间搞了个 Rails 项目来练练手。甚至,为了提高自己,我把我读的每篇编程文章,看的每段编程视频,都尝试着用 TextMate 编辑到文本中,然后看看能否成功演示出来。但是我需要每天使用的破机子渐渐地满足不了我了,所以我搞了台 Mac,然后在开机 10 分钟之后就购买了 TextMate 服务。

        坦诚而言,文本编辑器的转变绝对不是让我成长为牛逼程序员的根本原因。

        好的工具,能给你锦上添花。所以,工具很重要。但是我也相信,老虎 · 伍兹如果在一个垃圾俱乐部还是会成为一个伟大的高尔夫运动员,梅西不穿 鞋子和我们踢球球门照进,拉斐尔 · 纳达尔挥着 60 年代制造的木球拍还是能轻易打败我?好吧,我敢肯定,他们绝对能一巴掌轻易“拍死”我。技能、知识和经验也是我们成长为一位优秀的程序员不可或缺的重要部 分。

        这样说来,工具不能造就优秀的程序员,那么什么可以呢?

        我觉得,一个优秀的程序员的长成需要很多方面的积累,其中还包括,我们正在从事的工作,以及和我们一起工作的人。并且我认为在那些成功的软件开 发员身上都有着一些特质,是值得我们大家学习的。但是我不确定这些特质是需要你去专门去学习的,还是你与生俱来就有的,不过,我深深的觉得,如果我早就能 多多学习这些特质,而不是责怪自己的工具不好,把编辑器换来换去的,我能达到的职位一定比现在高。

        以人为本

        据我所知,那些顶级程序员都把人的考虑放在第一位。因为他们深深的明白,他们所编写的软件对别人来说,绝对是部“有字天书”,即便是已经完工的 后端,还是除了开发人员别人看的云里雾里的协议,都一样难懂。考虑到这一点,他们一般会写个文档,以便于后来者使用他们的代码。这些优秀的程序员抱着“以 人为本、为人民服务”的态度,通过自己工作时间之外的努力,解决了那些复杂的难题,留下解决方案给他人享用。

        求知若渴

        厉害的程序员对于知识就像海绵吸水一样渴求。他们特别喜欢了解新鲜有趣的时事资讯,他们大量阅读,不管是网上阅读还是书刊报纸,都不放过。他们热衷于尝试,然后从经验中学习。即使是新生的编程语言和工作平台,他们也毫不畏惧,绝不退缩。

        擅于问题匹配

        假设你在写软件,一段时间之后,肯定会有问题出现,这时候,你瞧着它,“哎,咋那么像我以前解决过的那个问题呢”?然后你找到以前那个方案,把 它改头换面一下适用到当前的问题中去,那么恭喜你,已经 get 这个有价值有内涵高大上的技能了。当然,如果能在每次使用这个方案的时候,都能改进一下,那就更好了。

        不过,需要注意的是,我们绝对不能就此盲目地认为,过去能起效果的解决方案应用到现在的这个问题上就一定有用。这时候就需要擅于巧妙地匹配问题这个技能大显身手了。不过,你还得睁大眼睛看清楚,有的时候能套用过去的解决方案,而有的时候则不能。

        我为“编程”狂

        我弟弟在高三的时候选修了 Python 编程语言,我问他你怎么喜欢上编程的,他特别不解的看了我一眼,说不知道我是不是疯了竟然去做程序员,那是他做过的最无趣最没意思的事情之一,他懊悔得捶 胸顿足。好吧,在某种程度上,他的想法也没错。我和电脑交流的时间比和人交流的要多得多。当我把一行一行的基本数字和字母运行之后成为一个成功的软件时, 一种巨大的满足感刹那间充斥了我,飘飘欲仙。不是每个人都喜欢编程,不过我见过的那些顶级程序员没有一个不爱写软件的。

        持之以恒

        软件开发比我们想的都要来得慢,来的难。所以我们必须迎难而上、持之以恒。有时候,你想要写的代码仅仅只需要你花费足够的耐心去炮制就可以了。 也有时候,我们在编程时感到乐趣十足,当然也有这样的时候,因为已经写了几百遍写得都快吐了,但是还是需要继续强迫自己去写。酸甜苦辣,个中滋味,如人饮 水,冷暖自知。不过即使再难再枯燥,那些优秀的程序员绝不会半途而废,因为他们胸中自有沟壑,他们明白自己在做什么,为什么要这样做,并且享受这个向胜利 一步一步前进的过程。

        以上是我认为一个优秀程序员应有的一些特质,如有遗漏之处,还望补充。最后,我想问下,亲你是牛逼程序员吗?

        译文链接:http://news.html5tricks.com/how-to-be-great-programmer.html

        翻译作者:html5tricks – 蒋丽丽