如何从优秀的程序员成为伟大的程序员【转】

转载自:http://topic.csdn.net/u/20090523/18/898d37a3-60d8-4d3d-9884-d28bada0acf1.html

 

本文给出了十五个评定软件开发人员的标准,可以帮助程序员朋友从一个好的程序员成为一个优秀的程序员,和大家共飨!


怎样评定一名软件开发人员?这是一个颇为奇怪的问题。现在已经有了很多的理论和形式来做这件事,人力资源部门也试着帮你管理和反省自己的行为。然而,怎样 才是一个伟大的软件开发人员,在今天,你该怎样发展你的职业生涯?以下是我评定团队中软件开发人员的“军规”。按照这些技巧和规则,你可以改善你的现状, 由一个优秀的程序员,成为一名伟大的程序员。

1、时间花在写精彩的代码上

这里说的不是数量,而是质量。对此,一种歪曲是:要数量,也要质量。你也许会很多次的遇到以下的两种情境:

情境A:你有一个发疯似的能写代码的程序员,事情似乎在进展中……然后,Bug开始不断出现,你们也不知道为什么,好像永远补不完。补完十个,又出来五个,现在你手里的,就是一大堆代码……

情境B:你现在有一个看起来很聪明的程序员,你面试他的时候,他似乎无所不知,能把理论说的头头是道。然而,你留给他三个任务,三个星期以后,他还在做一 些三天就该干完的事。这下该你困惑了,他这么聪明,他知道generics(详见备注),多线程的一切事情,甚至还能给祖母级的人讲解什么是指针,让老太 太兴奋的想去编程。可是——怎么什么都没完成?

于是,在梦境中——你写出了堪称伟大的代码,——伟大的代码是伟大的程序员写出来的,他睿智,明白代码的真正品质所在。写代码就像托尼•霍克在玩滑板一样 自然优美,看上去就令人愉快。这些程序员以让你眼花的速度搞定一切,他们知道每个问题应该处理多长时间,也不会追捧寻觅所谓的世界最好解决方案,弄很多线 程很多层来写一个简单的游戏。他们写的程序没有Bug,因为写的时候自己测试过了,在睡觉时也在写代码说的就是这样的人。这些程序员太宝贵了。

2、阐明问题

可以明确的是:即使有问题暂时处理不了,还有成百上千的方法去解决。有些人反应很迅速,很快就能提出多种解决方案。然而,一个伟大的程序员应该在做出行动 以前清晰阐明问题——创建文档或用白板表达出来。他们写邮件给项目的管理者,这样表述:“我想和你说说我是怎么理解这个问题的,我们能这样处理吗?”然后 他们就会动手给你多种方案。

对,这些人明白自己看问题和阐明立场的方式,而这理解方式大概不会是问题创建者所想要被理解的。请牢记这就是关键所在。一名伟大的程序员在尝试解决问题以 前,一定要完全的理解它。你百分百搞明白了吗?没有?百分之九十九?——回去再多问些问题,确保百分之百理解清楚了。

3、怎样着手解决问题

那一搞明白了问题,就开始动手写代码?错!一个伟大的程序员应该按照规划,开始思考面临的多种选择,基于问题开始考虑最好的解决方案。我觉的这像一场国际 象棋比赛。你知道每个棋可以怎么走,知道所有的游戏规则。但是你会马上走棋吗?不,你要审时度势,制订计划,紧盯对手,分析其通常的做法。和这一样,在你 coding解决问题以前,你也要这么做。

看看问题,计算出需要怎样的结果,你的时间能怎么安排,预期的质量,你必须用的工具,……好了,开工吧!

4、对代码的信任

作为项目管理者,你怎么相信他们的代码。有些程序员,你可以对他们说:“我星期五就要结果”。——星期五到了,你收到了这样的Email:“代码我都已经 检查过了,现在就等着测试了。”你很放心,只会有很少的瑕疵在质量确保的团队被查到。当然,还有些轻率的例子,一些程序员在邮件里是这样说的:“我还没弄 完,星期一上午我会最先完成它”。你不太确信这东西,发现很多Bug,很长时间基本上不能用。又得花上几个星期清理代码中的Bug。

关键:你对一个开发人员越有信心,他离成为一个伟大的程序员的距离就越近。想象你是你的管理者,如果他并不担心你的代码,会给你多少信心和勇气!

5、对方案的信任

和对代码的信任是一回事——如果你手上有伟大的程序员,你就会对解决方案有信心。这些程序员同时也是伟大的建筑师。他们剖析整个问题,指出问题需要怎样去 解决。这就不只是用伟大的代码编程的问题了,很大程度取决于你怎样构筑解决方案。这是关键,而且会让你在软件世界里出类拔萃。

