每日站会、代码审查、结对编程 之开源中国实践

在我来到开源中国以后,尝试将每日站会、代码审查、结对编程这三种编程实践带入团队。而这个过程,我我的以为是一项很是宝贵的体验。我以为能够拿出来和你们分享。

先介绍下目前咱们团队的结构:3名Java开发,1名前端,2名实习。

如下我不会详细介绍它们分别是什么,也无心讨论它们有什么好处坏处,本文侧重分享在实践它们的过程可能遇到的问题,以及咱们是如何处理的。


每日站会
每日站会 Stand-up :是天天进行的会议旨在在组队成员之间进行状态更新。'半实时'的状态容许参与者了解到潜在的挑战以及用于处理一个困难或者耗时的问题的协调精力。它在一些敏捷软件开发过程当中有着特定的价值,譬如Scrum,可是一样能够在任何开发方法论中被使用。术语 “站” 衍生于经过保持与会人员站立的状态(长时间站立会致使不适)从而帮助控制会议的时间的实践。

咱们天天会早上花十几分钟(具体时长看团队大小),你们一块儿站(是)在卡墙前过卡。卡墙其实就是Team中的任务看板。就这样,咱们从“已验收”列到“待办中”列,从上往下,一张卡一张卡的过。这里的卡是指定义了一个小功能需求的卡片。  前端


站会不过是向领导汇报
我在实践每日站会的时候,发现很多人把每日站会当成一种“向领导汇报”的过程。好比他们会习惯地汇报:我昨天作了1,2,3 blabla。一大串,仿佛说得少就是作的少。因此这个过程,我不断地指正,大家不是在向领导汇报,咱们只须要对这件事情负责,说到你的卡时,你就说你的卡的当前状态就行了。慢慢地团队里就养成了对事不对人的文化。为何呢?每日站会就是提醒咱们每日的工做就是对这些“事”负责。

随着时间迁移,咱们的团队就慢慢习惯了这种站会。也会在站会上开一些开玩笑了。不要认为这是浪费时间,这是团队文化中很重要的一部分。

站会时间把控问题
站会还可能会遇到的问题是站会时间的把控。因此,咱们每日站会会有一个主持人。若是你们说偏题了,主持人就必须指正,让相关人在站会后本身讨论。若是你们讨论的这个问题是个大问题,那么,也是在站完会后再讨论。另外,主持人还要是轮换的,这样就能够将团队全部成员带入项目。

站会上的新人问题
每日站会经常遇到的问题是过卡时,这我的说得太细了,把功能的具体实现细节都说出来了。这时,咱们不该该当即打断他。出现这样的状况,说明他必定是新人。咱们应该选择在站会后单独找他重申一次每日站会的目的和内容。固然,一开始实践每日站会时,团队里除了你每一个人都不懂时,你就有必要立刻指正了。


代码审查
代码审查(Code review)是指对计算机源代码系统化地审查,经常使用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提高软件质量及开发者的技术。代码审查常以不一样的形式进行,例如结对编程、非正式的看过整个代码,或是正式的软件检查。 


我今天没有什么好说的
一开始,我实践时,遇到的最大问题是:团队成员喜欢说,我今天没有什么好说的。这句话听起来冷漠,其实背后的缘由是你们不彻底理解代码审查是什么,而不是由于他们真的没什么好说的。

这时,我会说:只要你今天作了的事情,你均可以说。而后,他们经常不知从何提及,接着,一上来就给咱们讲代码细节。

遇到这种状况,咱们须要再强调一遍代码审查须要说什么:上下文、你是如何解决问题的、解决过程遇到什么问题……有时被审查的人可能说的不够明白,我就会帮助补充。

这个过程,你可能会发现有些人在表达能力上的不足,致使听的人一头雾水。个人作法是理解他说的,而后尝试帮助他更好表达出来。这样,提高他的表达能力的同时,让他在团队里也更有归属感。

说得太多了
有时,有些成员可能会说的很是很是细。多人这样了,就会致使代码审查的时间过长。发生这种状况,将表达能力的问题排除外,大概就是这我的没考虑哪些应该是本身应该重点说出来的。这时leader就要站出来指正了。

