前言
《大道至简》 : 软件工程实践者的思想
作者:周爱民
读书笔记
- 程序 = 算法 + 结构 + 方法
- 算法: 程序逻辑实现的描述
- 结构: 逻辑实现所依附的数据实体
- 方法: 事件驱动,模型驱动 (个人感觉跟架构相关)
- 面向过程和面向对象
- 面向过程是对“流程”、“结构”和“编程方法”的高度概括
- 面向对象是解决“结构”和“编程方法”的问题,没有对“流程”改造
- 对流程进一步的概括是“事件驱动”程序模型,比如Windows的消息系统
- 组织结构和制度
- 没有制度:管理者的过失
- 有制度没有惩戒:执行者和监督者的过失
- 多次犯错而不改:员工的品性和素质问题
- 沟通:定下一件事的起因,目标,结论和原则
- 历史记录非常重要:维护和移交的必要资料
- 需求阶段:与谁联系、联系方式、过程、结果以及由此引发的需求或变更
- 设计阶段:如何进行设计、最初的架构、各个阶段的框架变化、因需求变更导致项目结构上的变化(有助于了解结构的可扩充性)
- 开发阶段:每一种技术选型的过程,每一种开发技巧的细节和相关文档,摘引的每一段代码、算法、开发包、组件库的出处和评测,程序单元的测试框架,每一个设计和架构变更所导致的影响
- 测试阶段:测试用例和测试报告,这是最好的History之一
- 软件工程的瀑布模型
- 定义: 计划,可行性分析,需求分析
- 实现: 系统设计,程序设计,编码与模块测试,组合与系统测试
- 维护: 运行和维护
- 实现才是目的,正如《经营这个笔记》里面说:要以结果为导向
- 不能“做”工程,而是要“组织”工程。项目经理的工作,就是要去组织这个工程中的各个角色,使得分工明确,步调一致,共同完成这个项目。
- 远景更多的侧重于方向的描述,而阶段性的目标的确是必要的。这至少有三个原因
- 明确阶段性目标以便于团队实施和检测
- 细化的设定目标更加灵活,便于修正
- 阶段性成功能充分激励团队的士气
- 方向与远景不妨让大家都知道,但“保障方向”这件事,应该只交给头羊
- 项目经理工作
- 跟踪团队进度,确定先后缓急 (协调)
- 关注大局,发现并督导薄弱环节 (督促)
- 让每个人都看到希望 (激励)
- 及时修正错误避免扩散 (监督)
- 强调团队协作,形成团队凝聚力 (凝聚)
- 项目经理的责任:整个团队的目标
- “先人后己”:在开始自己的工作之前就来招呼大家了:安排每个人的工作,或者解决某些人的问题,那么这会是美好的一天。
- 让影响到别人的事先做与团队高于个人的观念一致
- 问题其实就是你期望的东西,和你体验的东西之间的差别。
- 工程组织是否合理,相互的协作是否紧密,是这个项目能否成功的保障。
- “需求”,“配置”和“文档”等不仅仅是每日一成不变的、模式化的工作步骤,而且也是解结的工具和方法,或者是实施管理思想的道具。
- 好的项目经理并不是不犯错误的人,而是以尽可能少的失败来获得成功的那个人。
- 工具之用,到了融通的地步,也就无所谓“选择哪个工具”
- 融通而后融同,化而用之是对工具本质价值的尊重而非轻视。
- 敏捷开发和传统工程类似“人治”和“法治”的区别
Reference
Gerald M. Weinberg 杰拉尔德·温伯格: 美国杰出的专业作家和思想家,主题主要集中在两个方面:人与技术的结合;人的思维模式、思维习惯以及解决问题的方法。