从程序员到项目经理:完美主义也是一种错

追求完美是一种可贵的精神,完美主义也历来被认为是一种优秀的品格。可是在项目中,完美主义也是一种错,虽然是一种“美丽的错误”。项目讲求平衡,要的是合格,而不是优秀;要的是70分,而不是100分!

1.两极分化的程序员

相信在很多人眼里,程序员都是工作一丝不苟、对代码精雕细琢、精益求精的人。瞧,他们在电脑前面一坐就是大半天,如果不是追求完美之人,谁能这样坐得住板凳?

可 是依我所见,在“追求完美”这个问题上,程序员其实是严重的两极分化。有一部分程序员确实对自己的代码要求很高,他们在编程时,非常注意逻辑是否严谨、运 行效率高不高、代码是不是优雅,经常进行代码重构与优化。他们就像有洁癖农村老太,整天扫把不离手,在哪里看到不顺眼的代码,就要改到哪里,如果让他来维 护一个系统,多半最后会让他把整个系统的代码全部重构或者重写了一遍。他们是真正的完美主义者。

还有一部分人,他们写代码似乎只是为了完成任务。他们对自己负责的功能,缺乏计划和设计的过程,想到哪里就写到哪里,最后按下F5,编译通过,欧耶!他们甚至不愿意多点一下自己创建的按钮,更加不会在一个身份证号码文本框中输入一个电话号码来测试一下,最关键的是终于可以向经理交差了,至于代码中多少隐藏的问题,以后再说吧。这让我想起了程序员部落酋长Joel所说的,他们编写的程序“看上去像是给狗吃的早餐,只经狗能吃饱就行了,何必再花钱让食物变得色得味俱全呢?”我们甚至可以想象一下,他们的电脑屏幕上是不是铺满了灰尘,键盘缝里是不是塞满了头发和食物碎屑,电脑桌面的图标是不是如七彩拼图一般,让人眼花缭乱。

后一类程序员,在数量上似乎占据绝对的优势,对于一个不擅于控制项目质量的项目经理来说,他们的代码最终会成为项目的噩梦。系统一旦投入运行,虫子就会像美国恐怖片中的外星生物一样,源源不断的从鼻孔、嘴巴和耳朵缝里冒出来。

第二种程序员这种低标准低要求、随随便便的做法,很容易被识别出来是一种不好的倾向,而完美主义不是这样,因为我们从小就被教导要追求完美,完美主义一般被认为是一种优秀的品格,是每个人应追求的目标。

然 而完美主义虽然听上去不错,却并不适合于项目,因为项目的目标是用最少的成本来完成项目,让各方满意,而不是制造一个完美无瑕的产品,以证明个人或公司的 能力。显然,完美主义更适合于个人能力的修炼,或者一项没有限期出成果的科学研究,在项目中,完美主义也是一种错,虽然是一种“美丽的错误”。

完 美主义者和随随便便的人,这两种程序员都不是项目的最佳人选,他们是恰好是两个相反的极端,如果让他们负责项目,估计就像玩跷跷板一样,要么压到地底下, 要么翘到天空上。但是项目经不起这样的折腾,项目中需要有平衡能力的人,他们很好的把握追求完美的“度”,使得软件功能既能满足客户的应用需求,又不至于 要花费过多的精力。可惜的是,这种程序员实在是不多,因为度的把握对程序员而言,确实不是一件容易的事情。

2.完美不等于质量100分

程序员心中的完美和项目经理心中的完美并不是一回事,因为两者关注中心不一样。程序员关注的是自己的软件功能本身,力争将软件产品质量做到最好,因此程序员的完美实际上是质量的完美。

而项目经理眼中,看到的是整个项目,包括质量、进度、成本、范围、风险等方方面面,需要进行平衡,花最少的成本、用最少的时间、达到各方满意、实现项目验收,这就是完美。单纯产品质量一流,而进度拖延、成本超支,这显然不是什么完美的项目。

其实现代质量管理理论普遍认为,质量并不是越高越好。事实上,市场已经对此无数次给出了证明。很多人骂过微软公司的产品烂,据说乔布斯也曾经大骂windows是坨屎,但微软公司后来却成了软件行业的霸主。

ISO9000对质量的权威定义是:一组固有特性满足要求的程度。看到了吧,是满足,而不是超出,这非常重要。不要少,少了通不过;但也不用多,多了便是浪费。我们需要的不是100分的质量,甚至也不是一流的质量,而只是满足要求的质量。

