第四部分 管理大型项目
1.火星人的耳机
为了保证早期版本(IE5、6)的网页能够正常显示,IE8进行了大量的改动以保证兼容性。
2.为什么Microsoft Office的文件格式如此复杂
介绍了Office的Word、Excel文件的二进制格式,并建议:
1)使用Office内置的功能去完成文档的输出;
2)如果只是要生成在Excel中能打开的表格数据,考虑使用CSV格式;
3)Word文档可以考虑生成RTF文档。
3.要挣钱,就别怕脏
讲他如何卖软件赚钱的。
(到目前为止,感觉软件随想录这本书中的大部分内容都是Jole关于软件开发、人才培养、项目管理等不同方面的一些感想。看书的过程中,有时候感觉就是在看故事,倒并不一定要从中学到什么,或者学到的东西根本就不是作者原来要讲的东西,而只是自己灵光一闪的想法而已。)
第五部分 编程建议
1.循证式日程规划
1)不要忽视日程规划,不要因为觉得规划的日程不可能实现而放弃规划,或只是应付了事;
2)制定规划会迫使你清楚自己要做的东西,如果你没有想过这些东西,你制定的日程就没有实际意义了;
3)日程中的任务应该是较小的、能够快速完成的,而不是一个大的、复合的大功能;
4)追踪你的时间安排,比较每个任务的原定完成时间和实际完成时间,计算两者的比率,在估算最终完成时间的时候作为参照;
5)把编程以外的工作,包括一些不可避免的辅助性工作计算到任务的完成时间中,也包括修改问题的时间;
6)为新的功能设想、测试等工作留出足够的缓冲时间;
7)利用时间日程,倒逼自己去掉程序中不重要的功能;
2.关于战略问题的通信之六
关于软件的效率、功能和硬件限制的问题;
以Windows Office战胜Lotus的例子说明:如果你的产品受到硬件水平的影响而导致运行效率不够理想,不必担心,硬件自身的发展会帮助你解决问题;如果这个时候将大量的时间和人力投入到产品的优化上,可能当你新产品发布的时候你会发现,你的竞争对手受益于摩尔定律,他们产品运行效率上的问题已经解决了;而且他们在你做系统优化的时候,又添加了很多新的功能。
硬件限制的问题不是致命的问题,随着硬件性能的提升和价格的下降,这些问题会自然地得到解决;
还要考虑到软件寿命的问题:如果你的产品是不断更新发布的、需要慢慢积累用户的,那Jole的观点是适用的;但如果你的软件是服务于特定客户的,需要在规定时间内提交产品供其使用,那么软件运行效率优化还是十分重要的,毕竟你不能逼迫用户马上去采购性能先进但价格昂贵的硬件设施。
3.你的编程语言做得到吗
多接触几种开发语言和环境,可以拓展自己的视野,让你解决问题的思路更加灵活。
4.让错误的代码显而易见
1)写出优美代码的几个层次:
可以分清好的和糟糕的代码;
对好的代码有了初步的认识,但停留在是否符合规范的层次;
可以找到隐蔽的不干净的代码,发现表面之下的问题;
精心构建自己的代码,保持它们清晰易懂、不容易出错;
2)“寻找一种代码的书写规范,让错误的代码变得容易被看出。让代码中的相关信息在显示屏上集中在一起,使你能够当场发现和改正其中的错误。”
3)被误解的匈牙利命名法:不是要在变量、函数前添加i,s来表示它是int还是string;而是通过前缀来标识这个变量是行还是列(rw/col),是相对于屏幕(xw-x坐标相对于window)还是相对于页面(xl-相对于layout)。这样从名称上就可以看到这个变量/函数的意义,当xl和xw直接进行计算的时候,就会发现里面可能存在的逻辑错误。
简单来说,就是通过提高代码的可读性,使得错误更少、更容易发现。
第六部分 开发软件公司
1和2是jole为两本书写的前言:《Eric Sink on the Business of Software》和《Micro-ISV:From Vision to Reality》。
3.飙高音
好的程序员的作用:
优秀程序员的效率远远高于不好的程序员,开发效率相差十倍;
而不好的程序员永远都做不出优秀程序员开发出的产品,所以单纯增加人手的方法是无法得到好的产品的;
就像一堆飙不了高音的歌唱演员放在一起,音高也打不到F6(女高音的最高音)。