l 作为项目经理,或其它项目管理者应该重点关心的是人,而不是技术。
深刻感受到“管理”是一门学问,尤其是软件项目管理。现在国内的大多的项目经理都是技术大拿。技术很牛逼,一个项目如果只剩下他一个人,这个项目还可以正常做,只是时间问题。但这样的人可能更加适合做架构师,在这个岗位上他不被打扰,也许可以创造出更多的价值。而“经理”两个字,注定了这个职位应该更加关心人,以及人之间的关系。当然,技术也是要懂,毕竟软件行业有它的特殊性。一个经理懂技术,可以更加有威信,有发言权,可以更加深入合理的安排工作计划和分配任务,以及向自己的领导说“不”。但对于经理而言,技术终究还是第二位的,人的管理以及工作任务的协调才是重中之重。
l 迭代设计:对于一些有缺陷的设计,应该直接丢弃,而不是修补。
有一些项目,可能已经持续了2年,甚至更久。这些项目可以满足现在的需求,但是继续做深度的升级已经很难,或者说里面有一些严重的问题,造成了比较大的偏差,但是客户可以继续使用,并且要求在现在的版本上继续改进。这时我们如果丢弃之前的工作,重新来做,那么之前的工作就是白费,而且可能还要花个2年。花的这2年的时间可能并不能保证可以解决现在遇到的问题。但如果继续做,可能是使根本性的原来的偏差更大。这种情况下老板一定会说不能舍弃之前的开发版本,因为它至少可以满足现在的需求,可以赚钱。遇到这种“退也不是,进也不是”的项目,我们是不是在保证现在版本运行的基础上,总结经验,在资源允许的情况下,开发出一个新版本?可以,但是我们必须面临“新版本”失败的风险。
l 项目组有一个有凝聚力的催化剂很重要,虽然它不具备太多的专业知识。
项目组的每一个人都有他的作用。有些看似不太重要的人,只有当他离职后,才能发现他的重要性,但那个时候可能已经晚了。如果项目组中有一个有凝聚力的人,那么这个项目就会变的有趣,大家工作的很开心,成员更加团结,齐心协力,那么这个项目的进度就会更快,质量在自觉中得到了保证。而不会,因为痛苦的赶进度,而牺牲产品的质量。
l 人们在受到时间重压的时候不是工作得更好,只是工作的更快。更快意味着不得不失去产品的质量。
有这样的领导,他不关心产品的质量,只关心产品的进度。只要在最短的时间内给他看到成果就行了,而且只需保证满足基本需求就行,根本不关心产品的扩展性和维护性。有这样的领导在,企业很难做的强大。他会给你设置时间压力,然后迫使你短期内完成工作,但是产品的质量却大幅度的缩水。有可能是市场不要求那么高质量的产品,开发人员的要求一般高于市场。但如果该产品不易维护和扩展,一旦需要升级产品的时候,付出的成本可能远远高于开发成本。
l 人们加班的时间,总会从偶尔休息中补回来。
人上班的8小时是“体力时间”,而软件开发是“脑力时间”。如果一个人加班了,那么他的心态肯定会发生变化,就算他的人在办公室,但是并不能保证他在从事着脑力劳动。或许他在进行着某种娱乐,只是大家都不知道而已,因为要他做的任务已经完成了,在所谓的加班时间完成的。太多的加班,只会造成开发的时间成本变高,但是工作任务和工作强度确实固定的。软件开发真实的工作量很难度量,所以加班一般会从休息中补回来,但是却看不到。
l 做开发是一种陷入沉思的“顺流状态”,它不像管理,经常被打断会严重的影响工作效率。
做软件开发就像在考场上做“数学题”,你可以在考场上做题的被别人打扰吗?一天8个小时,真正高效率的工作的时间也就4小时左右。其它的时间大多被一些琐事,或者是电话给耽误了。尤其是当你同时担任着“管理”和“开发”工作的时候,你会发现一天几乎没有做什么事情,但是这一天却没有了。现在中国的软件行业有那么多的加班,大多也是因为在上班时间不能沉积在工作中,而是上班打开电脑,电脑自动弹出了新闻,你忍不住好奇去点了下,当你看了一个又一个,你会发现1个小时没有了。如果还挂着QQ,那么聊天也可以打断人的思路。更有甚者,会在上班的时候玩手机游戏或者网页游戏,而将工作任务留在了晚上。因为别人都加班,而你不加班,这样就会让管理者认为你不够努力。但是,加班却让你失去了享受生活的时间。其实,当处在一个比较噪杂的环境中时,听音乐可以让你屏蔽干扰,因为“逻辑思考”和“音乐艺术”在人的左脑和右脑,音乐并不会影响你的“思考能力”。有时候,听着音乐可以加速进入“开发者”状态,可能是条件反射,戴上耳机就进入了“软件的王国”。