这段时间读的是第1章注重实效的哲学和第2章注重实效的途径。
第一章阅读笔记及其个人感受
在所有的弱点中,最大的弱点就是害怕暴露弱点
1.1 负责(分析和把控)
2 软件的熵(无序“总量”)
不要留着“破窗户”(低劣的设计、错误决策或是糟糕代码)
2.1 灭火
-
石头汤与煮青蛙
有试试请求许可去做,你会遇到拖延和漠然。如果每个人都会护卫自己的资产
-
足够好的软件
欲更好,常常变得更糟。
金融资产管理
- 定期投资习惯
- 多元化
- 保守、高风险之间平衡
- 最大回报
- 周期性评估和平衡资产
知识资产:
- 每年至少学习一种新语言
- 每一季度阅读一本技术书籍
- 也要阅读非技术书籍
- 上课
- 参加本地用户组织
- 试验不同的环境
- 跟上潮流
- 持续投入
学习的机会
- 阅读
- 搜索信息
- 搜索知道信息的人
批判性思考
交流
- 必须的
- 知道你想说什么
- 了解你的听众
- 选择时机
- 调整你的风格
- 让听众参与
- 做倾听者
- 回复他人
提示
- 不要容忍破窗户
- 做变化的催化剂
- 记住大图景
- 使质量成为需求的问题
- 定期为你的知识资产投资
- 批判地分析读到的和听到的
- 你说什么和你怎么说同样重要
第二章 注重实效的途径
重复的危害(不要重复你自己,要有权威规范和标准)
- 强加的重复(改了代码,也要改注释)
- 无意的重复 (设计时没有考量到的)
- 无奈的重复 (这里可以去拷贝?)
- 开发者之间的重复(如何知识管理)
2.1 正交性(消除无关事物的影响)
内聚
- 促进复用。
- 降低风险
- 更好地测试
思考
- 怎么划分职责
- 怎么设计
- 工具箱+库 ==> AOP
需要
- 不断测试
- 写文档
2.2 可消除性
如果某个想法是你唯一的想法,再也没有比这更危险的事情了。
变化==> 灵活架构
代码与 薛定谔的猫。
未来有多少个未来?你敢打开盒子么?
拽光弹
快速、直观和可重复地从需求出发满足系统的某个要求。
让你有方向地调整。
侦察与收集情报。
优点:
- 用户及早看到工作的东西
- 构建一个开发者能在里面操作的结构。
- 有自己的集成平台
- 有了可演示的内容
- 能感觉到工作的进展
抽象,解耦。
11 原型
- 正确性(分析与揭示问题)
- 完整性
- 健壮性
适当使用原型
早期缺点和改正潜在的问题
便宜、容易,节省成本。
12 领域语言
语言的界限就说一个人的世界的界限。——维特根斯坦
计算机世界
- 编程语言会影响你思考问题
- 交流方式
用一个工具去分析需求
- 靠近问题思考
- 抽象层中,专心解决领域问题的自由。
- 构造数据结构
- 可能是小的交互脚本(bat)
思考
- 易于开发还是易于维护?
- 维护性的回报?
13 估算
思考
- 传送一个40m文件需要多久?
- 你编写的时候,知道需要哪些子模块么?
- 多准确才足够准确?
- 估算从哪里来?(模型基础)
- 系统的模型
- 创造性,也说有趣的
- 哪些说确定的,哪些说不确定的。(分解+计算)
- 有问题再重头再来估算
- 项目进度
- 检查需求
- 分析风险
- 设计、实现、集成
- 向用户确认
提示
- 不要重复你自己
- 让复用变得容易
- 消除无关事物之间的影响
- 不存在最终决策
- 用拽光弹找你的目标
- 为了学习而制作原型
- 靠近问题领域编程
- 估算,以避免发生意外
- 通过代码对进度表进行迭代
第二章阅读笔记及其个人感受