千万不要相信程序员说 “等我10分钟,修完这个bug就走。”
前两天写到程序员的几个美德–傲慢、懒惰、急躁。今天聊一聊程序员的通病–乐观。
先讲个小故事。
某天傍晚7点,我收拾好东西准备回家。
这时,一直在盯着屏幕的好基友抬头看了我一眼。
“等我一会,咱们一块走?”
“你还得多久?”
“改完这个bug,大概10分钟。”
“别逗我!改bug至少半小时!我先撤了。”
晚上10点,我刷到好基友的朋友圈:“终于可以下班了!”。配图是西二旗灯火通明的大楼。
这种事情在软件开发中经常会发生。
早会说这张卡测一测,今天就能提交测试了。结果第二天还在改自测的bug。
评估一个bug2个小时就能修完。2个小时过去后,环境刚刚ready。
估算10个人天的需求,真正开发起来却用了20个人天。
申请关机上线,预计两个小时,结果搞了一晚上。
过于乐观,还体现在对风险的评估上。本以为应该很顺利的事情,却步步踩坑。
过于乐观出于以下三种原因:
- 对自己能力过于自信
- 执行过程中过于追求完美
- 缺少经验。没有考虑全各种影响因素
昨天说到程序员的傲慢,和这里的过于自信并不是一回事。往往看似简单的问题,解决起来却需要花费大量的时间。千万不要盲目自信。不就是加几行代吗?10分钟的事!谁知道加了几行代码,红了一大片,还要修十几个测试…
评估半小时的事。真正做起来时,却完全无法停止自己追求完美的心。过分雕琢自己的代码。看到写的不好的代码,一边骂娘一边重构。终于写完程序,跑通所有测试!心中暗喜:完美!这程序写的绝对不会有bug!简直就是范本一样的程序!低头一看表:我X,已经过了3个小时,怎么毫无感觉!
经验不够充分的情况下,往往会忽略很多重要的因素,导致评估出来的工作量不准确。有些事得反复去做,才能体会到多久能够完成。当你经验不够时,巨大的坑在你面前,你都会视而不见,然后一脚迈进去。
悲观,我认为是程序员应该有的基本素质。考虑尽量多的影响因素,权衡发生的可能。争取尽量多的时间做出调研,然后再给出你的判断。但也不要走极端,畏手畏脚,拖沓不前。
不要过于追求完美。加强你的目标感,评估1天的工作,就在1天内完成。可能你为了5%的完美,却需要多付出一天的工作。而这一天很可能会block 很多工作展开。
经验需要自己去经历积累。更快速的方式是去寻求有经验的同事帮助。不要羞于面子,大胆去请教。和面子比起来,降低项目的风险更重要。
前面说的其实还是过于表面,没有抓到本源。最根本的原因是,程序员的时间尺和普通人不一样。毕竟是工作一年拥有两年工作经验的工种!程序员所说的时间至少要 double!