「程序员修炼之道」【更新中】笔记
自我修养:
- 频繁的高强度的外部刺激(项目)和自主意识(自身训练)的反复提醒是加速知识内化的两个途径,应该通过实践获得知识。
- 关心自己的技艺
- 思考关于自己的工作
- 注重实效的程序员有的特征:承认自己的错误,并为其负责,不去找接口,找到错误原因,想出什么能挽回局面。承认自己的错误,并为其负责,不去找接口,找到错误原因,想出什么能挽回局面。
- 早期采纳者:有技术直觉,很快就能把握它
- 好奇:想知道是怎么做到的
- 批判的思考
- 有现实感:会设法理解每个问题的本质,事情有多困难,需要多长时间等
- 多才多艺:不止会一方面的技术
- 承认自己的错误,并为其负责,不去找接口,找到错误原因,想出什么能挽回局面。
- 不要容忍破窗户(低质量的代码)存在,应当及时修正,否则根据破窗理论,代码会越来越烂。
- 每个人都会捍卫自己的资源,导致项目启动难,称为“启动杂役”。这时,应充当改变的催化剂。同时,应当记住大图景,而不是自身的一点内容。
- 使软件质量成为一个需求问题,不应该永不止境的关注细节,因为会耗费大量精力。并且,代码不可能完美。
- 知识资产随着新技术、语言、环境的出现,知识可能会变得过时,应当经营自己的知识资产:
- 定期学习新知识
- 多元化:掌握的不同知识越多,就越有价值,同时可抗因为技术变化带来的过时风险
- 管理风险:不要只掌握一个技术
- 低买高卖:新技术可能会被低估,但是如果是流行技术的最先采用者,可能带来回报
- 重新评估和平衡:不断的更新学习计划,顺应技术变化
- 定期为自己的技术投资,保证持续学习:
- 学习一种新语言
- 阅读一本技术书籍
- 阅读非技术书籍
- 寻找有趣的课程并上课
- 参加技术会议
- 实验不同的软件环境
- 跟上技术潮流
- 通过网络学习
- 提问:
- 确切的知道自己想要问什么
- 小心的组织自己的问题,记住自己在求助,不是要求别人回答
- 组织好问题后,通过搜索进行问题答案寻找
- 决定在什么场合提问
- 耐心等待,并感恩。
- 交流
- 了解听众需要什么?
- 你想让他们学到什么?
- 对你讲的什么感兴趣?
- 他们有多富有经验?
- 他们想要多少细节?
- 你想要谁拥有这些信息?
- 如何促使他们听你说话?
- 方式:
- 选择交流时机
- 选择风格
- 让文档美观
- 让听众参与
- 做倾听者
- 回复他人
- 了解听众需要什么?
代码:
- DRY:不要重复自己,让复用变得容易
- 强加的重复:不能避免的重复
- 无意义重复:有的属性可以通过计算得到,不应重复,一定要重复
- 无耐心的重复:对代码进行拷贝修改式的复用
- 开发者间的重复:不同团队对一段代码的多次编写
- 正交性:两部分解耦,变化不应依赖于另一部分。可撤销性:不存在最终决策。思考代码里哪里会变更,写得低耦合,方便对底层组件进行更换。
- 引入工具和库时,思考会不会引起当前代码发生变动。
- 编码:
- 让你的代码保持解耦
- 避免使用全局数据
- 避免写相似的函数
- 可撤销性:不存在最终决策。思考代码里哪里会变更,写得低耦合,方便对底层组件进行更换
- 曳光弹:先用曳光弹找到目标。即编写代码,看代码是否能完成目标。曳光弹可以给客户展示沟通,同时搭建了一个可在里面工作的架构。原型是用过就扔的代码,曳光弹可成为代码的一部分。