在项目管理中有一个名词叫“镀金”,也就是在产品达到客户要求后,再多做一些额外的工作,让产品更加完美,以进一步提升客户满意度,这在PMBok中是一种被明确禁止的行为。软件质量100分,在项目中不但是一种巨大的浪费,而且几乎是一个不可达到的目标, 只会让项目不堪重负,最后陷入灾难的境地。

3.合格就是完美

追 求完美本身并没有错,但如果上升到完美主义,时时处处要做到最好,却不一定符合当时当地的条件限制。一个“最”字会害死人,因为“没有最好,只有更好”, 如果一味追求更好,其结果可能就如陷入焦油坑的怪兽一般,无法自拔。在这样一个讲求效率的时代,完美主义更是可能会造成机会的丧失。因此,要保持追求完美 的心,但又要懂得权衡,不要陷入极端的完美主义的陷阱。

 

要 完美不要完美主义,本质上是一个度的问题,项目应讲求平衡,避免极端。学过项目管理理论的人都知道,项目管理中有一个“铁三角”,也就是在一定的项目范围 的约束下,成本、进度和质量构成三角形的三个端点,为了让三角形面积保持不变,任何一个端点的变动,都会引起其他一个或两个端点的同步变动。这个铁三角本 质上就是一种平衡和制约的关系,而完美主义,则只单纯的强调质量,而忽略了其它方面的因素,这显然是一种极端的行为。

那项目中质量的“度”倒底是什么呢?其实就“合格”二字。合格意味着被认可,却不需要达到优秀的代价。客户认可、领导高兴、员工轻松,这不就是完美吗?可以说项目中没有最好,只有合格,合格就是完美。

4.“70分主义”

从小老师和书本就教育我们要追求完美,考试要考100分,90分都嫌太低,那70分还拿得出手吗?

其实70分不低了,要知道现在大学生的口号是“60分万岁,多一分浪费,少一分作废”。当然这种口号容易被批评为不思进取,但万物存在就有其合理的一面,“60分万岁”也是事出有因。

在学习方面,我是主张完美主义的,前提是学的是个人感兴趣、有用的、切合实际的东西,可以我们大学的大部分课程,基本上是背道而驰。上课、考试,无非是为了不挂科,顺利拿到毕业证和学位证。这种情况下,60分万岁也就容易理解了。何必要考100分,节省下来的时间,完全可以用来学习自己更感兴趣东西。

从某种程度来说,做项目也是一种考试:有考试内容(项目范围)、考试时间(进度要求),还有及格线(质量要求和验收标准)。项目的及格线如果用分数来表示,也是60分,既然60分就够了,为什么还果提出“70分主义”呢?其实很简单,因为要想刚好考60分,实在太不容易了,搞不好就会弄个不及格。所以我提出“70分主义”,一种超越完美主义的新主义,力求在及格和完美之间达到平衡。

项目如果以70分为目标,适当留出缓冲,就可以做到游刃有余,更容易把控。70分意味着已经达到客户的验收要求,已经能投入正常使用,但可能存在一些影响较小的Bug,个别页面效率有待提升,个别操作不是很顺手,系统扩展性一般,代码组织有等进一步优化……这些不完美的地方,就让他们在那里待着吧,毕竟客户已经觉得已经达到目标,何苦自己跟自己较劲,非要达到100分呢?早验收、早收钱,这才是王道!吃饭只用7分饱,项目也是只要70分,“70分万岁”!

时间: 2024-10-24 02:27:57

从程序员到项目经理:完美主义也是一种错的相关文章

转型-程序员转项目经理好还是技术总监好?

问题描述 程序员转项目经理好还是技术总监好? 本人做程序员1年多一点,不知道怎么玩,有点摸不清方向,求大家给点意见.谢谢 解决方案 1年的经验我觉得有点少,不管是经理还是总监,需要对项目的总体有个把握,包括使用的技术架构,开发的进度管理,人员的分工安排等, 还要考虑很多细节,甚至员工间的人际关系,完成进度的奖励等.视公司情况吧,有可能好做有可能不好做. 解决方案二: 技术总监偏重技术,项目经理偏重管理,如果你技术不行,就当项目经理. 解决方案三: 有篇文章中看过,项目经理要求技术上有十寸的深度,

程序员与项目经理

  有人加我为好友后,经常问到的一句就是:你写程序这么长时间了,一定是项目经理了吧?郁闷呀!为什么就要是项目经理呢?在我看来程序员和项目经理完全是两个不同的发展方向.   程序员是和代码打交道的,而项目经理却是和人打交道的,所以他们完全没有什么共同点,我觉得他们是两个行业.   您可以从程序要"转到"项目经理,我不拦着你,但是有一点需要明确,那就是从程序员到项目经理那是转行,换了一个行业,而不是进级.     项目经理要和客户打交道,要和老板.技术经理.架构师.程序员等打交道,还要关心