没写代码怎么审查?
其实,咱们实践的代码审查并非十分严格。由于有时,咱们一天下来没有写代码,而是作调研工做。遇到这种状况,被审查人也须要主动分享他今天的习得。有时,他说出来某个问题,也许其余成员也遇到过一样的问题,并解决了。这样就为团队节约时间。


结对编程
结对编程(Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工做。一我的输入代码,而另外一我的审查他输入的每一行代码。输入代码的人称做驾驶员,审查代码的人称做观察员(或导航员)。两个程序员常常互换角色。 


如何将结对编程带入团队?
咱们的作法由一个懂得结对的人分别和团队里每个人进行结对。结对前,详细说明结对可能遇到的状况,好比双方有争执,一直都是一我的写的状况,双方都遇到不懂的状况……而后,结对时穿插结对编程的知识。

团队成员中的两个都没有结对编程的经验,怎么办?
实际状况是咱们遇到更麻烦的事情。
由于我在前端不擅长,因此我决定让两名前端结对。问题来了,这两我的都不会结对,在沟通方面也不是很是擅长。让他们结对后,我发现他们一块儿结对的时间很是少,一天下来基本就是各作各的。这时,我发现不对劲。我就分别找他们谈。为何要分别呢?是但愿他们大胆说本身的感觉。

在和他们谈了以后,发现根本缘由是他们没有彻底理解结对编程的目的。这时,找到他们俩再重申一遍结对编程是为了什么,以及如何结对。

新人对结对编程经常有的疑惑?
他在写代码,我看着有什么用?
软件开发是一项集体脑力活,知识的流动在这项活动中很是关键。结对编程是促进知识流动的行为。
看别人写代码的人,咱们称为“观察者”。写代码的人,咱们称为“驾驶员”。观察者的职责是对写代码的人的代码进行审查。其实除了这点,我更看重的是这个分享思惟方式的过程,会加速双方的成长。这个过程还能营造一种相互学习的文化。

我以为我一我的一会儿就写完了
说这句话的人的能力不会差。其实有这样的想法很正常。这时,咱们就鼓励他多分享。当我深究下去时,他说写那些东西根本不须要动脑。还很得意的样子。不知道大家有没有发现其中的问题:他在作体力活。更大的问题是:他还不知道本身在作体力活。这时,我会说:当你在作体力活时,和机器没有区别,说明你在退步,这时,你应该跳出来,挑战本身,好比coach别人,或找到一种避免这种体力活的方法。

若是你有什么疑惑,可在本文评论留言。

如下是小结

每日站会,代码审查,结对编程实践的前后顺序的?
本质上是没有前后顺序的。可是若是你是一位新来的leader,你就须要考虑你加入的团队的状况了。咱们是先施行每日站会,代码审查。最近一个月才开始实施结对编程。为何呢?由于对这些编程实践,若是强硬推行,可能会受到排斥。你须要时间让团队成员消化。


给人留下“什么都管”的印象
因为我带来了这些新的实践,看到团队成员实践过程的一些问题就会指出,因此常常给人“什么都管”的印象。
当leader什么都管时,leader要问本身为何什么要管,而团队成员也要反问本身为何什么都要被管。排除leader的性格问题外,大多数时,是由于团队还处于比较初级的阶段。你问问本身,团队里有多少人能够本身作leader的就知道了。leader应该跟你们说清楚这点。这样你们就理解你了。可是这个“初级”的阶段要多长时间?就要看你何时培养出另外一个leader了。


你会发现我在本文没有谈什么M捷或者精Y,是由于我想就事论事,不想谈理论,只想解决实际问题。

问题来了,你发现团队中没有人会结对,你做为leader不懂得如何结对编程时,怎么将结对编程带入团队中呢?
这时就须要请外援了。好听一些,请咨询顾问。若是你以为看了个人文章,以为我还行,也能够找我。我在开源中国众包发布了一个专家服务: 将每日站会、代码审查、结对编程带入团队

固然,你以为看这文章对你有帮助,也能够打赏10元: 程序员

相关文章
相关标签/搜索