6、满足客户需求

一天下来,你写出了最棒的代码、用了最好的框架和最好的解决方案,但这真的能迎合用户的需求吗?恐怕根本不是那么回事儿。你搞砸了。尽管现在多次失手,一 个伟大的程序员还是会正中靶心,找出客户需要的,给用户逐步展示他们所需要的无bug的最终版本。需求正中靶心的同时,用户满意了。

7、不断升级

伟大的程序员会积极主动地把自己的技术升级。他们对知识的态度就像饿猫见着了牛奶,他们从不用上级催促给自己设定目标、不用经理要求他们完成任务,因为他们自己就已经安排OK了。

他们发现自己想要参加的大会就会给公司写Email“本人非常想参加今年的Tech-Ed大会。我将用心研习,并对作出贡献。我预计这可节省 <金钱/其他原因>。如果可行,不知公司是否帮我支付此行?”如果我收到这样的邮件,我不仅会帮他支付参会费用,他的路费我也会全程买单。

伟大的程序员们永远会关注例如.net用户组或Java用户组的所有用户群体。他们参加本地的技术会议,并从中汲取知识。你会看所有最新博客和最新的杂志 吗?现在列出你最喜欢的前5个开发博客。你能做到吗?你应该像参加基督教青年会那样轻松做到。做到这些,可以很好的帮助你延伸你的思路!你将会不断获得更 好的点子!你会得到更好的回报!

8、团队奉献

你可以是团队中最棒的那个人,可是如果你不是最好的程序员、不是建筑师、不是团队里最有活力的人,那么对我来说,如果你不能分享或对你的团队有帮助,你的 价值就会大打折扣。一个好的程序员会使自己周围的人同样强大起来。试想一下,好程序员会不断完善自己的知识和能力,如果他们不和周围的人分享他们的知识, 他们从哪儿能获得更多呢?

他们不断学习新东西,发掘新技术,但是不会让其他人知道他们这么做了。一个好的程序员会准时完成方案,但是那是在催促和团队得不到休息的前提下。然而一个 伟大的程序员则会与团队中所有的项目保持联系,在需要的时候还可以出手帮忙。他们会如是说:“我注意到A团队的项目进行到xx进度了,如果不介意的话,我 想我可以帮忙?”

9、做好会议记录

做好会议记录绝对至关重要!开会期间,大家花大量时间来说明了新观点、新主张、集体讨论还有提出了新设计方案,可是会议结束后却没有人可以拿得出会议记 录,简直没什么比这更糟糕的事情了。即使你有会议大纲,我还是期望见到参会的每一个人员都可以带着纸和笔(当然对于程序员来说笔记本则堪称完美)。一个伟 大的程序员会注意到这点。他们会记下所有的会议记录,并且在会议结束的的时候说:“就刚才的会议,我着重记录了几点:XX…… 我是否记录全了呢?”

接下来,伟大的程序员就会把他做好的会议记录分发给项目管理者,列出会议时间、会议主题和参会者。接下来,是会议项目的标题和重要条目。在这之后,就是这 些议题的详细记录。一个好的程序员没有做会议记录,并在会议上对提出的每项事宜都点头称是,那只能寄希望于他的记忆力足够好了。随后,他会给你发邮件让你 看看他的改动,你得回头提醒他忘记的不多,百分之九十的都没错。——这不是浪费时间嘛!根本不是这么回事!所以,做好你的会议记录。

10、孺子可教和接受批评

如果你读到这儿了,就表明你有希望接受这些建议,并在以后的开发行动中尝试执行。对,程序员的另一项重要能力就是向他人学习并且能够接受批评。通过把自己 变为一个虚心受教的人,像海绵一样快速吸收大量知识,毕竟在编程的路上你还有很多前辈。当然,也许他们在写代码的岁月里慢慢生了锈,甚至伤痕累累,但是他 们毕竟曾披荆斩棘跨过无数的坎儿。对于做出正确决定,他们又着瞬间的本能,让你不得不服。处于他们这个位置,很乐于见到你的成长和成功。

所以,只要你是个伟大的程序员,就会理所当然的拥有理想的工作环境。如果你不断改善技能、虚心好学、在别人给出的意见和批评中总结错误并得以改善,我向你 保证你将会成为一个伟大的程序员而不只是想象自己变得伟大而已。如果你总把自己想象成为“精英”而不进步,那你只是自欺欺人。如果你不成长,你甚至不能停 留到原地,等待你的只有灭亡!

11、公司需要的时候总能出现

