领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Shane Hastie 译者 金明 发布于 2010年5月24日
很多评论人士一直在讨论:人们认为,在敏捷技巧和架构思维之间存在对立关系。
在敏捷世界中,架构通常被认为是BDUF(Big Design Up Front,大规模预先设计),因而在“YAGNI”(You ain’t gonna need it,你不会需要它)信条的指引下被忽视或者推迟。
从另一方面来看,正如IEEE Software Magazine2010年3/4月刊指出的一样:
敏捷开发已经极大地影响了软件行业的开发实践。然而,暂且不论它在全世界的流行,敏捷方法中存在这一个日趋强烈的关于软件架构师角色和重要性的困惑:很多人坚持“在大型软件密集型的系统中,架构师在达成质量目标的过程中扮演着关键性角色”这一观点,而他们质疑任何对架构不够重视的开发方法能否普遍适用。
……
IEEE推出的特别版关注在敏捷和架构之间的关系,探究由敏捷和架构之间的冲突派生而出的“错误的对立关系”。
在该特别版的介绍文字中,编辑们引用了一些敏捷思想领袖在架构方面的观点:
另外还有一个因素是从第一个sprint或者迭代一开始就“向利益干系人交付价值”。但开发人员,而不仅仅是最终用户,是否属于利益干系人的一个关键类别?Alistair Cockburn构思了一个策略,是始于“可行走的骨架”(walking skeleton),然后再迭代地演化。Mary和Tom Poppendieck提出了“可分割系统架构”的概念。最后,Kent Beck的建议是“架构在XP项目里面跟在其他软件项目中一样重要。架构的一部分是通过系统隐喻[XP实践之一]来捕捉的。”
这篇文章继续甄别出了在解决敏捷和框架之间的冲突时,需要明确的“真正问题”:
(Martin)Bob大叔在他的Object Mentor博客中写道:
关于敏捷开发更阴险和流传深远的神话之一是:前期的架构和设计不好,你永远都不应该花时间在前期制定架构上的决策。相反,你应该让你的架构和设计一次一个测试用例地、从无到有地进行演化。
请原谅我,但那种说法确实是扯淡。
这个迷思根本不是敏捷的一部分。相反,它是针对“真正的敏捷取缔大规模预先设计(BDUF)”的、过于激进的言论。毫无疑问,BDUF是有害的。设计人员和架构师花费连续几个月,基于由菊花链连接起来的、未经检验的假设来设计系统,实在是毫无意义。套用John Gall的话:从头设计的复杂系统从来都工作不了。
但是,有些架构上的问题也需要在前期解决。有些设计决定必须尽早做出。埋头代码可能会把你带向肮脏的死胡同,如果提前做一些考虑,这很可能就可以避免。
请注意这里强调的大小。大小非常重要! “大”是糟糕的,但“小”是很好的。事实上,LDUF是绝对必要的。
敏捷Architect网站也给出了一些具体的建议:
敏捷开发方法试图改善软件开发过程,使得我们可以更频繁地、更快地交付有效的解决方案。然而,尽管存在着一些成功案例,大型企业和项目在采纳敏捷上还是非常缓慢。其中一个原因是,很多敏捷方法被认为在架构方面比较弱,与复杂企业环境中交付大型系统的现实完全脱节。同时,许多架构流程被视为缓慢、笨拙和官僚。他们将从一个更敏捷的方法中受益。本网站通过把敏捷带给架构和把架构带入敏捷,来找出解决这一困境的方法。
你的团队如何克服BDUF和LDUF之间的隔阂?你是否认为敏捷与架构之间存在着冲突呢?
查看英文原文:Agile Architecture - Oxymoron or Sensible Partnership?
译者 金明 是ThoughtWorks咨询师,SCJP,系统分析师。关注敏捷方法学,特别是敏捷实施和项目管理的实践。
walking skeleton很贴切~
如果把敏捷比作是从上海到北京的一段旅程,边走边解决是没问题的。
但是如果一开始方向就走错了,走到广东去了,那就不对了,所以这里的大方向就是架构。
或者认为是初步解决方案。
敏捷的自适应,也是在对整个业务上下文,目标,有个了解的基础上进行的。
很久以来一直困扰的问题,今天终于有所突破...
我感觉你的这个说法更像是用户需求,而不是所谓的架构。
换句话说用户实际需要个CRM系统,你最终给用户的是一个ERP系统。
有道理 项目是无法分解的错综复杂的任务 一段旅程那可简单了很多 呵呵
RT
敏捷的特点就灵活,一开始走错方面没关系啊,敏捷不会假想一开始就是正确的,恰恰相反,敏捷总是假想一开始是错的,然后去修正它
就国内行业解决方案的项目来说,我认为敏捷主要应该是针对业务细节上的敏捷,避免在业务理解、业务流程上走错的太远。
所谓架构,无非是针对业务结构,交互接口等做技术选型,这步应该是在架构验证阶段首先敲定的框,而不是在迭代开发过程中再来验证。
在实施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概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
8 条回复
关注此讨论 回复