转自:http://www.phome.asia/forum/thread/17109.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就是非常适合的。
分享到:
相关推荐
从优秀的程序员成为伟大的程序员的过程 从优秀的程序员成为伟大的程序员的过程 从优秀的程序员成为伟大的程序员的过程
### 如何从优秀的程序员成为伟大的程序员 在信息技术领域,从一名优秀的程序员成长为一名伟大的程序员不仅是职业发展的过程,更是一种自我超越的精神追求。本篇文章将基于提供的文件内容,深入探讨成为伟大程序员所...
6. 成为优秀的团队合作者:良好的团队协作精神是优秀程序员的重要特质。积极参与团队沟通,尊重团队成员,提升团队合作效率,如同足球队员一样,为团队的整体成功贡献力量。 7. 文档化工作:编写清晰、详尽的文档是...
如何成为一个优秀的程序员:深入解析与实践指南 在IT行业,成为一名优秀的程序员是众多技术追求者梦寐以求的目标。在《如何成为一个优秀的程序员》一文中,作者罗伯特·L·里德(Robert L. Read)列出了多达一百条...
【如何成为优秀的程序员】 在IT行业中,成为一名优秀的程序员是许多技术爱好者追求的目标。这不仅意味着具备扎实的技术基础,还需要不断学习、创新以及良好的团队协作能力。40分钟的嵌入式培训机构亚嵌老师的讲解,...
成为优秀的程序员不仅在于编写高质量的代码,更重要的是养成一系列有益的习惯,这些习惯能够提升个人技能,促进团队协作,以及保持对技术的敏锐度。以下是对标题和描述中提到的十个程序员习惯的详细解释: 1. **...
如何成为一名优秀的程序员。。。,在公司可以轻轻松松。。。
如何成为优秀的程序员?请看程序员的10层楼
- **编程语言**:了解并掌握至少一种编程语言是成为程序员的基本要求。随着时间的发展,编程语言也在不断更新换代,因此程序员需要不断地学习新的编程语言和技术。 - **算法与数据结构**:扎实的算法和数据结构...
针对文件信息,接下来的内容将基于“程序员到项目经理”的职业发展路径进行详细的知识点阐述。 首先,程序员与项目经理虽然都属于IT行业中的职位,但...只有通过不断的尝试和反思,才能真正成为一个优秀的项目经理。
要成为一位优秀的Java程序员,不仅需要掌握扎实的编程基础,还需要深入理解Java语言特性,熟悉相关的开发框架,以及持续学习和实践。以下是一些关键的知识点和技能,可以帮助你迈向优秀Java程序员的道路。 ### 1. ...
"成为优秀程序员的 101 个技巧" 本资源为程序员提供了 101 条实用的技巧,从搜索问题答案到编写有用的注释,从承诺不足到超额交付,从寻找导师到成为导师,从适当命名变量到删除不用的代码,从学习阅读代码到建立...
"如何成为一名优秀的程序员" 本文将详细介绍如何成为一名优秀的程序员,包括程序员的现状、影响程序员的因素、职业规划等方面的知识点。 程序员的现状 程序员是软件行业里最基础的工程性人才,可以称他们为“工人...
### 如何成为程序员:成为一名C++程序员的详细指南 在当今快速发展的信息技术领域,成为一名出色的C++程序员不仅意味着掌握一门编程语言,更是一项能够开启众多职业机会的关键技能。本篇文章将深入探讨如何从零基础...
在技术深度上,程序员需要深入研究某一特定领域,如分布式计算、数据库管理、网络协议等,成为该领域的专家。这将帮助他们在解决复杂问题时,能够提出高效且可靠的解决方案。同时,了解不同技术之间的相互作用也是至...
【Java优秀程序员编程规范】 Java编程规范是提升代码质量、可读性和维护性的关键,它指导程序员编写清晰、一致且易于理解的代码。...在实践中不断调整和完善自己的编程风格,将使你成为一名更优秀的Java程序员。
本文介绍了十个可以让你成为优秀程序员的有效方法,感兴趣的朋友可以看看。
首先,成为一名优秀的C#程序员,你需要掌握基本语法和数据类型。C#支持多种数据类型,包括整型、浮点型、字符型以及布尔型。理解变量的声明、初始化和作用域是至关重要的。同时,掌握控制流语句,如if条件语句、for...