Linus Torvalds在软件开发管理上的教训
译者 semoon
Linus Torvalds在软件开发管理上的教训
如果有谁知道管理软件开发项目的欢乐和悲伤,那么他一定是Linus Torvalds,作为世界上最流行的开源软件——Linux操作系统的创建者,Torvalds已经管理着成千上万的开发着来提高这个开源操作系统超过20个年头了,他和我将坐下来谈谈那些在管理大型分布式编程团队的有效技巧,当然也包含那些不起作用的所谓技巧。
Torvalds说有两件事情,无论在个人开发或者公司层面上,人们非常普遍的得到完全错误的认识。“首先是一种想法:你可以把事情丢给其他人,让他们帮忙”,当谈到开源软件开发,他说,“它并不是这么运作的,你把他开源了,然后由你承担,你不得不做所有的事情,并且让其他人来建议你应该做些什么,并不是他们应该做什么,可能他们最终会开始帮助你,但你应该先假设你去维护它,并准备做所有的工作。”
Torvalds接着说,“如果你一开始就抱着'kumba-ya feeling'(译者注:美好的不切实际的幻想),你认为世界上所有的人都会走到一起,通过你的项目一起工作,去创造一个更美好的时间,那么你可能不会走的很远。”“此外,并且和它相关联的是,人们似乎错误的认为他们写的代码很有影响,”Torvalds说,大多数的软件开发项目经理都看到了这一点。“不,即使你写了100%的代码,即使你是世界上最优秀的程序员,压根儿不需要什么帮助文档,真正重要的是代码的用户,代码本身不重要,项目只有在有人实际发现了它的时候才是有用的。”这一点上,我会补充,这不仅仅是一个程序员的问题,我已经看到了整个公司都沉浸在这样的想法中——“完善”的程序就是全部。然后,他们忽略用户想从程序得到什么,他们应该怎么支持用户等等问题。我们中的大多数人已经在公司呆过一段时间了,也已经看到这个循环在一遍一遍的重复。第二天扩充开来,Torvalds说这就是问什么Linux内核小组是“非常关注整个‘没有回归’的东西”,例如,打破用户体验来“修复”某些东西是一个完全打破的概念,你不能这么做。如果你打破了用户体验,你会觉得,你在代码上迎合了一些事情,但是如果你通过打破用户体验迎合代码上的一些事情,你就违反了第二点——您认为代码比用户更重要。但这不是真的。”
结论,“对很多很多项目而言,似乎认为代码势必用户更重要,他们打破左,右的东西,他们不道歉,因为他们觉得自己是迎合代码和做正确的事。”我只能加上句“阿门”。
关于开发工具的重要性
我也问过Torvalds关于软件配置管理(SCM)工具,像他们自己的Git版本控制器系统。他回答说,“我不认为,从根本上很重要的是工具。”“现在,最重要的是,有一个良好的项目工作流程和工具,能够给予项目一定的帮助”Torvalds说。“当时大多数项目没有一定真正需要的工具,有很多项目,根本没有足够的变化以至于需要为他们的工作流程而采用某种工具,如果你只有不多的补丁需要发行,你可以采用你想要的任何方式,包括完全手工”
Linux是一个完全不同的故事,“对于内核,我们每个发行版本有数以千计的补丁,发行需要3个月时间,所以对我们来说,工具是相当重要的,”他说。“但我仍然不认为这是所有大的错误只有因为最初几年开发的目标球和补丁,这是一个小得多的项目,几年后,缺乏管理工具才真正成为一个问题。”此外,“一些工具积极鼓励工作流程,我认为CVS(并发版本控制系统)”例如已经影响了很多项目,使他们有了一个概念“承诺团体”,Torvalds继续说道,“我个人倾向于认为焦油球和补丁实际上是最好的,如果仅仅是因为他们使所有开发者‘平等’”“你没有得到类似一些确定的人员的‘许可权’,其余的是二等公民,有时候这样更好,让这部分人更容易对待。”我要声明,知道CVS很好,并且我恨它好多年,正如他在2007年google talk说的那样“我讨厌带着许可证的CVS”。他继续说道,“比工具更重要的是人,维护者以及心态。”
让人们走上正轨
如今怎么让这些人共同努力呢?在这过程中我向Torvalds问了有关Linux内核邮件列表(LKML)的作用,他回答说:“我认为Linux中,最近一段时间,比起在LKML上,我们更多的使用‘发生’,信噪比和LKML的纯量显示大部分开发者明显没有时间去读LKML,最多把主题行扫一眼,因此,这些天来,我要说的是,真正的开发发生在单个开发人员的沙箱中,然后一个人对人的规模以上的电子邮箱实际上是如何真正去做的”Torvalds继续说:“这并不意味着LKML不重要,它意味着LKML已经成为这些个人的电子邮件线程的‘公共乐队’,所以,结束意外事件的发生,你有可能在讨论他们工作涉及的四五个人,当时LKML停留在整个时间抄送上。否则很容易演变成一些纯粹的私人问题比如一些人可以跳一英尺之类的私人讨论”。下面是它是如何工作的,“很多人其实并不真正”读LKML;他们往往自动归档,但随后作出反应,某些关键字或更多的时候,主要负责人参与讨论。”
Torvalds一直“,”它也作为一种归档的概念行为,“,使人们可以参考稍后,和很多的bug报告最终被发现他们的谷歌搜索。如果有人提出了一个问题,它可能会被一些奇怪的硬件问题,但如果谷歌显示,它的被提出,在过去几次对LKML开始,以表明,它可能是模糊的,但它的肯定不是一些完全孤立的问题。 “
“因此,我认为LKML真的是很重要的,但没有,这不是我们如何留人”上轨道“,”他说。“所有的开发人员往往是相当自我的激励,而且它们都具有健全的思想(以及核心的定义做 - 因为这是他们如何成为核心开发人员,表明他们有良好的口感和高动机,)。仅仅是因为,“公共部分”的讨论仍然是重要的,重要的是,即使在实践中往往是一个非常小的核心在任何特定的讨论。事情根本不同的,当它们发生在开放,得出结论:“托沃兹。
委托和保持理智
有一次,Linux是一个独立项目 。现在有数以千计的提交者和贡献者。我接着问:“多少钱委托你这几天?如何委托给任何想法保持一个人的理智和工作流的流动呢? “
“如果有一件事情我已经学会了,那就是你要学会放手,而不是试图控制人民和代码的,”他说。“如果你不相信别人能做到依靠自己,而你的监督,你还不如放弃作为一个维护者。”
他继续说,“是的,我经常在小细节,但它不是因为我不信任的人或不委托。这是因为一些小的细节最终被提起我。无论是它的一个错误,他们是几乎所有,得到忽视只是愚蠢的小细节,或它的只是一些工作流程的问题,困扰我(喜欢我的开发商名称不正确的日志较早今天一分的维护者抱怨)。“
尽管如此,Torvalds的说,“这些细节都被偶然的细节,而不是那种”过度开发的肩膀,检查他的一切 。“ 我相信子维护者,做正确的事情99%的时间。然后,很偶然,我最后大声抱怨什么。“说,例如,如何开放源码的GNOME桌面,而不是前进 。
所以,你有它。这是一些托沃兹没有它的方式。而且,如果你认为你知道更好,问自己:我创建了一个世界级的操作系统,运行大多数超级计算机 ,股票交流,像谷歌网站吗?如果您的回答没有,我重新读他的答案,并采取一个长期的艰苦思考,你如何管理自己的项目。