热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

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

从程序员到项目经理(7):程序员加油站--完美主义也是一种错追求完美是一种可贵的精神,完美主义也历来被认为是一种优秀的品格。

从程序员到项目经理(7):程序员加油站 -- 完美主义也是一种错

追求完美是一种可贵的精神,完美主义也历来被认为是一种优秀的品格。可是在项目中,完美主义也是一种错,虽然是一种“美丽的错误”。项目讲求平衡,要的是合格,而不是优秀;要的是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分万岁”!


转:https://www.cnblogs.com/lteal/archive/2012/12/12/2814306.html



推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
author-avatar
纸鸢漫天飞舞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有