领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!

作者 Mark Levison 译者 赖勤毅 发布于 2010年11月5日
现在已经到第十次迭代开发周期了,你的项目开发速度开始变慢。在之前的几个迭代周期中,团队没有像以前那样完成很多的“故事场景”(stories)。此外,最近在新的故事场景和回溯中却发现更多缺陷(bug)。项目经理知道,团队成员没有变,他们也花同样的时间工作。但是,客户会发问:“发生什么事情了?这个团队还在努力工作吗?”
很多敏捷团队的产品改进率为150-500%[1],可是你们的项目看起来却貌似只有20-40%左右的改进率。这到底是怎么回事呢?在此我们找不到什么大问题;相反,只是有无数的小问题。有时,这些只是一些为了方便而使用的捷径(开发人员没有时间去清理这些修改),有时开发人员仅仅是不熟悉这中语言。还有一些问题就是,代码跟灌木丛一样凌乱,需要大幅度的修整。所有这些都属于“技术债务”。
它就是“那些内在的事物,现在你不去解决,遗留下来(不干完),它就会阻碍未来开发”[Ward Cunningham]。 表面上,应用程序看起来质量很高且状况良好,但是这些问题却隐藏在下面。 QA(质量保证部门)甚至可能告诉你说,这个应用程序真是不错,几乎找不到缺陷,但是其中仍然存在“技术债务”,如果我们没有很好地管理并设法降低这些“技术债务”,那么,程序编写和维护的代价最终将会超过它对客户的价值。
技术债务就像信用卡一样,会有很高的利息率,就如同给团队留下了大量的帐务开销。这种情况下,开销将会体现在时间花费和解决问题所需的努力上面。开发团队拖延债务的时间越长,所积累的利息就越多(会额外增加很多工作),付出的成本也就越高。
另外,这还增加了实际的财务支出:开发团队处理技术债务所花费的时间,可以用在对团队有价值的其它工作上。同时,这些难读的代码引起的技术债务也让我们难以找到软件的缺陷。再且,理解代码所损失的时间还可以用来做其它更有价值的事情呢。
项目编码初期,不整理代码,不写单元测试,也不做测试驱动开发,整个团队粗制滥造出更多的“故事场景”。 这些问题通常都不会马上暴露出来,而循规蹈矩地编写代码往往需要更多的时间,特别是在早期阶段。
这个问题的并不是一下子可以解决的,解决方案需要通过几个迭代周期。并且,你需要耐心,并要从多个角度寻找解决途径。
解决方案中的要点
基于这样的立场,你会发现问题,也会拥有机会。你的问题是:项目的基础代码一直在积累技术债务,但是这些债务已经开始下降了。然而,现在跟客户申请用于处理这些问题的资金会跟处理这些问题一样困难。你的机遇是:提高了开发人员的技能;清楚地表达了管理层对这项工作的支持,还有,软件的代码质量会不断改善,软件缺陷的数目也会不断减少。同时这也会很好的提高团队的整体开发能力。
[1] RPM Software – by Robin Dymond; Embedded Agile Project by the Numbers With Newbies (2006) - by Nancy Van Schooenderwoert; How Agile Projects Measure Up, and what it means to you (2008) by Michael Mah
查看英文原文:Technical Debt a Perspective for Managers
感谢侯伯薇对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。
在实际项目中,达到理想程度还真不是一件容易的事。管理者考虑的与要做的未必相符啊。
在管理层看来,编写代码就是体力劳动,他们不会去关心什么技术债务。
培养人才需要成本,很多时候项目只要能跑就好了,项目后期也就是改改SQL,添添索引
不过可以理想化的学习一下,很多时候这些道理PM和管理者都懂的,但他们永远不会去做.
在中国是体力活...呵呵
在国外就不一样.
看完这篇文章,结合自己正在做的事情,技术债务的确是个比较大
的问题,所以对我而言也有很大的借鉴意义。
但从上面各位的回复来看,貌似有点消极了。
我们的现实环境可能的确如你们所述,所以才更需要借鉴好的解决
方案来改变现状。就算我们不是管理者,也可以亲身的经历和得到
的好处来影响和感染周围的人。
不好意思忘了文章的标题是“从经理的角度”,
那我就建议应该不限于从经理的角度来看技术债务
这就是为什么中国程序员写的代码质量不高,往往目标只为了如何实现功能跟能跑起来就可以了,写代码也大多都是copy + paste, 代码重复量太大。
从实际项目上来说,项目经费才是第一,项目时间跟工作量其次,当然程序员的个人代码素质也很重要,高质量的代码需要一定的环境下才能产生的。
这篇文章讲的很好,值得学习。
这个就像借高利贷一样,借的时候容易,但是需要很高昂的代价来偿还
看着是个很好的主意。但是当前我们出现的问题并不是不知道这些问题,也不是不知道大的解决方向,而是缺少具体的解决方案,最好能直接面对到一件事情上。执行力也是个问题。总感觉这个对项目经理的要求也是比较高的,而且依靠经验的程度比较高,不知道有没有具体执行步骤,度量方法。
如果管理层发现你前期的迭代过程那么顺利,就很难相信这阶段的问题会如此难以解决。所有,说服管理层给予时间和资金的支持是最难的
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
在多线程并发编程中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概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
11 条回复
关注此讨论 回复