惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

TaoSecurity Blog
TaoSecurity Blog
L
LINUX DO - 最新话题
Help Net Security
Help Net Security
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
W
WeLiveSecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
Google Online Security Blog
Google Online Security Blog
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tor Project blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
S
SegmentFault 最新的问题
J
Java Code Geeks
P
Privacy & Cybersecurity Law Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 【当耐特】
博客园_首页
H
Hacker News: Front Page
T
Threatpost
Jina AI
Jina AI
博客园 - Franky
月光博客
月光博客
L
LINUX DO - 热门话题
The Cloudflare Blog
H
Heimdal Security Blog
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
Cloudbric
Cloudbric
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
S
Secure Thoughts
T
Tenable Blog
I
Intezer
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

Claude's Blog

浅谈 npm 依赖治理 记录 Got(Node.js) 代理 HTTP 请求的坑 如何管理桌面窗口 SSR 页面 CDN 缓存实践 从 is-promise 事件我们可以学到什么 分享一个 npm dist-tag 的冷知识 从 Vimium 到 qutebrowser Verdaccio 性能优化:单机 Cluster 让 npm install 不使用缓存的方法 Verdaccio 性能优化:代理分流 Verdaccio 性能优化:上游路径转发 CSAPP DataLab 题解 不靠谱的 Egg.js 框架开发指南 如何解决 Debian 系 Elastic apm-server 7.x 启动失败 Hexo NexT 主题升级 7.4 Mac 上移除 EasyConnect 常驻后台进程 Nginx SWRR 算法解读 记一次 Node.js 进程挂起的 BUG 追踪 警惕 Travis CI 的 npm 缓存
From Journeyman to Master
Post author: Claude Ray · 2019-09-10 · via Claude's Blog

《 The Pragmatic Programmer: From Journeyman to Master 》这本书已加入愿望单许久,最近终于在通勤路上读完了。对于处于或将处于熟练工阶段的程序员,毫无疑问这是本值得用心阅读的书,因此我也写一下短评和推荐理由。

作为思想指导性读物,首先它具备不挑剔阅读设备的优点,电子书随处可见的内链(实体书则是页码)可以方便地跳到引用的章节,也能帮读者构建知识的关联体系,因此你可以放心挑选你感兴趣的专题。

其次,它比《 Code Complete 》更凝练,比《 Unix 编程艺术》更平和。尤其推荐给所有所谓的中级程序员,这一点也体现在了书的副标题上 —— 面向读者为 journeyman,也就是训练有素的熟手。

虽然中文版将其译为“小工”,私以为也得是足够可靠的小工,更像是许多大牛自谦的说辞,而不代表毫无软件工程基础的 newbie。对于真正的新人而言,阅读此类书籍所遭受的影响可能是深远的,却也可能不及耳旁风。因为随着当代软件工程的普及程度,阅读时多半会觉得这些道理显而易见、理所当然,“几乎都是课堂和应试中学过的”,这种感觉在《 Code Complete 》更甚。建议没有多少工作经验的人,先去读《 Clean Code 》和 《 Refactor 》,实践更为重要,至于编程思考类的读物凭兴趣看一本足以。

上面是说对未出师的准程序员意义相对较小,而下山历练之人,亲历过绝望的 deadline、妥协的设计以及巨大的屎山,不论将它们克服还是被击败,都更能体会到为何如此常识便是属于大师的技巧与原则。在阅读过程中,就像面向一面镜子自我矫正,你可以不断反思近段时间的行为、状态是否得当。

接下来分享几个阅读本书的 tips:

  • 类似《人月神话》,本书用到了大量的比喻,只凭目录的小标题无法直观地理解作者想表达的主旨。放在最后的附录《Quick Reference Guide》原本是用作复习的,但其实它非常值得在正文前初步阅读,作为章节目录的补充,非常契合跳越式阅读的需要。
  • 英文原版更利于理解作者的思想,透过标题也得承认这一点。
  • 由于个人记笔记经常疏于回顾,为了提高转化效率,就得强迫自己复习思考。我把《Quick Reference Guide》默背着一字一句地敲了下来,效率不算高,但终究是极短时间内让自己多了一些复习过程,所有不清晰的点也在这一步排除掉了。作为一种输出形式,时间性价比极高。

然后聊聊对个人印象最深的几个点,虽然不擅长写读后感,但假设有人翻到了这篇博客,希望可以抛砖引玉。

  • 没有完美的软件,不要任何时候都奉行完美主义,尤其要知道什么时候该停下来。这个对我而言是最为欠缺的,吹毛求疵耗费了大量时间和精力,但从自身角度很难评估哪些时候哪种做法是正确的,正所谓当局者迷。我能想到的对策,除了自省,还必须要走出自己的小圈子,多吸取他人经验。
  • 不要容忍低劣的设计,留着祸患无穷,盘它,一次不行多来几次,不需要犹豫。我经常认为是自己没有考量好才没有动手,回想起来其实就是犹豫,错失了很多磨练的机会。计算常有遗漏,而踩坑则不然,真动起手来才能弄明白设计者的初衷。只有你不希望为这个软件续命时才可以忽视它……(大误
  • 提供解决方案,而不是借口。就算心底没想着找借口抵赖,表达方式上也要额外注意,为了提供更有价值的信息,最后解释甚至不解释。这一点可能我做的还好,甩锅是不存在的,而且非常抵触三句之内讲不到重点的沟通。

原本还想贴一下读书笔记,不然篇幅太短,认真考虑了一下决定不发了,毕竟博客只想放个人产出的东西,书中自有黄金屋,未经加工的笔记还是偷摸着恶心自己吧。

最后是想对自己说的话。

事实上我还远未达到熟练工的程度,遇到没挑战的事只能代表未跳出舒适区。矫正可以帮助自己找到舒适区,而破除壁障,需要在技术根本上出力。最近手痒又折腾起周边工具,看一些效率宝典(包括开篇这本书),想寻求新的突破,久而久之其实也是一种逃避。是时候直面最大的舒适区,把焦点回到编码上,突破更多的自我设限,Keep your mind sharp!