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:行业未来展望
    • 理想:程序员是用技术解决人类社会常见问题的人
    • 现实:大部分时间用来查找缺失的分号,阅读没有注释的代码等等;

文章来源于互联网:代码之外的功夫.程序员精进之路

发表评论