第一章 务实的哲学
务实的程序员的特质是什么?是他们面临问题时,在解决方案中透出的态度、风格及理念。他们总是越过问题的表面,试着将问题放在更宽泛的上下文中综合考虑,从大局着想。毕竟,若不去了解来龙去脉,结合实际如何谈起?又怎能做出明智的妥协和合理的决策?
人生是你的
你有权选择
在所有弱点中,最大的弱点就是害怕出现弱点
我的源码被猫吃了
在面对缺点时也必须诚实——承认我们犯了错误,而且是因为我们的无知而犯下的。
提供选择,别找借口
- 给出选择,而不是找借口。不要说搞不定;解释一下要做什么才能挽回这个局面。
挑战:当你意识到自己在说“我不知道”时,一定要接着说“——但是我会去搞清楚”。用这样的方式来表达你不知道是非常好的,因为接着你就可以像一个专家一样承担起责任。
软件的熵
- 绝望是会传染的,就像狭窄空间中的流感病毒。无视一个明显损坏的东西,会强化这样一种观念:看来没有什么是能修好的,也没人在乎,一切都命中注定。所有的负面情绪会在团队成员间蔓延,变成恶性循环。
- 不要放任破窗
- 不要只是一些东西非常危急,就去造成附带损害。
石头做的汤和煮熟的青蛙
- 做推动变革的催化剂
- 当你清楚地知道需要做些什么,以及怎样去做。你就该拿出石头了——找出你合理的请求,然后不断完善。大家都觉得,加入一个推进中的成功项目更容易一些。因为只要一窥未来,大家就能团结起来。
- 牢记全景
- 不要做那些村民。项目进展缓慢,完全失去了控制——这是很常见的症状。大多数软件灾难都始于微不足道的小事,项目的拖延也是一天天累积而成的。系统一个特性接一个特性地偏离规范,一个接一个地补丁加到代码上,最终原始diamagnetic无影无踪。往往就是一件件小事破坏了团队和士气。
- 永远要留意大局,持续不断地审视你身边发生地事情,而不要只专注于你个人在做的事情。
- 做推动变革的催化剂
知识组合
- 定期投资
- 多样化
- 风险管理
- 低买高卖
- 重新评估调整
目标
- 每年学习一门新语言
- 每月读一本技术书
- 还要读非技术书
- 上课
- 加入本地的用户组和交流群
- 尝试不同的环境
- 与时俱进
试着把你领悟到的东西应用到你当前的项目中。
当有人为你问题时,如你的确毫无思路,也只能坦率地承认自己无法作答。
不要停在这里,把找到答案作为一项个人挑战。
交流
- 了解听众
- 你需要了解受众的需求、兴趣和能力。
- 明白自己想要说什么
- 选择时机
- 挑选风格
- 让它看起来不错
- 让听众参与
- 做倾听者
- 回应别人
说什么和怎么说同样重要
第二章 务实的方法
- 优秀的设计比糟糕的设计更容易变更
- ETC原则(Easier to Change,更容易变更)
- 每次问自己:“我刚刚做的事情是让整个系统更容易改变还是更难改变?”
- 如果不知道怎么才能ETC,你需要做两件事:试着让你写的东西可替换想着一直保持代码的解耦和内聚就行;二,把它当作培养直觉的一种方式。在工程日记里写下你的困惑。
- ETC原则(Easier to Change,更容易变更)
- DRY——邪恶的重复
- 在系统中,每一处知识都必须单一、明确、权威地表达
- 代码中的重复
- 文档中的重复(有些注释没有必要,注释和代码不要重复。尽量在代码的命名里面就写清楚)
- 在系统中,每一处知识都必须单一、明确、权威地表达
- 正交性
- 独立性和解耦性。其中一个的改变不影响其他任何一个,则这些事物是正交的。
- 好处:
- 消除不相关事物之间的影响
- 好处:
- 独立性和解耦性。其中一个的改变不影响其他任何一个,则这些事物是正交的。
- 可逆性
- 曳光弹
- 了解听众
版权声明:本文为weixin_41969113原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。