★★★☆☆ 「程序员修炼之道」——从小工到专家

本书作者 Andrew Hunt 和 David Thomas 从多个角度探讨了什么是好的编程习惯和如何搭建一支高效的编程团队。这本书值得再重读,我感觉这一次读有很多内容并不适用于我现在的工作环境,比如如何保持高效的团队协作。我同意一个说法是,这本书需要等到一定时候才需要去看或者说才可以看得懂。以下是我摘抄的部分:

DRY原则 (Don’t Repeat Yourself)

  • 几种可能的重复:imposed duplication/ anadvertent duplication/ impatient duplication/ interdveloper duplication
  • 把低级的知识放在代码里。注释留给高级说明。

正交性

  • 保持代码改动局部化,隔离风险;同样的,小组成员的分工也要正交化。
    • 维持正交:保持你的代码解耦/避免全局数据/避免写相似的函数/尝试重构。

曳光代码

  • 从开发最小可用产品开始。避免从复杂繁重的文档和大而全的设计开始。先实现一个可供操作和评估的东西,观察用户的反应。一旦命中,再对其进行修缮和完备,反复直到形成最终的产品。
  • “曳光弹”是可交付代码的一部分,而“原型”的代码与交付的产品没有任何关系。

版本控制

  • 永远保持所有东西都在版本控制之下,包括代码以外的东西。这样给我们在关键时刻使用时间机器的能力。

Design by Contract (DBC原则)

  • Write down the precondition, post condition and case invariant so that you can check them easily.

Crash Yor Program Earliy

  • 在出现错误的时候,让你的程序早点崩溃比让它继续跑下去并导致不可预料的后果更好。有以下一些方法去达到这个目标:
    • Catch runtime error
    • Use assert: If it can’t happen, use assertions to make sure it wont

Metaprogram Design

  • Configure, don’t integrate into the code.
    • 我的理解是用配置文件管理程序而不是把参数hard coded在里面。

不要依靠巧合编程

  • 不要不顾一切地尝试把某种东西显示在屏幕上,这往往就是你在依靠巧合编程。
  • 在极端情况下,你的例程甚至没有被设计成去做你想要他做的事情,但看起来他却工作的很好。

解决不可能解决的谜题

  • 尝试着向鸭子玩具解释每一行代码,让代码里的错误自然地浮现出来。
  • 问自己是不是一定要这么做去解决问题。
  • 重新审视真正的需求。

营销技巧

  • 创建一个团队的logo,可以用滑稽的名字,在各种展示的场合到处用,提升团队凝聚力,更容易被外界recognized。

自动化流程

  • 编译,单元测试等都可以自动化。用Shell等编写脚本。

杂项

  • 让你的用户参与权衡需求,在最后一刻为了满足时间压力而削减掉基本的工程内容是没有职业素养的行为。
  • 投资知识资产和金融资产的要诀是一样的:定期投资/多元化/平衡风险和回报/低买高卖/周期性重新评估和平衡。
  • 批判性的思考,警惕商业主义的力量。比如书店展示一本书是因为有人付了钱。
  • 日常生活中应该总是对他人得邮件做出回应,即使内容是我稍后回复你。让他们原谅你偶然的疏失,你没有忘记他们。
  • Gently exceed users expect。 增添自己的商誉。
  • 名词学习: Hisenburg: 改变了被调试系统的调试过程
  • 这本书翻译的真是太差了。我真的觉得看英文版的恐怕会好一些。这本书的中文翻译差到让我第一次看着中文书用英文记起了笔记。

2018-03-24 编程

