`
jianchen
  • 浏览: 340551 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

读《高效程序员的45个习惯》之笔记

阅读更多

《高效程序员的45个习惯》-敏捷开发修炼之道

 

   之前主管推荐过这本书,主管买了几本,20多个同事大家共享着看。端午节放假期间去书店溜达了下,看看价格也不贵,才35块,就买了。冲动的是同时买了《重构-改善既有既有代码的设计》这本书。今天在卓越上看到便宜17块多。觉得是好书就本着收藏的想法,本已所剩不多的钱袋又多了一笔开销。这个月剩下的日子花钱可得悠着点了。

 

   这两天迅速的把《高效程序员的45个习惯》这本书翻完了。这本书读起来还是挺流畅的,翻译的质量不错。将一些敏捷的理念和时间款款道来。写的还是很好的,不是那么教条,读起来轻松愉快。说实话,很多概念在没看这本书之前就有所了解了。总体感受是,提出的方法实践还是靠谱的,如果真能说实施起来,对平时的工作绝对是有益处的。

 

  真正的难点是实施起来不太容易。但在敏捷越发得到认可的今天,公司里已近有些项目团队开始进行实践,虽然不是很成功,但是终归是个开始,会向真正的敏捷靠拢的。

 

书中提出了45个习惯,抑或是手段。从团队的管理,到个人的提升,以及项目的完成,多角度的进行阐述。

 

1,  做事

强调做事的重要性,每当出了问题,不是找出导致出现问题的人是谁去抱怨,打击对方,优先做的是大家共同将该问题解决。

 

2,  欲速则不达

在实际的工作中,一个新手接到一个问题,面对不熟悉的代码,往往会迅速的定位问题,然后加上自己自认为可以解决的方法,而没能很好的理解上下文,就贸然加上相关代码,

可能看起来问题的确得到了解决。之前就讨论过这个问题,一个项目为什么代码越写越烂。往往是不敢动被人的代码,我们需要的是一种勇气,敢于跟老大提出,给我一周的时间,将这段代码重构。如此每个人都能做到,代码会越来越好,而不会smell bad

 

3,  对事不对人

面对比起来无论是经验还是实际技能上多远不如你的人,需要保持一颗谦逊的心。在某个会议上,他提出的问题和想法也许会很愚蠢,但是没有必要嘲笑别人。想想看,自己当年何尝不是这样过来的呢。况且他的想法未必没有道理,看起来很简单的问题往往会促使你做出思考,得到新的结论。打击别人让自己显得很聪明,绝对没有必要。这样只会让你的同事感觉很气馁,以后他发言就不会很积极了。你要做的是鼓励他,跟他积极的探讨,久而久之,他就会成长起来。

 

4,  注重团队的投资。

内部经常性的交流分享,可以比较有效的提升大家的技能,激发大家的学习兴趣。“三人行,必有我师”,别人总有你可以学习的地方。可以让团队成员定期的做分享,技术,人生,主题不限。分享者会积极的准备,强化他这方面的知识,提高他的演讲能力。要知道,经常跟代码打交道的人往往沉默呐言,不善于沟通。还可以增进团队的合作氛围。哎呀,好处太多了。新人前期主要是听别人的分享,慢慢的可以自己分享一些东西出来,已分享促进学习,良性循环。

 

5,  敏捷强调小步前进,增量迭代式开发。

面对用户善变的需求,需要的是经常跟用户沟通,让用户参与进来,让用户做决定,你需要做的是帮他们分析这样做的好处,以及不这样做带来的后果,进行多方面的比较。让用户深刻的体会到,你是跟他们一伙的。呵呵。迭代周期中,定期的发布版本,给用户进行demo演示,让客户看到你的成果,频繁获得反馈,以进一步确认需求,一步一步的接近用户想要的结果。

 

6,  敏捷强调不能过分设计。

前期的设计只要在战略上正确即可。真正详细的设计是面对开发过程中需要解决的问题进行的战术调整。书中提出的“让设计指导开发而不是操作开发”,与后面的“架构师必须写代码”,因为前期的设计往往无法预料到实际出现的问题。如果一开始就定死了代码的设计,让一群代码编写人员岂不很无聊。这样可以在每次迭代中大家集体参与设计,真正得到满足当前需要的最好的设计方案。我在之前参与的项目中,每个人负责相应的模块,自己设计自己的,虽然满足要求,但是未必是最好的,如果几个人共同参与,一方面可以提升设计的质量,还可以提高成员的设计能力。同是大家都能了解对方模块的设计理念(因为我也参与了),有书中后面提到“代码共同所有制”有异曲同工之妙。这样任何一个人都可以完全接手别人写的代码,这样后期的维护成本不会因为某个成员不在而几何级的增加。结合代码复审,一个人可以把一段代码发给大家,让大家帮忙看看写的是否有问题。当然根据实际情况,可以每周花固定的时间大家做在一起探讨。面不要铺的太宽,选取比较核心或有相关人员提出的代码就可以了。

 

7,  对于开发人员,也提出了比较好的实践指导。

别对警告视而不见,觉得不影响程序的运行。将警告当做错误,力求没有警告。项目中经常看到未使用泛型的警告,未使用的局部变量等警告,虽然你的程序可以跑,但是代码的质量不能算高。真正的编程人员不容许代码存在坏的味道。自己写的代码就是自己的作品,一个人的脸面,力求让别人觉得你的代码亲切,觉得似曾相识,一下看懂你这个“人”,了解你这个“人”。代码要清晰的表达意图,注释不需要太多,敏捷追求的就是代码即文档。程序员间用代码可以轻松的沟通,那才厉害。具体的有很多良好实践:增量式编程,保持简单,编写内聚的代码,告知对方,不需要询问,根据契约进行替换。

 

8,  越来越多的人认可单元测试的重要性。

但是做好单元测试却不是那么容易的事情。我自己在写代码的时候,往往就觉得写单元测试,造数据很麻烦。还好现在有很多开源的框架可以利用,很大程度上减轻的工作量。单元测试不应该是一次性的,良好的单元测试可以作为代码文档。测试驱动开发,这个有点高级,通过一个个失败的测试,不断的编写代码,完善自己的设计。TDD暂时还没见到比较好的时间,但是基本的单元测试还是写的比较多了。对象之间的依赖可以用mock对象解决,数据库层,web层的代码都可已进行相应的测试了,编写测试是项目的成本,前期自己的代码会写的比较慢,但是越往后,就越会发现些单元测试的好处。需要修改代码的时候,跑一下单元测试,如果出现了红条,迅速的定位问题,可以明显的提高效率。对于一个新接触这段代码的人来说,单元测试同样会提供很大的帮助,他可以轻松的了解代码的逻辑,需要注意的地方。

 

9,  提倡比较高频率的提交代码,但是代码必须是准备好的。

不能因为你提交的代码导致程序无法编译,或者报错导致别人无法继续工作。所以就和上面的单元测试有关系了,代码必须自己本地自测通过后再提交。提交需要单元测试却没做的代码是不负责任的行为。这一点我们要坚决抵制。

 

10,不得不提的还有持续集成。

自动构建,跑单元测试,失败后立即通知,迅速发现问题。像hudson持续集成平台,提供单元测试的覆盖率报告等其他有用信息。要提早集成,不要大爆炸式的最后集成。当早期集成的时候,你会看到系统之间的交互和影响,就可估算他们之间通信和共享的信息数据。代码提交后自动的构建部署,不得不说这样很酷。一切都帮你搞定,你需要做的只是收到报告即可。成功的报告当然很爽,失败也没关系,因为目前一切都可控,影响范围不大。

 

 

 

 

作者用几句歌诀简明的进行了概述:

 

  迭代开发,价值优先

  分解任务,真实进度

  站立会议,交流通畅

  用户参与,调整方向

  结对编程,代码质量

  测试驱动,安全可靠

  持续集成,尽早反馈

  自动部署,一键安装

  定期回顾,持续改进

  不断学习,提高能力

 

看完这本书对敏捷的理解貌似不是很多,就是感觉对你书中的观点挺赞同的,好像理所应当这么做似的。现在公司里QA已近慢慢的在推这些事情了。包括现在的代码质量管理,使用类似findbugcheckstyle之类的工具进行简单的改进。要真正的把敏捷搞好,将项目的质量做好,首先要做的是必须大家认可才行,在大家支持的情况下去做这件事就会比较顺利。之前听过scrum的分享,大概的了解的一些新鲜词语。什么sprintbacklog等。等看完《轻松scrum之旅----敏捷开发故事》,我想会对敏捷有更多的认识和理解吧。

 

                                                                                                                                                    

分享到:
评论

相关推荐

    高效程序员的45个习惯-读书笔记

    高效程序员的45个习惯读书笔记 本文是对《高效程序员的45个习惯》的读书笔记,总结了书中的精华部分,并添加了一些个人想法。文章共分五个部分,分别讨论了敏捷开发、代码重构、角色定义、问题解决和团队协作等方面...

    程序员记笔记的小工具

    【程序员记笔记的小工具】是一款专为程序员设计的高效笔记应用,它允许用户利用Markdown语法进行文本编辑,方便快捷地创建、管理和分享技术文档。这款工具不仅提供了对Markdown的全面支持,还具备将笔记导出为PDF和...

    程序员文化基础学习笔记

    【程序员文化基础学习笔记】 编程基础知识对于初级程序员来说至关重要,良好的编程习惯和规范不仅能提高代码的可读性和维护性,还能提升团队合作的效率。以下是一些编程基础和注释的编写原则: 1. **注释的原则** ...

    程序员技巧收集助手-程序员的好帮手

    【程序员技巧收集助手】是一款专为程序员设计的实用工具,旨在帮助他们更有效地积累和管理在编程工作中遇到的各种技巧和经验...通过合理利用这款工具,程序员可以更好地管理自己的技能库,成为更高效、更专业的开发者。

    一个程序员的工具箱

    ### 一个程序员的工具箱:全面解析 #### 引言 在信息技术(IT)领域,特别是对于程序员来说,拥有一套高效、实用的工具是至关重要的。这些工具不仅能提高工作效率,还能帮助解决各种技术难题。本文将详细介绍《一个...

    程序员专用个人知识管理

    程序员专用个人知识管理是针对开发人员设计的一种高效的知识整理与检索工具。对于程序员而言,每天都要接触大量的技术文档、代码示例、问题解决方案等信息,这些知识如果不进行有效管理,容易变得杂乱无章,影响工作...

    windows 剪贴板工具Ditto 程序员神器

    Ditto,一个开源且功能丰富的Windows剪贴板管理工具,它为程序员提供了便利,使得日常工作变得更加高效。 Ditto的核心功能在于其剪贴板历史记录管理。不同于Windows系统自带的单一剪贴板,Ditto可以存储大量的复制...

    程序员的学习与思考.doc

    从给定的文件信息来看,本文档探讨的主题围绕着程序员的学习方法、思考习惯以及如何构建一个有益于个人成长和知识分享的社群环境。以下是对这些关键知识点的详细解析: ### 知识点一:程序员的学习习惯 #### 1. ...

    笔记备份笔记备份笔记备份

    在IT行业中,尤其是在软件开发领域,数据备份是一个至关重要的环节,尤其对于程序员和开发者来说,他们的工作往往依赖于大量的代码和笔记。标题“笔记备份笔记备份笔记备份”以及描述“笔记备份”暗示了这个话题的...

    程序员资料整理软件

    【程序员资料整理软件】是一款专为程序员设计的高效文件管理和整理工具,旨在帮助程序员们更好地组织、分类和检索他们的代码示例、学习资料、项目文档等。这款软件结合了多种功能,如文件分类、标签系统、全文搜索、...

    程序员需要的高效率工具

    ### 程序员需要的高效率工具 在IT行业中,高效的工作流程是提升生产力的关键。本文将基于提供的部分信息,深入探讨对于程序员而言哪些工具能够显著提高工作效率,并且如何运用这些工具。以下是对给定内容中提及的...

    #资源分享达人# Typora For Markdown.rar 程序员人手一份编辑笔记好帮手,附有安装全过程,还不快来拿

    Typora是一款优秀的Markdown编辑器,它提供了无缝的预览体验,让编写Markdown变得更加高效和愉快。 Typora的主要特点: 1. **实时预览**:与大多数Markdown编辑器不同,Typora采用所见即所得(WYSIWYG)的方式,...

    c语言学习笔记,好东西

    它的语法简洁、高效,是很多程序员入门编程的首选。本压缩包包含了一份精心整理的C语言学习笔记,旨在帮助读者深入理解和掌握C语言的核心概念与技术。 笔记首先从基础语法开始,包括变量、数据类型、运算符以及...

    2013-7-4程序员工作效率低下11大原因

    ### 程序员工作效率低下11大原因详解 #### 一、工作时不专心 - **开通信软件:** 在工作期间打开QQ、MSDN、淘宝客户端等通信或娱乐软件,容易分散注意力,降低工作效率。古语云:“蟹六跪而二螯,非蛇鳝之穴而无可...

    Typora程序员专用的md文档编写器

    而Typora,就是一款专为程序员设计的Markdown编辑器,被誉为程序员最喜欢的Markdown编辑器之一。 Typora提供了一个无干扰的全屏写作环境,它的最大特点在于实时预览功能。用户在编辑Markdown文本时,可以即时看到...

    笔记本按键自定义软件

    在IT领域,自定义软件是提高用户工作效率和个性化体验的重要工具之一。对于“笔记本按键自定义软件”,这个软件的核心功能是允许用户根据个人需求重新定义笔记本电脑上的按键功能,包括按键的位置、效果以及绑定...

    mybase7.0 笔记本软件

    mybase7.0 是一款高效的信息管理和个人知识库工具,尤其适合程序员和专业人士用于管理文档、代码片段和笔记。作为mybase系列的最新版本,mybase7.0 beta引入了更多增强功能和优化,旨在提升用户的效率和组织能力。 ...

    2018有道云笔记最新安装包

    有道云笔记是一款深受广大用户喜爱的笔记应用,尤其对于技术编程工程师来说,它更是日常工作中的得力助手。2018年的最新安装包...只需下载压缩包中的"YNote.exe"文件,即可开始体验这个智能、高效、便捷的笔记世界。

    C语言笔记全整理

    学习良好的编程习惯和设计模式,如模块化、封装、抽象,可以帮助编写出更高效、可维护的代码。 这份"C语言笔记全整理"将这些知识点以系统化的方式呈现,适合初学者逐步深入学习,也对有一定经验的程序员巩固基础或...

Global site tag (gtag.js) - Google Analytics