大型编程项目参与的人数较多,不同人对项目的理解很难达成一致。甚至对于同一件事,一个人在不同时间往往也会有不同的理解。因此产品的整体构架必须在极少设计架构师在经过深思熟虑后达成一致的理解的情况下完成,所有人在同一个框架下完成产品。精巧缜密的设计能在开发中减少工作量和复杂性。从学生的体会来讲,往往实践课程都是3~5个人的小组完成,就几个人之间对一个较复杂项目的理解都会存在偏差,更无法想象一个十百千人的项目在开发上会遇到多大的困难。“所有编程人员都是乐观主义”,这点深有体会,程序员对自己都比较自信,大家都相信自己的程序这次肯定会运行。这样往往在工作时间的估计上出现偏差。计划好一个下午写好的代码可能会因为程序员自己认为的“最后一个bug”花费一个晚上的时间去修改。由此晚上的计划只能推迟到明天,系统编程进度安排背后的一个假设是:一切会运行良好,每一项任务仅花费它所应该花费的时间。这样的进度安排存在很大的问题。 团队合作和内部交流是软件开发中很重要的事。架构师和具体负责某模块编码员工的交流,模块内部成员的交流都需要彻底高效。本书中也讲到交流的重要性和交流方式。 从菜鸟成长为IT精英的过程是逐渐学会用计算机的思维转化问题的过程。人通过计算机解决问题是把人对此问题的解决方式转化成计算机的思维方式,然后用程序语言实现。程序员做了人与计算机的桥梁。人脑和“电脑”有很分明的特点。人脑能进行更复杂高级的思维,但是“内存”和“速度”有限。而“电脑”只能进行很简单的几种逻辑思维,但是有很大的存储和速度。