领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 晁晓娟 发布于 2010年12月8日
Eric Landes 最近在一篇名为《敏捷技巧:什么时候以什么方式来进行代码评审》提到
代码评审是一个帮助团队提高他们的软件成熟度的工具,并最终意味着交付给客户更高的价值。
他从如下几个环节来介绍代码评审
敏捷工程实践
Eric 首先建议从如下通常敏捷团队需要用的工程实践来展开:
- 测试驱动开发
- 持续集成
- 作战室
- 结对编程
- 小版本发布
- 重构
- 代码共有
并强调
团队需要确保在代码评审时将好的开发原则牢记于心,进行代码评审是让团队关注他们何时以及是否遵循这些原则和良好实践。
什么时候实施代码评审
代码评审的时机应该由团队来决定,这没有什么标准,这取决于你的团队成熟度和Sprint/迭代的周期,Eric的建议是
如果你的团队2周一个迭代或者sprint,那么两个sprint之后进行第一次代码评审似乎是个好时机,这时候有足够的代码来评估... 而且好的代码评审能够确保团队关注良好的工程实践,并允许不断引入新的实践。
谁来做代码评审
各种开发水平的开发者应该都要来参加,能够让团队成员学习并强化基于代码的原则,并且一定要有讨论和反馈。同时
你的QA同事也要参与,如果他们也有开发任务的话。
开始进行代码评审
如果你是一个团队领导,Scrum Master或者项目经理但从来没进行过代码评审,别害怕!
因为代码评审并不需要完全手工进行,有一些现成的工具而且团队的技术成员也会来帮你,但你要做好充分的事先准备。
准备
Code Coverage 代码覆盖率
Eric告诉读者
一个团队需要有一些基本的质量标准,比如单元测试的业务逻辑的代码覆盖率,有很多这样的工具,比如.NET环境下的nCover,Visual Studio Test 等,Java环境则有jCover, hansel, CodeCover 等。
并且
代码覆盖率会反映一些问题,如果有覆盖率有低于20%的代码,那可能要对其提出疑问..要注意...也许会有一个好的理由,但是这更多是一个谈话的开始,而不只是一个报告卡。
Architecture 架构
对于代码评审的架构部分,Eric提到
这也是个了解架构的好时机…要把所有的老架构图和最新的架构以及类库放到一起进行…
Code Analysis 代码分析
可以借助于工具来做一定的事先分析,
在会议之前通过分析工具过一遍代码,这样你可以知道关注什么,从哪开始。
相应的工具比如.NET环境下的nDepend,他们生成的报告可以告诉你循环的复杂度以及继承的深度等。
代码评审
准备好后就可以和团队进行会议了,但要预留出讨论的时间,给团队来互动并相互指导。 Eric建议
团队的大小和特点决定会议需要多长..比如在一个8个开发者,一个项目经理,一个开发经理的团队,大概需要一个半小时来进行代码评审...但这只是在第一次会议有用,之后就要基于第一次的结果来适应和调整。
实际当中我们的代码评审时间可能比这个都要长,如何更有效地展开代码审核会议,作者还提供了以下一个时间安排的例子:
1) 概览本次代码评审的故事(10分钟)
2) 讨论团队指标(10分钟)
3) 强调评审的特别关注点(5分钟)
4) 深入地评审代码(55分钟)
a) 代码覆盖率
b) 架构
c) 深入的分析报告
5) 总结并记录行动事项(10分钟)
这样的例子可以提醒团队关注什么是最重要的,这也会因团队实践而不同。在评审中团队成员不仅要关注单元测试的覆盖率,复杂度,也要关注依赖性,耦合性等。
他总结说
在会议中,团队应当讨论上面所列的问题,而且任何问题都应该可以交流..如果需要对之采取行动..那就记下要跟进的事项,以确保问题得到解决。 在会议结束的时候..回顾行动项目并且提示团队实践中的积极方向。
代码评审实施完了!
你也许已经按照上面的步骤实施了一次代码评审,他最后再次提醒读者
记住代码评审是一个帮助团队提高他们软件工程成熟度的工具,而且这将最终意味着交付给客户更高的价值!
Eric Landes 是一个来自于大型公司IT部门的项目经理、特别专注于敏捷团队的教练。他拥有超过四年的经验使用敏捷/精益技术以实现客户价值和并让团队专注于项目。
感谢金明对本文的审校。
晁晓娟 从事Web开发管理多年,留过学,呆过外企,尝试过创业,关注项目管理,架构和产品。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
没有回复
关注此讨论 回复