具体描述
《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下。
Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞。
《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折。
作者简介
Jeff Atwood,国际知名的技术博客作家,知名程序员,有三十多年的职业编程经验。2004年,他创办了Coding Horror博客(http://www.codinghorror.com)。如今,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里激情碰撞。2008年,他和Joel Spolsky联合创办了Stack Overflow (stackoverflow.com)网站。Stack Overflow 现在已经成为全球IT界最受欢迎的技术问答网站。
陆其明,2000年毕业于南京大学。自2004年起,连任4届微软MVP(最有价值专家)。现居上海,任北京爱奇艺科技有限公司PPS上海公司研发总监。辛勤耕耘十余载,在技术研发、团队建设、流程控制、项目管理等方面积累了丰富的经验。已经出版的著作有《DirectShow开发指南》、《DirectShow实务精选》、《Windows Media编程导向》、《脚本驱动的应用软件开发方法与实践》,译作有《代码之道》、《高效能程序员的修炼》。新浪微博:豆巴陆其明。
杨溢,2006年毕业于东华大学,现居上海,任上海视龙软件有限公司工程经理,从事移动设备的底层多媒体实现的开发研究以及管理工作。
目录信息
待办事项不靠谱 1
今天上班可以放羊 4
你没有说服我 9
真正失败的项目 12
激情造就天才 16
勿以专家自居 18
行百里者半九十 23
管理中要有信任 26
博伊德迭代法则 29
十年磨一剑 32
第2章 编程之道 36
切忌一根筋 36
破窗理论 38
要么热爱,要么离开 41
简单之美 44
乐于删代码 45
你是程序员这块料吗 46
你循规蹈矩吗 50
科里定律:坚守一个目标 52
最牛的编码套路 55
孤独的人是可耻的 60
你有编程伙伴吗 62
软件学徒制 66
第3章 Web设计原则 68
网站的评判标准 68
追求简单 72
应用会取代网站吗 74
切忌墨守成规 79
诡异的单键设计 81
可用性并非阳春白雪 87
费茨定律的另一面 90
可用性与易学性 93
谷歌的头号UI问题 95
只是多一个 98
敢于说不 100
用户界面很难做 101
第4章 关于测试的一些思考 103
单元测试是必要的 103
有时候是硬件问题 105
异常驱动的开发 108
第5章 了解你的用户 113
逻辑人的争议 113
象牙塔式的开发 115
让程序员设计界面的后果 117
保护“中间分子” 119
每个用户都会说谎 122
别把产品发布当目标 124
别问,须观察 126
功能越多越好吗 130
生物会为所欲为 133
为了一点绶带 138
为反社会人群构建社交软件 141
第6章 互联网的那些事儿 145
保存互联网,留住所有记忆 145
网络中立的重要性 149
YouTube上的版权保护 153
第7章 游戏与编程 160
我的编程生涯始于BASIC 160
想玩游戏就自己写 165
游戏玩家到程序员的蜕变 169
第8章 阅读之美 173
不读书,谁之过 173
自助者,天助之 177
计算机犯罪的历史与现状 181
如何与人交流 187
勤练基本功 194
附录 197
纪律造就强大的开发者 197
软件开发之50年历程 201
如何写技术文档 206
· · · · · · (收起)
读后感
用户评价
拿到这本书的时候,我正好处于职业生涯的一个瓶颈期。感觉自己虽然掌握了一些技术,但在面对更复杂、更具挑战性的项目时,总是显得力不从心。这本书就像及时雨一样,它并没有直接给出“速成秘籍”,而是从更宏观的层面,帮助我重新梳理了作为一名程序员的成长路径。我最欣赏的是书中对“终身学习”这一概念的深度解读。在飞速发展的科技领域,固步自封绝对是最大的敌人。作者通过分享自己的学习经历和感悟,让我认识到,学习不仅仅是学习新的编程语言或框架,更重要的是学习如何学习,如何有效地筛选信息,如何保持对新技术的敏感度和好奇心。特别是关于“技术债”的讨论,让我意识到了及时“还债”的重要性,以及它对个人和团队长期发展的深远影响。书中关于“代码评审”的章节,也给我留下了深刻的印象。很多时候,我们习惯于埋头写代码,却忽略了来自同行的宝贵反馈。作者强调了代码评审不仅是发现错误,更是一个学习和分享的平台,能够帮助我们开阔视野,提升代码质量。它让我明白,真正的团队合作,是建立在开放、信任和共同进步的基础之上的。此外,书中还涉及了一些关于“软技能”的内容,比如沟通、协作、时间管理等,这些往往是被许多程序员忽视的,但恰恰是决定一个人能否走得更远的关键因素。作者通过一些贴近生活的案例,生动地展现了这些软技能在日常工作中的重要性,让我意识到,一名优秀的程序员,绝不仅仅是一个只会写代码的“码农”。
这本书的封面设计就足以吸引眼球,一种沉静而又不失力量的蓝色基调,配上抽象的电路板纹理,仿佛在预示着一段探索代码世界深层奥秘的旅程。当我翻开第一页,扑面而来的不是枯燥的技术术语堆砌,而是一种娓娓道来的叙事感,作者以一种非常人性化的视角,将编程这项看似冰冷的技术,赋予了温度和灵魂。它没有一开始就抛出那些高难度的算法和框架,而是从更基础、更根本的层面,探讨了成为一名优秀程序员所必备的思维方式和职业素养。我尤其喜欢其中关于“解决问题的艺术”的章节,作者没有简单地罗列解决bug的方法,而是深入剖析了问题产生的根源,以及如何培养一种批判性思维,去拆解复杂问题,从而找到最优雅、最有效的解决方案。这种引导式的写作方式,让我觉得自己不是在被动地接受知识,而是在参与一场思维的盛宴,跟随作者一起探索,一同成长。其中关于“代码的优雅”的讨论,更是让我茅塞顿开,原来写出功能正确、高效运行的代码固然重要,但能够写出清晰、易读、易维护的代码,才是真正体现一个程序员功力的所在。作者用生动的比喻和实际的代码片段,展示了如何通过良好的命名规范、合理的代码结构、以及恰当的注释,让代码本身成为一种沟通的桥梁,而不是理解的障碍。这种对细节的极致追求,让我重新审视了自己日常的编码习惯,也让我更加坚信,真正的“修炼”,就体现在这些看似微不足道的细节之中。
拿到这本书的时候,我正好在思考如何提升自己的“解决问题的能力”。这本书的出现,简直像是在为我指点迷津。书中对“问题的本质”进行了深入的剖析,作者认为,很多时候,我们之所以难以解决问题,并不是因为技术能力不足,而是因为我们没有真正理解问题的根源。他用许多生动的案例,展示了如何通过提问、观察、分析等方式,去挖掘问题的本质,从而找到最有效的解决方案。这让我意识到,解决问题的过程,本身就是一种学习和成长的过程。我特别喜欢书中关于“代码的文档”的讨论。作者强调了编写清晰、准确的文档的重要性,并提供了一系列编写优秀文档的技巧。这让我明白了,代码不仅仅是给计算机看的,更是给其他程序员,甚至是未来的自己看的。一个好的文档,能够极大地降低代码的理解成本,提高项目的可维护性。它让我明白了,文档,是代码的“灵魂伴侣”。书中还探讨了“持续集成/持续部署”(CI/CD)的重要性,让我更加清晰地认识到,自动化部署和持续交付,是 modern software development 的重要趋势。它让我明白了,高效的开发流程,是保障产品质量和用户体验的关键。这本书的内容,让我对“解决问题”这一概念有了全新的认识,也为我的职业发展提供了宝贵的指导。
初读这本书,我最先被其朴实无华的语言所吸引。没有那些晦涩难懂的术语,也没有故弄玄虚的理论,作者就如同一个经验丰富的老友,在向你分享他一路走来的心路历程和宝贵经验。书中对于“如何保持激情”的探讨,着实触动了我。在日复一日的编码工作中,很容易陷入一种麻木和倦怠。作者并没有简单地告诉你“要保持激情”,而是从多个角度,比如寻找代码中的乐趣、解决有意义的问题、以及参与开源社区等,给出了切实可行的建议。这让我意识到,激情并非凭空而来,而是需要我们主动去培养和维护的。我特别喜欢关于“写给未来的自己”的代码的章节。作者鼓励我们不仅要考虑当前的逻辑,还要思考未来可能遇到的变化,以及如何让自己的代码更容易被未来的自己理解和修改。这是一种超越时间维度的思考,让我对代码的生命周期有了更深的理解。它不仅仅是完成任务,更是对未来负责。书中关于“反模式”的分析也非常精彩,作者用大量生动的例子,揭示了那些看似有效但实则潜藏巨大风险的代码编写方式。这就像是一种“防弹衣”,能够帮助我们避免很多不必要的弯路和麻烦。它让我明白,避免犯错,有时候比学会某个新技术更加重要。这本书的阅读体验,就像是在参加一场高质量的线下技术分享会,但更加深入和个性化,让我能够根据自己的节奏和理解去吸收。
这本书的结构设计非常合理,从基础的思维模式到进阶的职业发展,层层递进,逻辑清晰。我尤其喜欢书中关于“学习曲线”的章节。作者用一种非常生动形象的方式,解释了不同技术领域学习的难易程度,以及如何有效地度过初期的“高原期”。这让我对自己的学习计划有了更清晰的认识,也让我对那些看似遥不可及的技术,不再感到畏惧。书中关于“代码的可测试性”的论述,也让我受益匪浅。过去我常常觉得写测试是一件费时费力的事情,但这<seg_40>书让我明白了,一个可测试的代码,往往也是一个结构良好、耦合度低的代码,它不仅能提高代码质量,还能极大地提升开发效率。作者用实际的例子,展示了如何通过重构来提高代码的可测试性,这对我来说是一次非常重要的观念转变。让我明白了,测试不仅仅是事后检查,更是指导我们如何写出更好代码的一种手段。此外,书中还分享了一些关于“技术选型”的策略,以及如何在众多的技术选择中,做出最适合当前项目和团队的决策。这部分内容对我这个正在经历技术选型困扰的人来说,简直是雪中送炭。它不仅仅是罗列技术的优缺点,更重要的是提供了一个决策框架,让我能够更系统地思考问题。
这本书的出版,对于我这样一个在编程领域摸索多年的开发者来说,无疑是一份珍贵的礼物。它并没有简单地提供现成的答案,而是引导我思考,如何成为一个能够独立思考、解决问题的开发者。书中关于“选择合适的技术栈”的分析,对我启发很大。作者并没有直接告诉你“应该使用什么技术”,而是提供了一个思考框架,让你能够根据项目的具体需求、团队的实际情况,以及技术的成熟度和生态系统等因素,做出最明智的选择。这让我明白了,技术选择从来不是“最优解”,而是“最适合解”。我特别喜欢书中关于“代码的演进”的章节。作者认为,代码并非一成不变,它会随着业务的发展和技术的发展而不断演进。他分享了如何通过重构、迁移等方式,让代码保持活力,适应变化。这让我意识到,编写“一次性”的代码是不可取的,我们需要具备“让代码进化”的能力。它让我明白了,代码的生命力,在于其不断适应和优化的能力。书中还深入探讨了“单元测试”的重要性,并提供了一些编写高效单元测试的实践方法。这让我更加坚信,自动化测试是保障代码质量的基石。它让我明白了,高质量的代码,是建立在充分测试的基础之上的。这本书的内容,让我对“代码”这一概念有了更深的理解,也让我对自己的职业发展有了更清晰的规划。
这本书的写作风格非常独特,作者以一种亲切而又充满智慧的语气,引导读者一步步深入探索编程的奥秘。我最喜欢的是书中关于“代码的简洁性”的探讨。作者认为,简洁的代码不仅易于阅读和理解,也更不容易出错。他用许多实际的代码示例,展示了如何通过重构和精炼,让代码变得更加优雅和高效。这让我意识到,追求简洁,并非是牺牲功能,而是对代码本质的一种升华。它让我明白了,简单而不失强大,才是代码的最高境界。书中关于“如何进行有效的沟通”的章节,也给我留下了深刻的印象。在团队协作中,清晰、准确的沟通至关重要。作者分享了许多实用的沟通技巧,包括如何清晰地表达自己的想法、如何倾听他人的意见、以及如何有效地处理意见分歧。这让我认识到,一名优秀的程序员,不仅要有扎实的技术功底,还要具备良好的人际交往能力。它让我明白了,技术是解决问题的一种手段,而沟通则是协调各方力量,共同解决问题的关键。此外,书中还涉及了一些关于“职业道德”的思考,比如如何保护用户隐私、如何遵守开源协议等等。这些内容虽然看似与技术无关,但对于一名有责任感的程序员来说,却是不可或缺的。它让我明白了,技术的力量是强大的,但这种力量的使用,必须建立在道德和法律的约束之上。
这本书让我最直观的感受是,它真正地站在了读者的角度,去思考“成为一名优秀的程序员”到底需要什么。它没有空泛的理论,也没有遥不可及的目标,而是将这些目标分解成一个个具体、可执行的步骤。我印象特别深刻的是书中关于“代码的复用性”的讨论。作者不仅仅是教我们如何写函数,更重要的是强调了如何设计出能够被广泛复用的组件和模块。这是一种“一次投入,多次受益”的思维模式,能够极大地提升开发效率和代码质量。它让我明白了,写出能够解决眼前问题的代码固然重要,但写出能够解决未来更多潜在问题的代码,才是更高层次的追求。书中关于“性能优化”的章节,也给我留下了深刻的印象。作者没有简单地介绍各种性能调优技巧,而是从理解计算机底层原理的角度,去分析性能瓶颈的产生原因。这让我明白了,只有深刻理解了计算机的工作机制,才能真正做到“对症下药”,而不是盲目地尝试各种优化手段。它让我明白了,真正的优化,是建立在深刻理解基础之上的。此外,书中还穿插了一些关于“项目管理”的思考,比如如何进行有效的进度跟踪,如何处理项目中的突发情况等等。这些内容虽然不是纯粹的技术,但对于一个程序员来说,却是必不可少的职业技能。它让我明白了,一名优秀的程序员,不仅要有扎实的技术功底,还要具备良好的项目管理能力。
这本书给我带来的最深刻的体验,是它能够帮助我将编程技能与更广阔的职业视野结合起来。它不仅仅是一本技术书籍,更是一本关于“如何成为一名成功的程序员”的指导手册。书中对“技术与业务的结合”的阐述,让我耳目一新。作者认为,技术最终是为业务服务的,一名优秀的程序员,不仅要有扎实的技术功底,还要理解业务需求,并能够利用技术去解决业务问题。这让我认识到,技术人员不能仅仅“埋头写代码”,而应该主动去理解业务,甚至参与到业务决策中去。我特别喜欢书中关于“知识的分享”的章节。作者鼓励程序员积极参与到开源社区,分享自己的知识和经验。这不仅能够帮助他人,也能够提升自己的声誉和影响力。这让我明白了,学习和分享是相辅相成的,只有不断地分享,才能不断地学习。它让我明白了,技术社区的力量,在于每个参与者的共同贡献。书中还涉及了一些关于“职业规划”的建议,比如如何选择适合自己的发展方向、如何提升自己的竞争力等等。这些内容对于我这样一个正在思考职业转型的人来说,简直是雪中送炭。它让我明白了,职业发展是一个持续的、需要主动规划的过程。这本书的内容,让我对“程序员”这一职业有了更全面的认识,也为我未来的职业发展提供了宝贵的指引。
当我开始阅读这本书时,我原本以为它会是一本侧重于某种特定编程语言或技术的“工具书”。然而,它所展现出的深度和广度,远远超出了我的预期。书中对“抽象思维”的阐述,给我带来了巨大的启发。作者用多个生动的例子,说明了如何将复杂的问题抽象化,如何设计出具有良好扩展性和灵活性的系统。这让我意识到,编程不仅仅是编写代码,更是一种解决问题的艺术,而抽象思维则是这门艺术的核心。我特别喜欢书中关于“代码的可维护性”的分析。作者详细阐述了影响代码可维护性的各种因素,并提供了一系列实用的改进方法。这让我认识到,写出能够长期运行、易于修改和扩展的代码,才是真正对项目负责任的表现。它让我明白,技术迭代很快,但代码的可维护性,却是决定一个项目生命力的关键。书中还探讨了“技术债务”的成因和应对策略,让我更加清晰地认识到,拖延技术债务的处理,最终只会让问题变得更加棘手。它让我明白了,及时“止损”和“还债”,是一种成熟的职业态度。这本书不仅仅是关于技术,更关于程序员的“心法”,让我能够以一种更长远的眼光,来审视自己的职业发展。
或许等进到程序员这行后,再读会有更深切的体验,粗读一,八章。保持积极阅读和思考的态度,动手编写程序的激情,是改变现状的唯一出路。一句'没人帮得了你'好像给自己点了穴,前进的路上必须得学会自助。
大道理偏多,屌丝hold不住
越看到后面越没意思
直接去读读作者博客应该更好,受不了这个排版。
有些杂乱,不过有些文章还挺有启发