高效程序员的45个习惯(笔记)

2017-04-28  本文已影响0人  大雄good

敏捷开发修炼之道

最近看了一本叫高效程序员的45个习惯,下面总结内容。

全书分为9个章节:

第一章:敏捷开发之道

用原文的方法讲,敏捷开发就是在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。

我想其实和学习任何事情都是一样的道理,实践出真知,不断地尝试和反馈,纠正自己的错误,这样容易推动进度,有目标性,效率也会更高。

第二章:态度决定一切

做事的态度非常重要,包括个人和团队。专业的态度应该着眼于项目和团队的积极结果,关注个人和团队的成长,围绕最终的成功开展工作。

1.做事

反例“出了问题,第一重要的是确定元凶。找到那个白痴!一旦证实了是他的错误,就可以保证这样的问题永远不会再发生了”

这个错误的观点很滑稽,但是从生活中也经常发现这种态度,比如出错了大家第一件事情就是找是谁的错,而不是想着解决问题的方法。

正确的做法“把矛头对准问题的解决方法,而不是人。这是真正有用处的正面效应”

勇于承认自己不知道的答案,这样让人感觉放心,一个重大的错误应该被视为一个学习而不是指责他人的机会。

平衡的艺术:

2.欲速则不达

反例“你不需要真正理解那块代码,它只要能够工作就可以了。哦,只要在结果中加几行代码,他就可以工作了,干吧!就把那几行加进去,它应该可以工作”

经常会遇到这种情况,出现一个bug,时间紧迫,通过加一行代码或者忽略那个列表最后一个条目,就可以工作(好像我也干过,欲哭无泪!!!)。但是接下来做法才能说明,谁是优秀程序员,谁是拙劣码农:

因此,最好做到:

平衡的艺术:

3.对事不对人

一个例子,当某人正在做一个新方案介绍时,下面有人说:“那样很蠢!”(也就暗示开发者也蠢),改进一下“那样很蠢,你忘记考虑它要线程安全。”,而最佳表达方式是:“谢谢,xx,但是我想知道,两个用户同时登录会发生什么情况?”

三种方式对应三种含义:

对于团队决策需要做一下特殊技术:

4.排除万难,奋勇前进

发现某段代码太肮脏了,应该讲糟糕的代码放到一边,立刻重写。并且列出重写的理由,帮助你的老板和同事认清形势,并得到正确的解决方案。

第三章:学无止境

敏捷开发需要持续不断的学习和充电(所有行业都是,好吗!!)

5.跟踪变化

你能嗅到将要流行的新技术,知道它们已经发布或者投入使用。如果必须把工作切换到一种新的技术领域,你能做到。

平衡的艺术:

6.对团队投资

提供个人和团队学习的更好平台,例如通过午餐会议增进每个人的知识和技能,并且帮助大家聚集在一起进行沟通交流。

平衡的艺术:

7.懂的丢弃

新技术会让人感到恐惧,毕竟需要学习很多东西。但是已有的技能和习惯为你打好了基础,但不能依赖它们。

8.打破砂锅问到底

不停地问为什么,不能只满足别人告诉你的表面现象,要不停地提问知道你明白问题的根源。

9.把握开发节奏

项目开发需要一致和稳定的节奏。编辑,运行测试,代码复审,一致的迭代,然后发布。如果知道什么时候开始下一个节拍,跳舞就会更加容易

平衡的艺术:

第四章:支付用户想要的软件

开发的目标应该由客户决定,因此为了让软件符合用户需求,要提早集成,频繁集成,使得代码一直保持可以发布,由于需要一次又一次给用户演示,因此应当提早实现自动化部署。

10.让客户做决定

开发者、经理或者业务分析师不应该做业务方面的决定。用业务负责人能够理解的语言,向他们详细解释遇到的问题,并让他们做决定。

平衡的艺术:

11.让设计指导而不是操作开发

好的设计应该是正确的,而不是精确的。也就是说,它描述的一切必须是正确的,不应该涉及不确定或者可能会发生变化的细节,因此它是目标,而不是具体处方。

如果写得太具体有两个弊端,一是程序员没有代码决定权,只是翻译伪代码,没成就感;二是,花费太多时间,如果项目变动,或者规划有问题,就浪费了大量时间。

平衡的艺术:

12.合理地使用技术

根据需要选择技术,首先决定什么是你需要的,接着为这些具体的问题评估使用技术,对任何要使用的技术,多问一些挑剔的问题,并真实地回答。

平衡的艺术:

13.保持可以发布

任何时候进行项目展示时,都能很自信毫不犹豫地给别人演示最新构建的软件。项目一直处于可以运行的稳定状态。

平衡的艺术:

14.提早集成,频繁集成

代码集成是主要的风险来源,要想规避这个风险,只有提早集成,持续有规律地进行集成。

平衡的艺术:

15.提早实现自动化部署

一开始就实现自动化部署应用,使用部署系统安装你的应用,保证在不同的机器上用不同的配置文件测试依赖的问题。系统的安装或者部署应该简单、可靠及可重复。

16.使用演示获得频繁反馈

清晰可见的开发,在开发的时候保持应用可见(客户心中也要了解)。每隔一周或者两周,邀请所有客户,演示最新完成的功能,积极获得他们的反馈

17.使用短迭代,增量发布

