程序员

《代码之外的功夫:程序员精进之路》5~8章读书笔记

2020-12-10  本文已影响0人  跑马溜溜的球

第6章 认清现实瑕疵,改善数据建模

背景:你在通往大师的道路上继续前行。你可以指出公司遗留系统的弱点,并设计合适的组件进行替换,既使商业效果得到优化,又使工作流程更加友好。

6.1 分清概念建模和物理建模

在数据源混乱的系统中,一般最好保留一定的灵活性,不要在模型的物理层强加太多结构。

6.2 明确设计模型,追踪数据变化

事件溯源模式(更多参考)将独立事件建模为不变的数据。这些数据代表不变的事实。通过遍历事件序列并计算结果,可以看到系统当前的状态。

康威定律:设计系统的组织,其产生的设计和架构等价于组织间的沟通结构。如果你的系统设计或者架构不支持,那么你就无法成功建立一个有效的组织;作为系统架构师,一定要深入领会康威定律,设计系统架构之前,先看清组织结构,也要看组织文化(民主合作式,集权式,丛林法则式,人才密度),再根据情况调整系统架构或者组织架构。(更多架构和康威定律的论述参看这里

本章小结

第7章 逐渐改善流程,合理安排时间

背景:你对整个软件行业都已经足够熟悉。无论组织的哪个层级出现问题,你都能发现并修复。你的核心竞争力仍然是软件开发,但足够丰富的经验使你能很好地与各个层级的人员进行交流。

7.3 注意权衡工作的经济效益

帕累托法则:很多情况下,20%的投入就会有80%的产出。

7.4 限制积压工作,力求减少浪费

突破工作过程中的一个瓶颈,很自然地会让人看到另一个瓶颈。这是进步的标志。

未上线的代码不是资产,而是存货。而且,这些存货还容易腐坏,并具有持有成本。

若想跟上进度,要么放慢发布节奏,并且减少开发工作,要么加速反馈环。我认为将三者结合可以达到最佳效果。

7.5 力求整体大于部分之和

“玫瑰、花蕾和荆棘”的形式总结:“玫瑰”代表发生的好事,“花蕾”代表大有希望的事,而“荆棘”代表遇到的痛点。

海盗指标(更多参考):(AARRR metrics, AARRR分别代表Acquisition、Activation、Retention、Revenue和Referral,即获取、激活、留存、收入和推荐),这些指标对任何公司都至关重要。

要足够了解周围每个人都在做什么,以便了解自己的工作是否符合大局。比如,每周让一位开发人员抽出一天时间解决客户支持团队认为值得处理的“小问题”。每周轮换,让所有开发人员都有机会处理客户的问题,从中获得经验。

本章小结

本章的案例问题及解决方式值得反复研读。

第8章 认清行业未来,再议软件开发

在不久的将来,“程序员是用技术解决人类社会常见问题的人”这一观点可能成为行业标准。

程序设计中最有趣的一直是解决问题、沟通等“以人为本”的方面;代码只是我能找到的解决问题最有力的工具而已。

站在足够高的层次与计算机交流,只需要关注如何解决问题,而不是纠结于代码编写中的细枝末节。

如果你想保持头脑清醒、不忘记问题背景,就需要一遍又一遍地问:“等等,我想解决什么问题来着?”

上一篇下一篇

猜你喜欢

热点阅读