具体描述
忍受各种不确定性及不间断的压力并能够获取成功的程序员有一个共通特征:他们都深度关注软件创建实践。他们都把软件看做一种工艺品。他们都是专家。在“鲍勃大叔”看来“专业”的程序员不仅应该具备专业的技能,更应该具备专业的态度,这也是本书阐述的核心。专业的态度包括如何用带着荣誉感、自尊、自豪来面对进行软件开发,如何做好并做得整洁,如何诚实地进行沟通和估算,如何透明并坦诚地面对困难做抉择,如何理解与专业知识相伴的责任。
点击链接进入: 代码整洁之道
作者简介
Robert C. Martin,世界级软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report 前主编,被后辈程序员尊称为“Bob大叔”。20世纪70年代初成为职业程序员,后创办Object Mentor公司并任总裁。Martin还是一名多产的作家,至今已发表数百篇文章、论文和博客,除本书外,还著有《代码整洁之道》、《敏捷软件开发:原则、模式和实践》、《UML:Java程序员指南》等。他最近创办了cleancoders.com网站,专为软件开发人员提供教育视频。
章显洲,阿里巴巴高级技术专家,敏捷与精益方法实践者,专注于敏捷与精益管理,擅长互联网研发团队的构建与改善。业余以技术翻译作为个人修炼与回馈软件开发社区的途径。自2009年来,翻译和合译的技术书籍包含《精益软件开发艺术》、《微软的秘密》、《软件架构师应该知道的97件事》、《程序员的职业素养》、《看板》。偶尔也会出现在技术社区的聚会上作一些分享和演讲。博http://genericbrain.com 。新浪微博@章显洲-Arthur。
余晟,毕业于东北师范大学计算机系,副修中文,非正统型技术爱好者。曾任抓虾网、银杏泰克主力程序员,盛大创新院高级研究员,现任华南某电商公司技术总监。坚信计算机可以无限延伸人的能力,前提是人必须理解计算机的逻辑,所以对任何技术都不应该浅尝辄止,仅仅满足于“会用”。
目录信息
Preface
Acknowledgments
About the Author
On the Cover
Pre-Requisite Introduction
Chapter 1 Professionalism
Be Careful What You Ask For
Taking Responsibility
First, Do No Harm
Work Ethic
Bibliography
Chapter 2 Saying No
Adversarial Roles
High Stakes
Being a “Team Player”
The Cost of Saying Yes
Code Impossible
Chapter 3 Saying Yes
A Language of Commitment
Learning How to Say“Yes”
Conclusion
Chapter 4 Coding
Preparedness
The Flow Zone
Writer’s Block
Debugging
Pacing Yourself
Being Late
Help
Bibliography
Chapter 5 Test Driven Development
The Jury Is In
The Three Laws of TDD
What TDD Is Not
Bibliography
Chapter 6 Practicing
Some Background on Practicing
The Coding Dojo
Broadening Your Experience
Conclusion
Bibliography
Chapter 7 Acceptance Testing
Communicating Requirements
Acceptance Tests
Conclusion
Chapter 8 Testing Strategies
QA Should Find Nothing
The Test Automation Pyramid
Conclusion
Bibliography
Chapter 9 Time Management
Meetings
Focus-Manna
Time Boxing and Tomatoes
Avoidance
Blind Alleys
Marshes, Bogs, Swamps, and Other Messes
Conclusion
Chapter 10 Estimation
What Is an Estimate?
PERT
Estimating Tasks
The Law of Large Numbers
Conclusion
Bibliography
Chapter 11 Pressure
Avoiding Pressure
Handling Pressure
Conclusion
Chapter 12 Collaboration
Programmers versus People
Cerebellums
Conclusion
Chapter 13 Teams and Projects
Does It Blend?
Conclusion
Bibliography
Chapter 14 Mentoring, Apprenticeship, and Craftsmanship
Degrees of Failure
Mentoring
Apprenticeship
Craftsmanship
Conclusion
Appendix A Tooling
Tools
Source Code Control
IDE/Editor
Issue Tracking
Continuous Build
Unit Testing Tools
Component Testing Tools
Integration Testing Tools
UML/MDA
Conclusion
Index
· · · · · · (收起)
读后感
Clean Coder读完了,阖上Kindle DX,仔细想想,作为一个Professional Coder是多么困难的事情。本书详细阐述了如何做一个职业的开发人员,如何信守自己的承诺(何时说Yes,何时说No),如何做时间规划,如何做测试,如何面对压力,如何进行协作。一个Agile的开发场景在一个个小...
写于 2018 年 9 月 16 日。 作者结合自身的经历告诉读者,一个程序员应该具备怎样的素质,才能称为“专业的程序员”。这种专业性,体现在自内而外的自信中,体现在该说不时说不,而当他说“是”时,别人会完全相信他,因为“是”的背后是理性的分析,是具体的数字。 简单笔记如...
写于 2018 年 9 月 16 日。 作者结合自身的经历告诉读者,一个程序员应该具备怎样的素质,才能称为“专业的程序员”。这种专业性,体现在自内而外的自信中,体现在该说不时说不,而当他说“是”时,别人会完全相信他,因为“是”的背后是理性的分析,是具体的数字。 简单笔记如...
Robert C. Martin编著的《程序员的职业素养》具体内容包括:成为真正的软件专业人士需要鼻备哪些条件,如何应对彼此冲突又紧张的进度表和不近情理的管理人员,如何做到流畅编程,克服阻塞状态,应对无休止的工作压力的方法,培养坚持不懈的态度,拥抱新的开发范式、以及如何管...
看完这本书,才知道,之所以公司整天要加班,整天要通宵,每到迭代出口就拼死拼活,版本发布后客户一个投诉,又通宵定位,这些,都是因为这支程序员团队,不够专业! 需求到底是什么,仅靠一份需求说明书是无法澄清的,所以也就有了后面的客户不满意,重做; 单元测试,是重来...
用户评价
对于我这种已经工作了几年,代码写得不少但总觉得总是在“打补丁”的开发者来说,这本书就像是及时雨。它提供的架构思维是革命性的。我以前总是在写完一个功能后就感到庆幸,而不是思考这个功能如何与其他部分和谐共处。这本书细致地拆解了大型项目的演化过程,展示了那些看似平庸的早期设计是如何一步步将项目引向泥潭的。它不是教你如何立刻写出“完美”的代码,而是教你如何预见未来的变化,并提前构建出具有弹性的结构。里面的“防腐层”设计理念,对我解决遗留系统集成问题提供了极大的启发。我开始用一种全新的眼光审视现有的代码库,尝试去识别那些潜在的耦合点和脆弱环节。这种自上而下的宏观视野,是看任何单独的技术文档都无法获得的宝贵财富。这本书的实战指导性极强,可以直接应用于工作中的痛点。
这本书最让我感到震撼的是其对“简洁”哲学近乎偏执的追求。它反复强调,移除不必要的复杂性是最高级的智慧。作者对于冗余代码的“零容忍”态度,以及如何通过精炼的表达来达到最大的功能效果,简直是一种艺术。它没有给我灌输一套僵硬的编码规范,而是引导我去内化一种审美标准,去追求代码的优雅和高效。读完之后,我发现自己开始对那些“看起来很聪明”但实则晦涩难懂的代码产生警惕,转而欣赏那些清晰、直接、一目了然的解决方案。这种思维模式的转变,才是这本书最大的魔力所在。它让我明白,真正的专业性,是能用最少的力气,解决最复杂的问题,并且让后来的维护者能够毫不费力地理解这一切。这本书,无疑是提升编程境界的催化剂。
这本书真是让我大开眼界,它深入浅出地探讨了软件开发的方方面面,特别是那些在日常工作中容易被忽视的细节。作者的笔触非常细腻,对每一个技术概念的剖析都深入骨髓,让人在阅读过程中不断有“原来如此”的恍然大悟。我印象最深的是其中关于模块化设计的章节,它不仅仅停留在理论层面,而是结合了大量的实战案例,展示了如何在复杂系统中保持代码的清晰和可维护性。读完之后,我发现自己对代码重构的恐惧感大大降低了,取而代之的是一种主动去优化现有结构的冲动。这本书的价值不仅仅在于教你如何写代码,更在于培养你一种对“好代码”的直觉和品味。那种对性能、可读性和扩展性之间微妙平衡的把握,是书本知识难以完全替代的,但这本书成功地将这种经验提炼了出来,以一种非常系统化的方式呈现给我。这绝对是一本值得反复阅读的工具书,每翻开一次,都会有新的感悟。
说实话,我本来以为这又是一本堆砌术语和陈词滥调的编程书,但事实狠狠地打了我的脸。这本书的叙事风格非常独特,它没有采用那种严肃刻板的教科书模式,反而更像是一位经验丰富的老前辈在跟你分享他走过的那些弯路和踩过的那些坑。它的语言充满了活力和人情味,读起来非常轻松愉快,丝毫没有阅读技术文档时的枯燥感。特别是在讨论团队协作和代码审查的部分,作者的观点非常独到,他强调了“代码是写给人看的,只是偶尔才给机器执行”这一核心理念,并指出沟通效率的重要性远超代码本身的“完美性”。我尤其欣赏作者敢于挑战一些业界被奉为圭臬的“最佳实践”,并从更深层次的原则去审视它们,这让我学会了批判性地吸收知识,而不是盲目跟风。这本书提供了一种更具人文关怀的视角来看待编程这件事,让冰冷的代码世界多了一份温暖和思考。
我必须承认,这本书的深度和广度超出了我的预期。它不仅仅关注了代码层面的细节,还触及了开发流程、工具链选择乃至个人职业成长的方方面面。例如,它关于自动化测试策略的论述,摒弃了“越多越好”的简单口号,而是提出了基于风险评估的优先级划分方法,这让我对测试的投入产出比有了更清晰的认识。书中引用的许多比喻都非常形象生动,将复杂的抽象概念具体化,使得初学者也能快速抓到重点。特别是关于调试技巧那一章,作者分享了一些非常隐蔽但极其有效的排错窍门,这些经验往往只有在长时间的“救火”后才能总结出来,现在却被系统地整理在了这里,真是省时省力。这本书的编排逻辑非常清晰,从基础原则到高级应用,层层递进,读完后会有一种知识体系被重新搭建起来的扎实感。
作者几十年的编程经验值得一看,发现好多人极力推崇TDD
作者几十年的编程经验值得一看,发现好多人极力推崇TDD
作者几十年的编程经验值得一看,发现好多人极力推崇TDD
作者几十年的编程经验值得一看,发现好多人极力推崇TDD
作者几十年的编程经验值得一看,发现好多人极力推崇TDD