2009年9月3日星期四

此Blog已死,有事烧纸

各位,有3个月都没有更新了,原因是Blogger被封,现在把自己架了blog,请访问http://www.iamhukai.com

2009年4月26日星期日

跟踪团队的技术债

在开发的时候你碰到了一段散发着恶臭的代码,“这段重构有点棘手,要想把这段代码整理干净至少要花半天时间,打个patch的话马上就能解决,手里的故事不能再拖了,但是这段代码也不能放过。”,和Pair商量后,你们创建了一个Dev Card,在上面清清楚楚的写下了这段代码问题所在和大致的重构步骤。然后飞快的完成了故事。

几天以后,你对项目经理说有一段代码需要彻底清理,项目经理皱着眉头看了看计划:
”现在它还能工作,不是么?“
”是,可是...“
"这边还有两个bug,优先级很高,客户已经抱怨了。高优先级的必须首先完成,等我们有时间的时候再清理它吧,怎么样?"
"嗯,好吧..."

这段代码于是继续留在代码库里。这样的故事每天都发生着,”有时间“自然是从未发生过,有一件事开始折磨项目经理:不知道从什么时候开始团队开发速度变慢了,项目计划变的更紧了。

这些遗留下的Dev Card, 就是一笔笔技术债,和其他的债务一样,团队需要为此支付”利息“:这些未完成的技术任务会让添加功能、修复缺陷变得越来越困难,团队的开发速度也因此不断下降。

开发人员总在抱怨没有足够的时间来让代码闪闪发光,为什么Dev Card不能像像Story Card一样受到重视呢? 关键是Story Card姓$,每个人凭直觉便能认识到它们的价值。而Dev Card的价值一方面不是真金白银那般来得直接,另一方面只有专业的开发人员才能意识到它们的价值,然而对于$的迟钝却阻碍了开发人员认识到Dev Card究竟所值几何,在和项目经理、客户的谈判中如何能不败落?

和Story Card一样,如果我们对于Dev Card做出合理的估算,就可以在使用burn down图跟踪Story的同时,使用burn up图来跟踪每个迭代所增加的Dev Card的点数,结合开发速度的下降,所有人都可以直观的认识到Dev Card的价值,进而帮助项目经理和客户做出更合理的,符合可持续发展的计划。

那么对于Dev Card的大小不清楚怎么办? Spike,和Story一样,需要对技术问题进行摸索,做到对工作量心中有数,这样的Spike,一方面可以帮助团队找到最佳的解决方案,另一方面可以使用Dev Card的估算值与开发经理、客户share understanding.

与Story Card的处理原则一样,如果一张Dev Card过大,开发者需要将其变为若干较小,便于估算的Dev Card,从而使团队有能力小步的完成这些技术任务。

这些想法是上周的回顾会议中得到的,也将在项目进行实践,如果可以的话,希望能把项目中的一些数据发布出来,相信会非常有趣。

2009年3月18日星期三

为什么我们要放弃Subversion

有日子没更新blog,这段时间忙着准备发布junit-ext
1.0,另外就是写InfoQ的两篇约稿,第一篇《为什么我们要放弃Subversion》已经发了。请大家不吝指教,对DVCS感兴趣的同学也可来电来函一起讨论。