技术管理经验谈丨从程序员到部门经理的“完美三级跳”

作者介绍 刘朝辉,从软件设计师.项目经理.产品经理.部门经理步步进阶的CEO,技术涉猎广泛,包括:.NET.Java.架构设计.数据库.C++.JavaScript.Web标准.Delphi等.   十二年前,笔者还是一个刚毕业的大学生,对IT行业只是停留在学校的编程知识领域.刚出社会,有很多需要学习的地方.在这十二年间,笔者经历了程序员.技术经理.项目经理.部门经理等职位.本文主要说说如何从程序员到部门经理的经验.   1程序员   对于程序员,按笔者在<软件项目角色指南>一文中的称呼,应该

关于程序员和产品经理的疑惑

问题描述 关于程序员和产品经理的疑惑 如果说程序员后来的转型是产品经理,那产品经理就应该是懂技术的啊,带领一个团队来做一个项目 但是为什么腾讯有招不懂技术的产品经理?(或者这样理解下问题:有几种产品经理?) 你感觉程序员后来可以有更多的转型吗? 解决方案 产品经理不是项目经理,不必非常懂技术,但是要非常懂产品,这里的懂产品就是懂得如何设计产品,如何知道产品功能的取舍,触及用户痛点的有商业价值的功能. 但是产品经理不能完全不懂技术,事实上任何一个非专业开发者要做到完全不懂技术,除非他很愚蠢和不爱学

在贵公司,用户界面是谁来设计的?程序员?产品经理?系统分析员?

问题描述 在贵公司,用户界面是谁来设计的?程序员?产品经理?系统分析员?用户界面是在设计阶段设计,还是编码时再设计? 解决方案 本帖最后由 ynduanlian 于 2016-06-18 14:56:22 编辑解决方案二:顶上去,可以吗?解决方案三:需求分析员负责需求分析,将用户的需求整理成需求分析文档.产品经理是为产品开发而设立的管理岗位,它对产品负责,会参与用户界面的设计,画出原型.程序员主要负责编码实现,不负责用户界面的设计.用户界面是在设计阶段实现的,公司规模大一点的一般设有UI设计师岗

IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章

      十年前,笔者还是一个刚毕业的大学生,对IT业只是停留在学校的编程知识领域.刚出社会,有很多需要学习的地方.在这十年间,笔者经历了程序员,技术经理,项目经理,部门经理等职位.本文就是要说说如何从程序员到部门经理的经验.         对于程序员,按笔者在<软件项目角色指南>一文中的称呼,应该称为软件工程师.大家可以去看看该系列中对软件工程师的职责等内容,希望大家能对该角色有一定的理解.软件工程师要做的事情还是比较多的,因为在项目中可能要涉及到很多方面的内容,所以,软件工程师往往身兼

做过程序员的产品经理是一种什么样的存在?

记得之前参加团建活动,是真人 CS.我们一共没几个产品经理,但有几十个程序员.所以场面估计你也能想象出来了--并不是刺激的对战,而是惨绝人寰的群殴. 被 BB 弹打成狗(哎,原来不就是狗吗)的一个产品经理急中生智,大喊:『我以前也写过代码!我是自己人!』 其他正在施暴的程序员面面相觑,表示十分感动,但仍然拒绝了他的求情,继续按在地上打了半个小时. -- 我在哈工大读书,学的是计算机,写了六年代码,毕业后做的却是产品. 所谓对程序员和产品经理之间的调侃,主要原因无非就在两方经常有矛盾出现,而矛盾出

程序员软件项目预估的宝贵经验

我最近参加了一个关于软件预估的课程.对于这种本质上就是非精确的科学,我一向都非常谨慎,因为我深信预估可以创造价值.在这个历时两个小时的课程中,我发现了如何提醒大家进入预算而不必过度分析和思考的方法. 非常常见的例子 我们经常能听到项目经理和开发人员之间类似于这样的对话: PM:"你能不能给我一个开发某某功能所需要的预估时间?" 程序员:"一个月" PM:"一个月时间太长了,我们只有一周时间!" 程序员:"最好三周" PM:&q

寻求珠海ASP/.NET程序员合作项目

问题描述 本人在珠海注册的公司,手头有项目,寻求ASP/.NET技术开发程序员,全职.兼职皆可,待遇优厚,联系qq:100261002,电话:13802673726 解决方案 解决方案二:可惜不在珠海.