The Pragmatic Programmer (20th Anniversary Edition)

David Thomas, Andrew Hunt

出版时间

2019-09-23

ISBN

9780135957059

评分

★★★★★
书籍介绍
这不本教你写代码的书,而是一本关于程序员如何思考、如何做事、如何与自己职业相处的书。它谈重构时先跑测试、谈错误要早崩溃、谈别让旧代码绑架新代码,谈团队分工的“正交性”——这些不是具体语言或框架的技巧,而是一种近乎职业伦理的思维方式。读者评价两极分明:有人视其为“程序员自我提升的首选”,前三章“非常值得一读”;也有人嫌它“杂而不精”“大道理多、例子少”,甚至“过于理想”。正是这种争议构成了它的独特价值:它不保证让你成为顶尖工程师,但会逼你审视自己是否在用“匠人”而非“码农”的标准要求自己。适合那些不满足于完成任务、想要向上走的程序员;对只想查技术细节的人,它可能显得空泛。
作者简介
Dave Thomas and Andy Hunt are internationally recognized as leading voices in the software development community. They consult and speak around the world. Together, they founded the Pragmatic Bookshelf, publishing award-winning, leading-edge books for software developers. They were two of the authors of the Agile Manifesto. Dave currently teaches college, turns wood, and plays with new technology and paradigms. Andy writes science fiction, is an active musician, and loves to tinker with technology. But, most of all, they’re both driven to keep learning.
AI导读
核心看点
  • 二十年纪念版,涵盖从代码规范到职业发展的全方位建议
  • 提出正交性、早崩溃、破窗户等经典软件工程原则
  • 强调态度与思维转变,旨在培养靠谱且高效的程序员
读者共识
  • 被誉为程序员必读经典,对职业生涯轨迹有深远影响
  • 语言通俗可读,但部分读者认为内容杂而不精或理想化
  • 虽多为常识性大道理,但系统总结极具价值,值得重读
精彩摘录
  • "项目团队 你是否注意到,一些项目团队非常高效,每个人都知道该做什么,并做出了充分的贡献;而其他一些团队的成员却总是争吵不休,似乎无法相互谦让? 通常这就是一个正交性问题。当团队组织重复到架屋迭床时,成员会对职责感到困惑。每修改一个东西都需要整个团队开会,因为修改会影响每个人。 如何将团队组织成职责明确、重叠最少的不同小组?没有简单的答案。这一定程度上取决于具体项目,以及你对可能发生变化区域的分析;同时还取决于你能调用的人手。我们的首选做法是,先将基础设施从应用程序中分离出来,让每个主要的基础设施组件(数据库、通信接口、中间件层等)都有自己的子团队,让应用程序中特别明显的不同功能都能简单地分开。"
  • "要把低级的知识放在代码中,把注释留给高级的知识。"
  • "早崩溃"
  • "不要做历史的奴隶,不要让已有的代码支配将来的代码,如果不再适用,所有的代码都可被替换"
  • "1. 不要试图在重构的同时增加功能 2. 在开始重构之前,确保你拥有良好的测试。尽可能进场运行这些测试。这样,如果你的改动破坏了任何东西,你就能很快知道 3. 采取短小、深思熟虑的步骤。如果你的步骤保持短小,并在每个步骤之后进行测试,你将能够避免长时间的调试 完美,不是在没有什么需要增加,而是在没有什么需要去掉时达到的 需求不是架构,需求不是设计,也不是用户界面,需求是需要"
  • "提供各种选择,不要找蹩脚的借口"
  • "“不要容忍破窗户”"
  • "”做变化的催化剂”"
用户评论
前三章有很多非常好的内容,非常值得一读。但往后就太像商业的话术了,零星的内容加上(至少今天来看的)常识被各种方式重新转述,很快就失去了阅读的耐心。
pages of nonsense. 这一行门槛低的本质在于普遍工作其实就相当于工人干活,只不过包装得漂亮一些。
听完了,感觉这些道理大家可能都懂,但是很少有人总结出来。
垫显示屏首选的书出第二版啦,Performance review/peer review 的时候特别有用😅
没读过第一版,但也听说过其中的一些观点。在工作之后偶尔读完了第二版,对某些也深有体会。其中讲到了一些心态,或者说态度问题:不能逃避现实,要积极的解决问题。同时,也要明白不存在完美的软件,但可以用经验,迭代,测试提升软件的质量。用建筑高楼比喻软件工程是不恰当的,而用园艺比喻更加贴切:需要规划,种植,随着时间推移,一些花朵植被衰退(软件的一些功能被deprecated),一些新的花朵被引进(新功能),移动一些花朵获得更多养分和阳光(重构)。我自己在写个人项目的时候很难有这些体会,但工作了也逐渐明白了一点,推荐给刚入职的程序员阅读。
讲了很多大道理,但例子不足
摸鱼时翻完的,很多建议都很不错。
我的技术灵魂升华了
This book discusses philosophies and methodologies of being a pragmatic programmer. Each chapter covers one interesting topic, for example, why pragmatic? How to be pragmatic? Etc. It provides me some new angles and mindsets of understanding my role as a software engineer, which I value very much. I'm excited to try its tips in practice.
下载
收藏