如何才能造就一个优秀的程序员
一切就像刚刚发生过一样。那是在2000年,Pargas博士正在给我们上数据结构课,当他谈及某些数据结构的时候,他在墙上投影了一个SSH会 话。在回答完某位同学提出的问题后,他随后总结了一句,“如果大家想成为一个真正的程序设计师,那么你需要从现在就开始学习使用vi文本编辑器”。我仍然 记得他说这话的时候,脸上带着真挚的笑容,但是事后却证明他的说话是不甚正确的。不过,那个时候我还年轻,很容易受外界影响。所以,下课后我一回到宿舍, 就迫不及待地开始学习如何使用vi编辑器了。这样一段时间之后,我突然发现我对vi真的熟练多了。
时间飞逝,6年过去了,TextMate编辑器渐渐成为了我的左膀右臂。尽管那个时候我正在做一个Java开发项目,但是我还是挤出时间去学习 Rails,并在自己的业余时间搞了个Rails项目来练练手。甚至,为了提高自己,我把我读的每篇编程文章,看的每段编程视频,都尝试着用 TextMate编辑到文本中,然后看看能否成功演示出来。但是我需要每天使用的破机子渐渐地满足不了我了,所以我搞了台Mac,然后在开机10分钟之后 就购买了TextMate服务。
坦诚而言,文本编辑器的转变绝对不是让我成长为牛逼程序员的根本原因。
好的工具,能给你锦上添花。所以,工具很重要。但是我也相信,老虎 · 伍兹如果在一个垃圾俱乐部还是会成为一个伟大的高尔夫运动员,梅西不穿鞋子 和我们踢球球门照进,拉斐尔 · 纳达尔挥着60年代制造的木球拍还是能轻易打败我?好吧,我敢肯定,他们绝对能一巴掌轻易“拍死”我。技能、知识和经验 也是我们成长为一位优秀的程序员不可或缺的重要部分。
这样说来,工具不能造就优秀的程序员,那么什么可以呢?
我觉得,一个优秀的程序员的长成需要很多方面的积累,其中还包括,我们正在从事的工作,以及和我们一起工作的 人。并且我认为在那些成功的软件开发员身上都有着一些特质,是值得我们大家学习的。但是我不确定这些特质是需要你去专门去学习的,还是你与生俱来就有的, 不过,我深深的觉得,如果我早就能多多学习这些特质,而不是责怪自己的工具不好,把编辑器换来换去的,我能达到的职位一定比现在高。
以人为本
据我所知,那些顶级程序员都把人的考虑放在第一位。因为他们深深的明白,他们所编写的软件对别人来说,绝对是部“有字天书”,即便是已经完工的后 端,还是除了开发人员别人看的云里雾里的协议,都一样难懂。考虑到这一点,他们一般会写个文档,以便于后来者使用他们的代码。这些优秀的程序员抱着“以人 为本、为人民服务”的态度,通过自己工作时间之外的努力,解决了那些复杂的难题,留下解决方案给他人享用。
求知若渴
厉害的程序员对于知识就像海绵吸水一样渴求。他们特别喜欢了解新鲜有趣的时事资讯,他们大量阅读,不管是网上阅读还是书刊报纸,都不放过。他们热衷于尝试,然后从经验中学习。即使是新生的编程语言和工作平台,他们也毫不畏惧,绝不退缩。
擅于问题匹配
假设你在写软件,一段时间之后,肯定会有问题出现,这时候,你瞧着它,“哎,咋那么像我以前解决过的那个问题呢”?然后你找到以前那个方案,把它改 头换面一下适用到当前的问题中去,那么恭喜你,已经get这个有价值有内涵高大上的技能了。当然,如果能在每次使用这个方案的时候,都能改进一下,那就更 好了。
不过,需要注意的是,我们绝对不能就此盲目地认为,过去能起效果的解决方案应用到现在的这个问题上就一定有用。这时候就需要擅于巧妙地匹配问题这个技能大显身手了。不过,你还得睁大眼睛看清楚,有的时候能套用过去的解决方案,而有的时候则不能。
我为“编程”狂
我弟弟在高三的时候选修了Python编程语言,我问他你怎么喜欢上编程的,他特别不解的看了我一眼,说不知道我是不是疯了竟然去做程序员,那是他 做过的最无趣最没意思的事情之一,他懊悔得捶胸顿足。好吧,在某种程度上,他的想法也没错。我和电脑交流的时间比和人交流的要多得多。当我把一行一行的基 本数字和字母运行之后成为一个成功的软件时,一种巨大的满足感刹那间充斥了我,飘飘欲仙。不是每个人都喜欢编程,不过我见过的那些顶级程序员没有一个不爱 写软件的。
持之以恒
软件开发比我们想的都要来得慢,来的难。所以我们必须迎难而上、持之以恒。有时候,你想要写的代码仅仅只需要你花费足够的耐心去炮制就可以了。也有 时候,我们在编程时感到乐趣十足,当然也有这样的时候,因为已经写了几百遍写得都快吐了,但是还是需要继续强迫自己去写。酸甜苦辣,个中滋味,如人饮水, 冷暖自知。不过即使再难再枯燥,那些优秀的程序员绝不会半途而废,因为他们胸中自有沟壑,他们明白自己在做什么,为什么要这样做,并且享受这个向胜利一步 一步前进的过程。
以上是我认为一个优秀程序员应有的一些特质,如有遗漏之处,还望补充。最后,我想问下,亲你是牛逼程序员吗?
译文链接:http://原网站已经失效/article/how-to-be-good-programmer.html
英文原文:What Makes A Great Programmer?
翻译作者:码农网 – 小峰