领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Abel Avram 译者 张晓庆 发布于 2010年4月11日
Martin Fowler在ThoughtWorks的软件开发邮件列表中做了一个调查,了解开发人员怎么看待一些版本控制系统(VCS)。他据此对主要的版本控制系统写了一篇评论文章,并对集中式和分布式系统进行了比较。
调查的结果如下:
|
工具 |
最佳 |
不错 |
有问题 |
危险 |
无意见 |
有效回复 |
赞成比例 % |
|
git |
65 |
19 |
1 |
0 |
14 |
85 |
99% |
|
Mercurial |
33 |
27 |
2 |
0 |
36 |
62 |
97% |
|
Subversion |
20 |
72 |
6 |
1 |
0 |
99 |
93% |
|
Bazaar |
1 |
13 |
3 |
0 |
80 |
17 |
82% |
|
Perforce |
1 |
26 |
16 |
1 |
54 |
44 |
61% |
|
CVS |
0 |
14 |
59 |
11 |
15 |
84 |
17% |
|
ClearCase |
0 |
3 |
14 |
41 |
41 |
58 |
5% |
|
VSS |
1 |
1 |
11 |
64 |
22 |
77 |
3% |
|
TFS |
0 |
0 |
32 |
22 |
44 |
54 |
0% |
参与者把9种版本控制系统进行分类:最佳、不错、有问题、危险、无意见,最后一个是说他们根本没有用过。“有效回复”是指去除“无意见”的所有其他回复,而“赞成比例%”是指(最佳+不错)/ 有效回复的比例。
虽然调查的范围有限,只表明了ThoughtWorks公司内部的主观看法,但该结果或许也可以代表其他公司对版本控制系统的看法。
两个开源分布式版本控制系统,git和Mercurial赞成比例最高,均超过了95%。开源集中式版本控制系统Subversion,赞同比例也很高,达到93%。而排名最低的是商业系统:IBM的ClearCase,微软的VSS和TFS。
所有的99个回复者都用过Subversion,85个用过git,84个用过CVS,而使用过Bazaar的只有17个人。多达77个人使用过VSS,但是其赞成比例只有3%。
这些结果与老马最初关于版本控制系统的评论不谋而合。通过与ThoughtWorks员工及合作者的讨论,马丁福勒总结说大家普遍接受的版本控制系统有3种,也是值得推荐的:Subversion、git和Mercurial。这意味着你需要在集中式和分布式VCS之间选择。对老马来说,分布式VCS的好处是“给工作带来了许多灵活性,但如果使用不当,这些灵活性反而会比较危险”。Subversion的好处是:
鼓励使用简单的中央仓库模型,不鼓励大规模使用分支。如果你像我的许多朋友那样,正在使用持续集成,这种模型相当好用。Subversion是个绝佳选择。
虽然分布式VCS给了你很多灵活性,可以灵活管理工作流程,然而据我所知,多数人的工作模式仍然基于一个共享的主线仓库,这也可以给持续集成使用。虽然现代的VCS都有强大的工具合并不同人的变化,但仍然只能是文本合并。持续集成仍然需要语义一致性。所以虽然团队使用了分布式VCS,但仍然会有中央式主仓库的想法。
老马进而对分布式VCS和集中式VCS做了对比:
分布式VCS鼓励为试验快速创建分支。你也可以在Subversion中创建分支,但它们对所有人可见,妨碍了大家这么做。与此类似,分布式VCS鼓励在工作中设置检查点:你可以向本地代码库签入没有完成的代码,它们可能测试不过,甚至编译不过。同样,Subversion中你也可以在开发者分支中这样做,但由于这些分支是共享的,大家都不愿意这样做。
老马提到集中式VCS更擅长处理二进制文件:
特定情况下,即使整个团队已经熟练使用分布式VCS,也最好选择Subversion。这就是当使用二进制,VCS无法合并的时候-比如Word文档或者幻灯片。此时需要使用悲观锁,只能有一个签出是可写的-这就需要一个集中式的系统。
老马对ClearCase和TFS的评价很低:
有两个VCS倍受批评:IBM的ClearCase和微软的TFS。它们广受批评的原因之一是客户使用广泛,通常是公司政策强制使用。
...我尊敬的一些开发人员曾频繁使用这些产品,但是并不推荐使用。
VSS被认为是最差的选择:
在结束不推荐的版本控制系统之前,我想说一下这个尤其糟糕的工具:Visual Source Safe,或者可以称之为:Visual Source Shredder(译注:shredder,粉碎机)。感谢上帝,它现在已经很少见了,但是如果你还在用它,我们强烈建议你换掉,就现在!它不但用起来非常痛苦,我还听说过多次数据仓库崩溃的故事,实在不能让人信任。
老马的看法比较主观,并没有比较它们的实际功能。文章Better SCM Initiative中对28种版本控制系统做了深度比较,但并没有排名,而是提供一些关键功能指标,包括:原子提交、文件和目录的移动或者重命名、移动或者重命名后的智能合并、文件和目录拷贝、能够只在一个目录工作、跟踪没有提交的变化、文档、部署的难易程度等等,这样用户可以自己决定哪个VCS最好。
Scott Chacon写了个帖子为git辩护,解释为什么他认为git比Mercurial、Bazaar或者SVN更好:廉价的本地分支、一切都在本地、速度快、适用于任何工作流程,以及其他一些原因。
当然,每个开发人员或者团队都有自己喜欢的CVS。您最喜欢的是什么呢?您有没有高兴或者惨痛的经历与大家分享?
参见英文原文:ThoughtWorks’ Developers Favor Distributed Version Control Systems
译者 张晓庆 有多年的软件开发经验,主要是J2EE项目、Web应用和分布式系统等等,在电信网管开发方面经验丰富。
如果VSS也算是个版本管理系统的话, 那它就是世界上最烂的版本管理系统.
我的排名: git svn bzr rcs (rcs 仅在需要处理一两个文件时使用)
PEP 374 www.python.org/dev/peps/pep-0374/
这是俺见过的最全的对比, Hg 最均衡,而且和SVN 可以无缝协作; Git 是最强大的玩具,可以扩展出N多模式,但是...
CVS有啥问题?貌似没有提及。
Git没用过图形客户端呢
我倒是很喜欢Bazaar,虽然它的速度是最慢的,但是功能最多,使用也比较灵活.
我有很多项目到处commit... U盘,Email, ftp, windows共享, 甚至dropbox里..
VSS差这点没有人有疑惑,不过tfs有什么大问题吗?
如果使用的是微软的vs.net开发环境,不用tfs用什么呢?
在实施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概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
7 条回复
关注此讨论 回复