Programming Beyond Practices
生活是个谜,就像一个巨大的“what if”,但生活的乐趣在于我们为自己设定要选择的方向。我们有得有失,但随着时间一天天流逝,我们会一点点成长
【新手】
- 故事1:新品开发
- 「线框图」,快速讨论需求;
- 搭建可用的「测试系统」;
- 故事2:产品迭代(☆☆☆☆)
- 耦合无处不在;即使代码独立,数据库依旧可能耦合;
- 隐性依赖:存储机制,处理能力,数据库,外部服务,依赖库(dll/jar/pip/gem),用户界面
- 故事3:整合外部服务(☆☆☆☆)
- 外部服务不可靠:过期的lib可以用,过期的web服务会宕机;
- 不存在纯粹的内部问题
- 系统风险:异常报告系统和客户通知系统共用一套邮件投递机制,是有风险的;
【高手】
- 故事4:解决复杂问题的过程
- 每个问题背后都有一堆简单的子问题,不断拆解
- 故事5:自下而上
- 从MVP开始,不断优化、重构代码
- 优点:保持代码的简洁
- 局限:盲人摸象,缺少整体性
- 故事6:系统升级
- 康威定律:组织在设计系统时会被其自身的沟通结构所限制,设计出的系统具有相同的结构
- 「引申」:系统与管理方式要匹配
【专家】
- 故事7:软件项目管理(☆☆☆☆☆)
- 约束理论:突破工作过程中的一个瓶颈,很自然地会让人看到另一瓶颈
- 未上线的代码不是资产,而是存货,而且会腐坏,具有持有成本(不断贬值)
- 过载:流入量大于流出量;新特性速度 > 发布速度;
- 开发计划 与 发布日程同步
- 「玫瑰、花蕾和荆棘」:跨部门总结
- 海盗指标:AARRR, Acquisition, Activation, Retention, Revenue, Referral
- 故事8:行业未来展望
- 理想:程序员是用技术解决人类社会常见问题的人
- 现实:大部分时间用来查找缺失的分号,阅读没有注释的代码等等;