
《高效程序员的45个习惯》.doc
90页高效程序员的45个习惯内容简介本书总结并生动地阐述了成为高效的开发人员所需具备的45个习惯、思想观念和方法,涵盖了软件开发进程、编程和调试工作、开发者态度、项目和团队管理以及持续学习等几个方面本书适合所有程序员阅读本书简明实用、见解深刻,总结了高效程序员在开发过程中的45个个人习惯、思想观念和方法,有助于开发人员在开发进程、编码工作、开发者态度、项目和团队管理,以及持续学习等5个方面积极修炼通过学习这些内容,养成这些好的习惯,你可以极大地提升自己的编程实力,更快速、更可靠地交付更高质量的软件,从而成为真正的高效程序员目录第1章 敏捷——高效软件开发之道1 第2章 态度决定一切10 1 做事12 2 欲速则不达15 3 对事不对人18 4 排除万难,奋勇前进23 第3章 学无止境26 5 跟踪变化28 6 对团队投资31 7 懂得丢弃34 8 打破砂锅问到底37 9 把握开发节奏40 第4章 交付用户想要的软件43 10 让客户做决定45 11 让设计指导而不是操纵开发48 12 合理地使用技术52 13 保持可以发布55 14 提早集成,频繁集成58 15 提早实现自动化部署61 16 使用演示获得频繁反馈6417 使用短迭代,增量发布69 18 固定的价格就意味着背叛承诺73 第5章 敏捷反馈76 19 守护天使78 20 先用它再实现它82 21 不同环境,就有不同问题87 22 自动验收测试90 23 度量真实的进度93 24 倾听用户的声音96 第6章 敏捷编码98 25 代码要清晰地表达意图100 26 用代码沟通105 27 动态评估取舍110 28 增量式编程113 29 保持简单115 30 编写内聚的代码117 31 告知,不要询问121 32 根据契约进行替换124 第7章 敏捷调试128 33 记录问题解决日志129 34 警告就是错误132 35 对问题各个击破136 36 报告所有的异常139 37 提供有用的错误信息141 第8章 敏捷协作146 38 定期安排会面时间148 39 架构师必须写代码152 40 实行代码集体所有制155 41 成为指导者157 42 允许大家自己想办法160 43 准备好后再共享代码162 44 做代码复查165 45 及时通报进展与问题168 第9章 尾声:走向敏捷170 9.1 只要一个新的习惯170 9.2 拯救濒临失败的项目171 9.3 引入敏捷:管理者指南172 9.4 引入敏捷:程序员指南174 9.5 结束了吗175 附录A 资源176 索引182译者序"武功者,包括内功、外功、武术技击术之总和。
有形的动作,如支撑格拒,姿式回环,变化万千,外部可见,授受较易,晨操夕练,不难熟练而无形的内功指内部之灵惠素质,即识、胆、气、劲、神是也,此乃与学练者整个内在世界的学识水平密切相关,是先天之慧根悟性与后天智能的总成,必需寻得秘籍方可炼成"--摘自《武林秘籍大全》公元21世纪,软件业江湖动荡,人才辈出,各大门派林立,白道黑帮,都欲靠各自门派的武功称霸武林在那些外家功门派(传统的瀑布开发方法、CMM、ISO和RUP等)和非正统教(中国式太极敏捷UDD等)当道之际,一股新势力正在崛起--以敏捷方法为总称的一批内家功门派下面的歌诀是对内家武功招数的概述:迭代开发,价值优先分解任务,真实进度站立会议,交流畅通用户参与,调整方向结对编程,代码质量测试驱动,安全可靠持续集成,尽早反馈自动部署,一键安装定期回顾,持续改进不断学习,提高能力上面的每种招式,都可寻得一本手册,介绍其动作要领和攻防章法几乎每个内家功门派都有自己的拳法和套路但,正所谓"练拳不练功,到老一场空"学习招数和套路不难,难的是如何练就一身真功夫内家功,以练内为主,内外结合,以动作引领内气,以内气催领动作,通过后天的修炼来弥补先天的不足。
本书是一本内功手册它注重于培养软件开发者的态度、原则、操守、价值观,即识、胆、气、劲、神是也敏捷的实践者VenkatSubramaniam和AndyHunt携手著下此书望有志之士有缘得到此书,依法修习,得其精要;由心知到身知,入筋、入骨、入髓,修炼得道而后,匡扶正义,交付高质量的软件,为人类造福安 川2008年4月于北京推荐序一仅仅还在几年前,XP还被认为是方法异教,FDD属于黑客程序方法如今,敏捷俨然已经成为主流学说,敏捷方法成为人们学习和讨论的热点敏捷方法的应用也更加广泛,以至于不少外包项目都要求采用某种敏捷方法它不仅仅是小团队和小项目在使用,甚至连微软都开始使用Scrum敏捷已经成为一种炙手可热的新时尚因为火热,各种不同的说法就多起来;因为时尚,原本有些不认同敏捷的人也开始追捧起来人们反复地讨论敏捷方法,涉及从哲学思想到实现细节的各个层面人们不断地推出各种不同版本的敏捷方法,甚至有些方法显得如此矛盾、如此不同同时,一些误解也一直在坊间流行一般误认为敏捷就是快,越快就是越敏捷--字典上的名词解释是其依据岂不知它本来要以"lightweightprocesses"(轻量级过程)命名,只不过有些参会者不喜欢被看做是在拳台上跳来跳去的轻量级拳手,所以才用了"敏捷"这个词。
还有其他一些误解是,敏捷就是只写代码不写文档;敏捷需要重构而无需设计;敏捷迭代就是尽量做到最小,以至于一个小时就好几次;敏捷需要天才的程序员才能应用,其他人都会水土不服;如此这般可以看到,市面上以敏捷为题目的图书俯拾皆是,似乎软件开发的书不加上敏捷这个词就是落伍一样敏捷体系下存在多种方法,介绍每种方法的图书就有一大堆再加上每种方法采用不同的技术,每本书采用不同的组织形式,存在这么多书也不奇怪,就更不用提那些仅仅为了跟风而敏捷的作品了面对如此百花齐放、百家争鸣的现象,你该从什么地方开始呢?有没有一本图书可以作为入门的第一读物呢?这本书就可以胜任这样的角色!这是一本很容易理解并掌握,不需要太多基础就可以阅读的书不管你是开发人员,还是管理人员、财务等后勤人员、学生、编程爱好者,只要你对敏捷有兴趣,就可以读懂这本书你不会被众多的概念和曲折的逻辑所迷惑,不会被高难度技巧所困扰这本书为你打开了了解和学习敏捷方法的一扇大门,并指出继续前进的道路你会很悠闲自在地读完这本小书,然后说:"原来敏捷就是这么一回事啊!"自由软件顾问 刘新生推荐序二我很喜欢本书的中文书名--高效程序员的45个习惯,比直译成"敏捷开发者实践"含蓄多了。
敏捷不是目的,只是手段只要某个手段适合某个场景,有助于提升质量,提高交付能力,提高开发者水平……总而言之,有好处的事情,我们尽管做就是了,何必冠以敏捷之名?记得第一次读本书还是两年前这时又细细读来,越来越觉得"习惯"一词比"实践"更有味道所谓"流水不腐,户枢不蠹",厨房脏了就擦一下,总比满墙都是油烟以后再去清理的代价小得多有价值的东西--比如回顾、测试、重构,一切有利于团队建设、提高生产力的实践都应该频繁且持续做,然后日积月累就养成了习惯有些习惯很容易养成,有些则很难我们大都常常许愿,做计划,比如要做一个至少100人同时的成熟应用,参加义工活动,每周至少一篇博客……然后在计划落空的时候,用各种理由来安慰自己李笑来老师在《把时间当作朋友》一书中提到:"所有学习上的成功,都只靠两件事:策略和坚持,而坚持本身就应该是最重要的策略之一"那么,为什么我们会在某些事情上坚持不下去?或者换个角度来看,哪些事情是容易坚持下去的?以前我是标准的宅男,CS、网络小说、魔兽世界几乎是休闲的全部,等到后来得了腰肌劳损,又得了颈椎病,这才痛定思痛,开始游泳锻炼身体每天游两千米,一个月以后,游泳就成了习惯再举个例子,我老婆生完孩子以后体型变化很大,立志想要减肥。
为了坚持下去,她把怀孕前的照片放在电脑桌面上,时时督促自己后来,减肥也就变成了一种生活方式从我的个人体验来看,难以坚持下去的事情,基本都是因为没有迫切的欲望和激情单说锻炼身体,无论是为了减肥、祛病,还是塑形美体等,做这些事情至少都有明确的目的,这样才能驱使着人们一直坚持下去没有动机,没有欲望,哪里来的毅力呢?那么,当我们决定做一件事情的时候,首先就要多问问自己:为什么要做这件事情?它所带来的好处是什么?如果不做它又会有哪些坏处?有了清晰的目的和思路后再去做事,遇到变化时就知道孰轻孰重,该怎么调整计划,同时也不至于被重复和乏味消磨了一时的意气翻开本书之后,你同样也该对自己提问:"为什么要有自动验收测试,有了足够的单元测试是不是就能保证质量了?""写自动验收测试有哪些成本,会带来哪些收益?"只有明白了"为什么做",才能够解决"如何做"的问题本书的两名译者与我都是故交钱安川是我的同事,是ThoughtWorks资深咨询师,有丰富的敏捷实施经验郑柯与我同是InfoQ中文站敏捷社区的编辑,一起翻译过数十篇稿件他翻译的《项目管理修炼之道》也即将由图灵公司出版这次二人联手的作品,定会给读者以赏心悦目的阅读体验。
我有幸已经从样章中感受到了这一点希望你能够带着问题,踏上愉快的阅读之旅希望你能够养成好习惯李 剑ThoughtWorks咨询师2009.10.10【45个习惯简述】态度篇1.做实事不要抱怨,发牢骚,指责他人,找出问题所在,想办法解决对问题和错误,要勇于承担2.欲速则不达用小聪明、权宜之计解决问题,求快而不顾代码质量,会给项目留下要命的死角3.对事不对人就事论事,明智、真诚、虚心地讨论问题,提出创新方案4.排除万难,奋勇前进勇气往往是克服困难的唯一方法学习篇5.跟踪变化新技术层出不穷并不可怕坚持学习新技术,读书,读技术杂志,参加技术活动,与人交流要多理解新词背后的所以然,把握技术大趋势,将新技术用于产品开发要谨慎6.对团队投资打造学习型团队,不断提高兄弟们的平均水平7.懂得丢弃老的套路和技术,该丢,就得丢不要固步自封8.打破砂锅问到底不断追问,真正搞懂问题的本质为什么?应该成为你的口头禅9.把握开发节奏控制好时间,养成好习惯,不要加班开发流程篇10.让客户做决定让用户在现场,倾听他们的声音,对业务最重要的决策应该让他们说了算11.让设计指导而不是操纵开发设计是前进的地图,它指引的是方向,而不是目的本身。
设计的详略程度应该适当12.合理地使用技术根据需要而不是其他因素选择技术对各种技术方案进行严格地追问,真诚面对各种问题13.让应用随时都可以发布通过善用持续集成和版本管理,你应该随时都能够编译、运行甚至部署应用14.提早集成,频繁集成集成有风险,要尽早尽量多地集成15.提早实现自动化部署16.使用演示获得频繁反馈17.使用短迭代,增量发布18.固定价格就意味着背叛承诺估算应该基于实际的工作不断变化用户篇19.守护天使自动化单元测试是你的守护天使20.先用它再实现它测试驱动开发其实是一种设计工具21.不同环境,就有不同问题要重视多平台问题22.自动验收测试23.度量真实的进度在工作量估算上,不要自欺欺人24.倾听用户的声音每一声抱怨都隐藏着宝贵的真理编程篇25.代码要清晰地表达意图(免费样章链接)代码是给人读的,不要耍小聪明26.用代码沟通注释的艺术27.动态地进行取舍(免。