这如同等价交易。如果你为一家伟大的公司工作,他们会给你足够的弹性。公司不会限制你如何工作,不限制你开始或结束的时间,也不会限制你什么时候停下来歇 歇。公司会鼓励你在休息时间做做操,甚至会在你和团队成员出去吃饭的时候为你们买单……在繁复大量而紧张的工作后,公司会放你几天小假。诸如此类。

然而,毫无疑问,与前面的这些美事儿随之而来的是责任。如果赶上时间紧还得出活儿,伟大的程序员则建议你即使在周末也要加班。即使干得再晚也得把活儿干 完。你看,伟大的程序员是要为自己的创作负责的。这虽不是必需的,但这是伟大程序员的标志之一。有些人只想朝九晚五的上班,他们可能不错,但是成不了伟大 的程序员。伟大的程序员是团队中干到最后的那个,把作品视为完美的艺术,与团队成员亲如一家。

12、衣着职业化

你永远也不知道一个客户会什么时候突然拜访。你也永远不会预知什么时候突然要参加一个会议,不是每一件事都在计划中的。你得随时准备好展现自己。一个好的 程序员周一到周五穿着普普通通,甚至有可能穿牛仔装和运动鞋来上班。在某些周五,他们穿着T恤,短裤和运动鞋出现。当一个客户突然在周五出现,要谈一个大 项目,你没法把衣衫不整的他一块儿叫上。

一个伟大的程序员周一到周五都穿着职业化,衣服也能带来成绩。如果你不在意穿着,你也会因为穿的太奇怪而得不到晋升。毫无疑问,套装和领带还是很能提升你自己的。我向你保证,一套得体大方的西服套装会让你在今年就觉的物超所值。

13、沟通能力

这是另外的判定条件。这世上有太多优秀程序员,却没几个伟大的程序员。为什么呢?因为大多数程序员不善交流。交流的层次很多:从发电子邮件、参加小型 SCRUM开发小组会议到大一些的主管会议,水平逐渐提升。这样你就能在数百人参加的会议上自如地展示你的软件。在会议上你不需要有好演技,但是至少要清 晰明了地表达你的观点。你的沟通能力越强,你的职业道路就会走得越远!

概要:想要成为管理人员,你的沟通能力得分至少要打到9到10分。甚至你在会议上只讲了几分钟,或只一个小汇报,你都需要非常好的表达能力。别只是在你的 每天的工作日志寥寥写上“修补1371个bug”,你要做的是尽可能描述清楚如何在这么艰难的情况下解决了问题。阐明你的方法,说明你如何保证这个bug 不再出现。你就不再为你的日志发愁了。这会是你向经理展示自己的精彩演出。

14、目标设定的技巧

好的程序员日复一日的做你安排给他们做的事情,贯穿始终。他们并不往远看,不对明年、5年甚至10年后作打算。一些好程序员虽然知道自己想要什么,却没有具体计划去实现。伟大的程序员则给自己订立年度、未来5年的目标,而且大概预期到自己10年后的发展。

伟大的程序员有了目标不会只是想象,他们会具体实施。他们会根据具体情况,在预期的时间做具体的事情。他们会详细地制订明年的计划,包括要上的课程、要完成的项目甚至包括他们需要建立的人际关系。

15、组织技巧

把所有事情整合在一起的最关键要素是组织。你可能是世界上最好的程序员,但如果你不善于组织你所做的事儿,你的工作将陷入瘫痪,最终丧失优势。伟大的程序 员保持自己工作平台的整洁有序,保留所有的笔记并调理清晰。他们标出自己的会议日程表。他们有专门的收件箱给日程邮件、会议和新任务分类。他们保留文档并 能在需要时迅速找到所需。

额外要提到的:激情

伟大的程序员如果没有热情,那么他的工作也并不伟大。好的程序员有了热情来对待他的工作、方案和团队,那么他比伟大的程序员还要伟大。

在回顾的时候,我用这些标准来评判我的开发团队。我给我的团队尽可能最好的环境,作为回报,我想要他们都成为最伟大的程序员。你可以用这些标准来评判你的团队,或者你本身就是一名程序员,请用这张列表来尽可能地改造自己来超越同侪。

备注:Generics是程序设计语言的一种技术,指将程序中数据类型进行参数化,它本质上是对程序的数据类型进行一次抽象,扩展语言的表达能力,同时支 持更大粒度的代码复用。对于一些数据类型参数化的类和方法来说,它们往往具有更好的可读性、可复用性和可靠性。在设计集合类和它们的抽象操作时,往往需要 将它们定义为与具体数据类型无关,在这种情况下,使用Generics就是非常适合的。

英文原文链接:http://www.realsoftwaredevelopment.com/2007/08/how-to-rate-a-s.html

你可能感兴趣的:(游戏,编程,面试,项目管理,软件测试)