1.一个错误是一次学习的机会而不是指责人的机会
2.面对一次临时改动就能修复的东西,好的表现是多想想,搞清楚它后面的机制,而不仅仅是修复它.不要坠入简单的修复代码中,要花时间保持代码的整洁
3.对事不对人.
4.设定期限,确保一件事情能正常的运转而不是无休止的争论
5.会议上设定一个仲裁人,避免会议被自由发挥而离题
6.支持已经做出的决定
7.脱离实际的反方观点会使争论变味.若对一个想法有成见,你很容易提出一堆不太可能发生或者不太实际的情况去批驳它
8.不顾一切,向正确的方向前进
9.如果设计或者代码中出现了奇怪的问题,花时间去理解为什么代码会是这样的.如果你找到了解决方法,但代码依然令人费解,唯一的方法就是重构代码,如果你没有理解这个代码,不要轻易去否定甚至重写,那是鲁莽,不是勇气.
10.对缺乏背景知识的听众,需要用他能听懂的话来表述问题.
学习
11.保持自己技术的新鲜,用迭代和增量式的学习会是一个好办法,每天都计划出一点时间来学习,重在坚持.
12.经常读一些最新技术的blog,了解别人在关注的东西,不要闭门造车.
13.经常阅读.人不可能成为每个领域的专家,但是可以成为某个领域的专家,选择学习一门新技术的时候,不要靠冲动而是需要一些来自资深者的建议.了解新技术的优势.
14.在轻松的环境里分享自己的所得,聆听别人的意见
15.勇于抛弃旧的知识和习惯
16.转换知识的时候,尽量切换到新的环境,即使慢也要坚持(这个我自己有个例子,我一开始学习的是拼音打字法,后来学习五笔打字法的时候,字根什么都能背了,但是每次打字前都要思考一下,觉得好慢,于是就想,抽时间专门练习吧,还是完成手头的输入先,于是用拼音完成了输入.最终的结果是,我一直没有等到那个专门练习的机会)
17.打破砂锅问到底是一个很好的习惯.
18.上帝发明了时间,就是为了防止所有的事情同时发生,不要随意的安排计划,让开发保持一个固定的节奏,这样整个团队的人都有了共同的期待,让事情更可控.
19.每天作为一个单位,不残留代码,以固定的节奏运行迭代.
20.开发者真正的敌人事变化,只有能识别和适应变化的能力才是制胜关键.
21.开发者能做的一个最重要的决定就是:判断哪些东西是自己决定不了,而是应该由需求方决定的,不要给业务上的关键问题做决定
(记录客户做出的决定,并注明原因,不要随意假设低级的问题不会影响客户的业务)
22概要设计相当于战争中的战略设计,不要困在过多的细节里面,这是详细设计的职责(相当于战术设计) Strategic versus tactical design
23好的设计应该是正确的,而不是精确的.即它描述的一切必须是正确的,不应该涉及不确定或者可能发生变化的细节.
24.选择新技术要谨慎,多问自己几个为什么,选适合的而不是为了其他的理由(学习的理由/模仿的冲动),不要重复开发(Don't build what you can download)
25.已经提交的代码应该随时可以行动(Checked-in code in is always ready for
action),千万不能让代码即不能发布,又不能撤销.
26.早期集成是一个抵御风险的好习惯.不要做大爆炸式的集成
27.自动化部署很重要,便于快速修正问题,让开发不用一直纠结在环境中.
28.经常给客户演示程序,不管演化和纠正偏离方向的地方
29.琐碎的问题记录不应当随意,应当约定好一个记录的地方,方便所有人跟踪.
30.找到产品中不能缺少的核心功能,尽快让它能发布,尽量使用小步伐来完成大系统,不要花太多时间在华而不实的功能
31.短迭代会让人感觉非常专注且有效率.如果每个迭代的时间都不够用,要么是任务太大,要么是迭代周期太短,把握好节奏
32.让团队和客户一起,真正地在当前项目中工作,做具体实际的评估.由客户控制他们想要的功能和预算.
33.确保测试是可重复的,使用当前时间,当前机器ip之类的东西有时候会让单元测试产生依赖
测试边界条件
不要放过任何一个失败的测试.
34.Write tests before writing code.
35.不要假设代码是在任何环境都能很好运行的,不同的环境,就有不同的问题:使用持续集成工具,在每一种支持的平台和环境中运行单元测试,积极寻找问题
36.为核心的业务逻辑创建测试.让你的客户单独验证这些测试,要让它们可以像一般的测试一样自动运行.
37.用实际消耗的时间而不是估算的时间来看进度,设置合理的待办事项,完成的从列表里去掉,新来的就重新排列优先级,加入待办事项,不断和评估的时间做对照修正,这样后面就能评估得比较准确了.不要用不准确的评估来欺骗自己和团队.
38.一周有40个工作小时,但是这些不都是编码时间,需要把会议/电子邮件/其它从中去掉.
39.对于用户"愚蠢"的抱怨,不能生气和轻视,要找出背后的真相,学会倾听.
40.PIE原则,代码必须明确说出你的意图,而且必须富有表达力,这样可以让代码更易于被别人理解和阅读,代码不让人迷惑,也就减少了发生潜在错误的可能.
PID=Program Intently and Expressively 意图清楚并且表达明确的编程.
41.代码被阅读的次数要远大于被写的次数,所以容易理解是很重要的
转自冲哥的总结
分享到:
相关推荐
本书名为《高效程序员的45个习惯 敏捷开发修炼之道》,由Venkat Subramaniam和Andy Hunt两位作者共同撰写。书中所提到的45个习惯,不仅涉及软件开发过程、编程和调试工作,还包括了开发者的个人态度、项目和团队管理...
高效程序员45个习惯,为你的个人拓展提供发展方向
高效程序员的45个习惯 英文完整版 V.Subramaniam, A.Hunt - Practices of an Agile Developer - Working in the Real World. 2006.pdf
### 高效程序员的10个习惯 #### 一、对事不对人 在软件开发过程中,团队成员之间经常会因为设计方案、技术选择等方面的意见不合而产生冲突。这种情况下,很容易将注意力从问题本身转移到个人身上,导致原本的技术...
这45个习惯覆盖了态度、学习、开发流程、用户、编程以及团队协作等多个方面,旨在帮助程序员成长为更高效、更优秀的专业人士。 1. **态度篇**: - **做实事**:解决问题,勇于承担责任,避免抱怨和指责。 - **...
“项目启动了一段时间之后,你应该进入一种舒适的状态,团队和客户建立了一种健康的富有创造性的关系。 突发事件应极少发生。客户应该能感觉到,他们可以在... “高效程序员的45个习惯:敏捷开发修炼之道”。 iBooks.
高效程序员应该养成的七个习惯
标题和描述中提到的“高效程序员的10个习惯”,实际上是在强调软件开发领域中,尤其是敏捷开发过程中,程序员应当遵循的一系列最佳实践和心态。这些习惯不仅有助于提升个人的工作效率,还能增强团队协作,最终确保...
Phil Chu 提出的高效程序员的七个习惯是每位IT从业者应当关注和实践的。以下是对这些习惯的详细解析: 1. **理解你的需求**:正确理解和把握项目需求是避免浪费时间和资源的关键。快速建模和创建原型有助于快速验证...
以下是对标题和描述中提到的十个程序员习惯的详细解释: 1. **学无止境**:持续学习是优秀程序员的基石。随着技术的快速发展,必须不断关注新出现的语言、框架和编程实践,通过阅读专业文章、参加在线讨论和社区...
标题中的“程序员的45个良好习惯”是一个旨在提升编程技能和团队协作效率的指南,描述强调了通过培养良好的习惯来提高自身编程水平,成为优秀的程序员。这些习惯涵盖了态度、学习、开发流程、用户、编程、调试和团队...
要成为一个有效率的程序员要知道些什么?正确的支配自己的时间。。。
### 一个程序员的开发习惯 #### 一、项目目录结构的重要性及建议 1. **创建清晰的项目目录:** - 开发过程中,一个清晰合理的项目目录结构对于提高开发效率和后期维护至关重要。 - 建议为每个项目设置一个主目录...
高效程序员是IT行业中备受推崇的群体,他们不仅具备深厚的技术能力,还拥有一系列良好的个人品质和工作习惯。Justin James在文章中提出了高效程序员所应具备的七个共同特征,这些特征涵盖了学习态度、工作方法、解决...
1. **快捷代码输入**:程序员输入法能够通过快捷键、组合键或者自定义短语来快速输入常见的编程语句、函数名或变量名,减少手动输入的时间,提高编程速度。 2. **智能提示**:当用户输入部分代码时,输入法会根据上...