最近文章

  • FIRE第一课:每一块钱都比上一块钱更贵 在这一篇文章里,我将介绍诸如“每个人都能在12年里退休”这样的令人惊异的反直觉结论,探讨为何财务自由是可能的,以及为何 消费主义是21世纪最大的陷阱之一 我们应该积极追求财务自由。本文与后续系列文章共同组成【FIRE课堂】系列,为读者介绍人生迷宫的一个出口。
  • 《数字极简主义》——信息狂筵与注意力救赎 Digital Minimalism 对当代人过度的数字生活进行了反思和系统提炼。作者认为技术本来是为生活服务的,而现在这种自动化的数位性却降低了生活的快乐,消磨了有意义的活动,甚至主宰了我们的文化属性。在本书中作者也给出了一系列的对数字生活进行整理和减负的原则和实操建议。这本书传达的核心信息其实在其副标题 Choosing a Focused Life in a Noisy World。作者在本书中所倡导的并不是反对一切数字工具,而是建议人们能够更加理智地利用这些数字工具。正如消费极简主义并不是抗拒资本主义社会,而是倡导只清醒地进行必要的消费,数字极简主义也只是鼓励读者翻身做数字技术的主人,重新拿回自己的人生的控制权。
  • ★★★★☆ 郭建龙:「中央帝国的哲学密码」 「中央帝国的哲学密码」一书用平实的语言介绍了从中国历史上占统治地位的政治哲学从战国时期到清朝的演变历史。力图解答为何中国人千年来在政治与人的框架中反复挣扎震荡,在精神世界的层面上鲜有普世价值意义上的进步。
  • OSX Mojave根据BSSID选择指定Wifi路由 在公共场合使用Mac的时候偶尔会遇到所处的地方有多个同名的Wifi路由器,出于各种原因你可能只想连接其中一个。在OSX Mojave下可以通过airport-bssid这个工具让系统连接到指定的路由器上。
  • 本地转换中英文扫描版PDF为可搜索文件 我终于找到了一个可以本地把扫描版的中文PDF变成可搜索的PDF的命令行工作流程。具体方式为安装支持中文包的ocrmypdf这一开源软件。
  • ★★★★★ 武志红:「巨婴国」——中国国民性的心理动力学 集体主义的真相是,个体的心理发展水平太低,导致大多数人的里子是破碎的,必须千人一面,用共生的方式,追求和他人的融合,以此将个体镶嵌进一个集体性自我中。 —— 武志红
  • Review for Top 3 Halite 2 Bots In this post, I aim to give a brief review on the useful strategies and tricks for the top 3 bots in last year’s Halite 2 competition.
  • ★★★☆☆ 阮一峰:「未来世界的幸存者」 2016年3月,谷歌公司的围棋程序 AlphaGo 战胜了世界冠军李世石。 这让我猛然意识到,世界正处在一个前所未有的大变局: 机器人、自动化、人工智能正在变得比人类更强大。 在可预见的将来,技术最终将淘汰人类。 技术变革导致了人类社会的重构。绝大部分的人没机会参与这个进程,只能被动接受其他人安排自己的命运,而且没有改变命运的机会。
  • ★★★★★ 盖达尔:「帝国的消亡」——当代俄罗斯的教训 我们无力承担一个帝国!——而且也没有必要,我们应该将其抛弃,因为它使我们不堪重负、民穷财尽、加速毁灭。 ——亚· 索尔仁尼琴《我们应当如何构建俄罗斯》
  • 中国历史与科技世界的未来:2018年9月读书短评 我计划不定期更新一下我在读的书的列表和简短评论。对于有意思的书可能除了评论之外会单写一篇文章记录一下我的摘抄或者读后感。希望我能每3到6个月更新一次这个读书计划与短评系列。本篇是2018年9月的第二期。 
  • 翻越中文「局域网」:我从哪里看新闻? 时不时会有人问我是从哪里看的新闻或时事,我常常因为从头解释一遍嫌太麻烦而搪塞带过。所以我想专门在博客里写一篇心得,分享一下我用来保持对世界关注的一些信息源和工具,希望对读者有所益处。
  • 中日社会与经济:2018年3月读书短评 我计划不定期更新一下我在读的书的列表和简短评论。对于有意思的书可能除了评论之外会单写一篇文章记录一下我的摘抄或者读后感。希望我能每3到6个月更新一次这个读书计划与短评系列。本篇是2018年3月首发的第一期。
  • 在Github上搭建免费博客:Jekyll 这个博客是用Jekyll搭建在Github Pages上的。根据阮一峰老师的教程文章,使用Jekyll+Github Page建立博客的好处主要是:
  • ★★★☆☆ 「程序员修炼之道」——从小工到专家 本书作者 Andrew Hunt 和 David Thomas 从多个角度探讨了什么是好的编程习惯和如何搭建一支高效的编程团队。这本书值得再重读,我感觉这一次读有很多内容并不适用于我现在的工作环境,比如如何保持高效的团队协作。我同意一个说法是,这本书需要等到一定时候才需要去看或者说才可以看得懂。以下是我摘抄的部分: