1.长期规划的重要性
砍掉失败的项目,砍掉不好的功能,尽早砍掉。判断的尺度在哪里?新技术不停的出,需求不停的变,在动态调整中生存,在进度计划的时候就要考虑。流出机动的时间。在开发和稳定化阶段的所有时间中,一个项目通常会将2/3的时间用于开发,1/3的时间用于稳定化。(Office部门副总裁曾这样概述通常的进度:“一般说来,在总的进度表中,用一半的时间写出产品,留下另一半的时间调试或应付意外事故。这样,如果我有一个两年的项目,我会用一年来完成事先想好的东西……如果事情有点麻烦,我便去掉我认为不太重要的特性。”)。
2.责任到每个开发员,开发员过于乐观是普遍现象
项目开始时浪费的一天和结束时浪费的一天是同样的,有无数的方法可以浪费一天,但是没有一种方法可以节省一天。程序员之间的差别很大,生产率可以达到1:20
3.面向行为进行设计,划分成特性设计开发
4.运用里程碑来缩短开发周期
经验进度安排计划:
1/3计划
1/6编码
1/4单元测试和功能测试
1/4系统测试
5.缺陷提前
开发设计和测试设计同时进行,减少交流的成本,缩短项目周期,提前验证项目的正确性,预防风险,在项目设计和编码阶段预防和避免缺陷的发生,前提是有足够优秀的测试设计人员。为了保证概念的完整性,一两个人负责整个的框架,其他的人做辅助性的工作。
6.不要逃避
逃避风险是致命的,因为你也得不到与风险同在的利益,而且你逃避的事情经常在最重要的时候跳出来和你做对。
7.从细节开始
麦当劳能经久不衰就是因为注重所有的细节,每个店的门把手都是一样的,所有的店炸薯条的流程都是一样的,才能保证世界各地的所有的麦当劳的薯条的味道都是一样的Sop是重要的,流程和工作质量的量化必须细化,小细节会影响人的思想,进而影响到人的行为,再而影响到人的习惯,最后会获得不同的结果。
顾客进门,迎宾的先生和小姐要微笑,这是一条规矩,但是微笑是什么定义。沃尔玛规定露出8颗牙才能算笑。这样才是量化,承认细节。
8.沟通是提高效率和质量的第一要素
交流是软件项目的主要成本之一,一个10人的团队做一年时间的产出和一个20人的团队6个月的产出相比大很多,因为人员增加导致交流的成本大大提高。4个人的团队,交流的成本为1/3,经验值。微软公司的团队是一个经理、三个开发人员和5个测试人员组成。
加人不能提高效率,或者说不能马上提高效率,因为新人的培训需要时间,而且原来的交流需要重新进行。开发人员的交流比较多,测试人员的工作相对独立。随着团队的成长和融合,交流的损失会逐渐缩小,甚至消失,团队的生产力大于个人生产力的相加。
9.代码放在阳光下晒一晒
另一种说法,把接口公开,内部是程序员的隐私,但是这种说法的目的是可以针对接口编程,模块化程度高,这些是基于良好的设计的,此处说的是,代码要规范,比如是否运用了一些通用成熟的算法,比如正则表达式,缩进是否超过5级,通用的过程是否拆成单独的方法等。有些初级的程序员的代码的错误是可以一眼就能看出来的,CodeReview可以发现很多错误。
10.关闭计算机
思考的时间,一直编码,所有的错误都依赖于计算机的编译检查和调试的检查,而不是在纸上建立一个模型,等到好的算法设计后再去编码。
11.管理就是正确的人做正确的事
正确的人和正确的事都是动态变化的。管理工作除掉人的因素,就只剩下文案工作,比如风险表、甘特图、波特图、状态报告、进度跟踪报告、质量管理程序。
实践和理论,文档的意义在于帮助人们记忆和整理思路,经常性的我们需要把一些已知的或者说确定的事情罗列出来,找出其中的关系,就是正确的解决方案。
迷惑1:
一种观点:提高生产力可以靠糖果+大棒,另一种:威胁不能提高生产力。而且你还要面对兑现你的威胁。