短迭代让人感觉非常专注且具有效率。你能看到一个实际确切的目标。严格的最终期限迫使你做出一些艰难的决策,没有遗留下长期悬而未决的问题。

平衡的艺术:

18.固定的价格意味着背叛承诺

基于真实工作的评估,让团队和客户一起,真正地在当前项目中工作,做的具体实际的评估,由客户控制他们要的功能和预算。

第五章:敏捷反馈

19.守护天使

使用自动化的单元测试,好的单元测试能够为你的代码问题提供及时的警报。如果没有到位的单元测试,不要进行任何设计和代码修改。

平衡的艺术:

20.先使用它再实现它

利用测试驱动开发作为设计工具,这样只有具体理由才开始编码,可以专注于设计接口,而不会被很多实现细节干扰

21.不同环境,就有不同问题

使用持续集成工具,在每个支持的平台和环境中运行单元测试,要积极寻找问题,而不是等问题来找你

22.自动验收测试

为核心业务逻辑创建测试,让你的客户单独验证这些测试,要让它们像一般测试一样可以自动运行。

23.度量真实地进度

使用代办事项,使得下一步工作是可见的,有助于进度度量,而不是按照百分比安排。不要用不恰当的度量来欺骗自己或者团队,要评估那些需要完成的待办事项。(每天列清单果然是好习惯,再加番茄工作法,用来计时)

平衡的艺术:

24.倾听用户的声音

每个用户抱怨背后都隐藏了一个事实,找出真相,修复真正地问题。

平衡的艺术:

第六章:敏捷编码

代码要清晰表达意图,项目是增量式开发,写程序也应该增量式编程。

25.代码要清晰地表达意图

要编写清晰地而不是讨巧的代码,向代码阅读者明确表明你的意图,可读性差的代码一点都不聪明(让自己或者团队任何人,可以读懂自己一年前写的代码,而且只读一遍就知道它的运行机制)

平衡的艺术:

26.代码沟通

用注释沟通,使用细心选择的、有意义的命名。用注释描述代码意图和约束。注释不能替代优秀的代码

27.动态评估取舍

动态评估权衡,考虑性能、便利性、生产力、成本和上市时间。如果性能够了,就应该把注意力放在其他因素上,不要为了感觉上的性能提升或者设计的优雅,从而将设计复杂化。

28.增量式编程

在很短的编辑/构建/测试循环中编写代码,这要比花费长时间仅仅做编写代码的工作好得多,可以创建更加清晰、简单、易于维护的代码。

平衡的艺术:

29.保持简单

开发可以工作的、最简单的解决方案,除非有不可辩驳的原因,否则不要使用模式、原则和高难度技术之类的东西。

当你觉得所编写的代码中没有一行多余的,并且仍能交付全部功能时,这种感觉就对了。这样的代码容易理解和改正。

30.编写内聚的代码

让类的功能尽量集中,让组件尽量小,要避免创建很大的类或组件,也不要创建无所不包的大杂烩类。

31.告知,不要询问

不要抢别的对象或者组件的工作,告诉它做什么,然后盯着你自己的职责就好了。

32.根据契约进行替换

通过替换遵循接口契约的类,来添加并改进功能特性,要多使用委托而不是继承。

平衡的艺术:

33.记录问题解决日志

对解决的问题可以记录以下条目:

34.警告就是错误

嵌入带有警告的代码,就跟嵌入有错误或者没有通过测试的代码一样,都是极差的做法。

35.对问题各个击破

在解决问题时,要将问题域和周边隔离开,特别是大型应用中

36.报告所有的异常

处理或向上传播所有的异常,不要讲他们压制不管,就算是临时这样做也不行,在写代码时要估计到会发生的问题。

37.提供有用的错误信息

提供更易于查找错误细节的方式,发生问题时,要展示出尽量多的支持细节,不过别人用户陷入其中。

第八章:敏捷协作

38.定期安排会面时间

大家都期盼立会,希望彼此了解各自的进度和手上的工作,而且不怕把各自遇到的问题拿出来公共讨论。

39.架构师必须写代码

积极的编程可以带来深入的理解,不要使用不愿意编程的架构师——不知道系统的真是情况,是无法展开设计的。

架构、设计、编码和测试,这些工作给人的感觉就像是同一个活动——开发的不同方面。它们彼此之间应该是不可分割的。

40.实行代码集体所有制

让开发人员轮换完成系统不同领域中不同模块的不同任务。

平衡的艺术:

41.成为指导者

分享自己的知识很有趣,付出的同时便有收获,还可以激励别人获得更好的成果,而且提升了整个团队的实力

42.允许大家自己想办法

指给别人正确的方向,而不是直接提供解决方案

43.准备好后再共享代码

绝不要提交尚未完成的代码,故意嵌入编译未通过的或者没有通过单元测试的代码,对项目来说,应被视为玩忽职守的犯罪行为

44.做代码复查

代码复查随着开发活动持续进行,而且每次针对的代码量相对较少,复查活动就像是项目正在进行的一部分,而不是一种令人畏惧的事情

45.及时通报进展与问题

发布进展状况、新的想法和目前正在关注的主题,不要等着别人来问项目状态如何

尾声:走向敏捷

哈哈,感觉入手敏捷开发吧!

上一篇下一篇

猜你喜欢

热点阅读