原文出处: linuxtoday   译文出处:CSDN

// 伯乐在线转注:英文原文写于 2011 年

导读:没有人比Linus Torvalds更了解软件开发项目管理中的酸甜苦辣了。作为Linux的创建者,Torvalds在过去二十年指导了数以千计的开发者共同改进开源操作系统内核。

文章内容如下:

Linus Torvalds说,有两件事,世界上大都数人,无论是独立开发者还是公司级别的开发团队,都有普遍的错误认知。

其一:“大都数人认为可以把事情丢给其他人,让他们帮忙。在你公开你的想法后,你得假设自己一个人要干完全部的活,然后你在网上征求人们的意见,你应该询问自己该干什么,而不是他们该干什么。或许开始他们会偶尔帮助你解决一些实际问题,但是,必须从一开始就告诉自己这份工作只有你一个人负责,并且做好完成它的准备。”

如果你一开始就认为全世界的人们都会联合起来为你的项目工作,一起创造一个更美好的世界,那么你可能不会走得很远。

其二:“人们往往认为自己写的代码是最重要的东西,而事实不是这样。即使你编写了100%的代码;即使你是世界上最好的程序员并且从来不需要任何帮助。然而最重要的东西也不是你写的代码,而是代码的用户。代码本身不重要;只有当用户真正用到它的时候项目才是有用的。之所以提到这一点是因为它不只是一个程序员的问题,我见过一些公司把追求完美的程序当做事情的全部。”

Torvalds就第二个问题上继续展开言论,他说:“这就是为什么Linux内核团队无法容忍这种‘脱离本质’的东西。比如,为了“修复”某个问题而打破原来的用户体验绝对是错误的观点;千万不要这么干。如果你破坏了用户体验,或许你觉得是在修复问题,但你就犯了刚才说到的第二个错误——你以为代码质量比用户重要,大错特错。”

Torvalds最后总结道:“有太多的项目将代码质量置于用户之上,结果两边都不讨好,而且还不肯承认错误,因为他们觉得是在“修复”问题,并且一点都没错。”

关于开发工具的重要性

关于SCM(Software Configuration Management软件配置管理系统 )工具,比如,以Git版本控制系统的问题为例,他回答说:“我不认为工具是最重要的。”

“现在重要的是你的项目是否有一个好的工作流程,工具当然能够启到帮助的作用,”他说,“但是,大多数的项目其实并不是必须要使用这些工具。许多项目其实并没有那么多改动,多到必须要在他们整个工作流程中使用这些工具;如果你在每个release中只有几百个补丁,你可以随便怎么维护他们,完全手动也不是问题。”

当然,Linux就绝对不是同一个层次的了,“对于内核,我们每个release都有成千上万个补丁,而且基本上每三个月就有一个release,所以对我们来说SCM工具就尤其重要了。”他说,“但我仍然不认为这所有大的错误是因为最初几年开发的目标球和补丁,这是一个小得多的项目,而且直到很多年后是因为缺乏管理工具才显现出来。”

他还说,“一些工具积极鼓励工作流程,我认为CVS(Concurrent Versions System并发版本控制系统)”例如已经影响了很多项目,使他们有了一个概念“承诺团体”,

Torvalds继续说,“我个人认为tar-balls和补丁相比他来说要好得多,因为他们使开发者都是“平等”的。而且你不会遇到这种情况:一些开发者有委员权限而其他的人都是二级权限。有时全部人都只有二等权限要比有人有特权要好得多。”(注:Torvalds很熟悉CVS很而且非常讨厌有很多年时间了。就如他在Google Talk 2007所说的,“我讨厌带着许可证的CVS”。)Torvalds还说:“比工具更重要的是人,是维护者和他们的思想。”

如何把大家都保持在正轨上

现在的人们是怎么一起工作的呢?我向Torvalds提问了关于正在实施中的LKML(Linux Kernel Mailing List ,用来将讨论话题转发给各位开发者。)他回答说:“我认为过去在LKML上发生的讨论比现在的多。LKML中的signal-to-noise和纯信息量表明大多数开发者没有时间仔细地去读LKML——最多他们会扫一下标题栏。所以,现在我主张大多数开发者都在独自完成工作,然后他们会在一个大的开发者范围中发送email告之对方是如何完成的”。

“并不是说LKML不重要,而是说LKML已经成为了独立开发者的公共纽带。所以事情最后会变成这样:你其实只有4-5个人一同参与一个讨论,但是LKML会转发并且让其他人有机会能够参加进来,而不是让他成为一个封闭的讨论。”

接下来说说它怎么工作的,“大多数人其实不阅读LKML,他们经常让它自动存档,只对某几个关键词或关键人物参与的话题感兴趣。”它其实有点类似于某种存档机制。人们可以在日后查阅它,而且很多Bug可以通过Google找到LKML中以前报道的记录。如果某人提出了一个问题,它可能只是个别硬件问题,但如果Google后发现在LKML中已经被提交过几次了,那这个问题原因会有点不确定,但必然不是个案。”

“所以我认为LKML非常重要,但我们不是通过它来保持人们走在正轨上的。所有的开发者都非常主动积极,而且他们都有非常好的意见和想法(核心成员之所以是核心成员因为他们的自我定位)。LKML很重要,因为这是公开讨论的,即使实际中参与某些特定问题的只有特定的一小组人。在开源项目中事情就是和其他不一样。”Torvalds总结道。

关于信任,托付和保持清醒

曾经Linux是一个个人项目。现在他有成千上万的提交者和贡献者。接下来我问道:“现在有多少工作你是交付给其他人做的?对于如何分配才能保持人们思路清晰和遵循工作流程你有什么想法?”

“如果我从中学到了什么的话,那就是你必须学会放手,不要试图控制别人和他们的代码。如果你不信任别人,而一定要监视着他们的话,还是早点放弃这个负责人位置吧。”

他说:“是的,我经常会跟别人纠结一些细节,但不是因为我不信任别人或不愿分配给他们权限。而是因为一些小错误最后会闹到我头上。要么是个Bug(而且都是一些平时忽视的小错误),要么是一些把我弄烦了的工作流程问题(就像今天早些时候我向一个分负责人抱怨开发者的名字显示不正常)。”

Torvalds还说,“你只能偶尔关注一下细节,而不是老是站在开发者后面监视他、检查他写的每一句代码。我相信分负责人做的事99%都是没问题的,然后偶尔我会大声抱怨一些东西。”比如说GNOME桌面系统正在怎么改进,或者根本没有改进。

以上就是全部内容了。这就是Torvalds怎么做的,如果你觉得你比他好,先问问自己:有创造过一个在大多数超级计算机、股票交易和类似于Google这样的网站上运行的世界级的操作系统吗?如果你的答案是没有,如果我是你,我会重新读一遍他的答案并且好好想想自己是怎么维护项目的。

Linus 谈软件开发管理经验相关推荐

  1. Linus 谈软件开发管理经验(转载)

    转注:英文原文写于 2011 年 导读:没有人比Linus Torvalds更了解软件开发项目管理中的酸甜苦辣了.作为Linux的创建者,Torvalds在过去二十年指导了数以千计的开发者共同改进开源 ...

  2. 浅谈软件开发工具CASE在软件项目开发中发挥的作用认识

    浅谈软件开发工具CASE在软件项目开发中发挥的作用认识 内容摘要:阐述了CASE工具作为 一种开发环境在软件项目开发中所起到的开发及管理作用.CASE工具实际上是把原先由手工完成的开发过程转变为以自动 ...

  3. java学习方法-浅谈软件开发的神速进步

    中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有葵花宝典才是最厉害的,也只有掌握了葵花宝典,才能称为"不败". 1浅谈软件开发的神速进步 1.1什么才是软件开发的葵花 ...

  4. 从足球赛谈软件开发!!!!

    昨晚看切尔西的比赛的时候突然联想到了软件开发,呵呵,来看足球赛: 1.根据比赛双方的实力.主客场.天气等等各方面因素来比赛双方都会制定自己的目标,战平.胜或别的目标. 2.需要在有限的时间内(90分钟 ...

  5. api 二次 开发 禅道_浅谈-软件开发流程

    先直接放出我对软件开发的相关人员职责和流程: 图一:软件开发的相关人员职责 以下是截屏的开发流程泳道图: 横轴是相关开发人员的工作模块:纵轴是从上至下开发时序周期. 图二:软件开发的流程图 从职责图和 ...

  6. 浅谈软件开发架构模式

    本文作者将介绍他对于软件开发架构模式的一些思考和实践. 背景和问题 我个人平时会比较慎用"架构"这个词 一方面是觉得业界有很多架构大师和架构模式,而我的认知和实践有限: 另一方面是 ...

  7. 手机java软件_浅谈软件开发就业前景

    ​ 我国信息化人才培养还处于发展阶段,导致社会实际需求人才基数远远大于信息化人才的培养基数,使得数以万计的中小企业急需全面系统掌握软件开发基础技能与知识的软件工程师.目前对软件已达20万并且以每年20 ...

  8. 谈软件开发项目管理之需求变更

    在软件开发过程中需求的变更会给开发带来不确定性,但只要把需求变更作为重点.难点小心加以控制,软件开发的进度.成本和质量也就有了"安全"的基础.变化并不是人们最害怕的,最怕的是跟不上 ...

  9. 浅谈软件开发项目的质量控制

    一.引言 J.M.Juran认为质量控制是一个常规的过程,通过它度量实际的质量性能并与标准比较,当出现差异时采取行动.由此,DonaldReifer 给出软件质量控制的定义:软件质量控制是一系列验证活 ...

  10. 谈软件开发工具的选择

    孙志永.蔡茂(转载自中国计算机报) 2002年08月19日   我国的软件开发已经逐步从原来的手工作坊式发展到了软件工程的阶段.同时,软件开发本身也在不断发展,已从"算法+数据结构=程序&q ...

最新文章

  1. cas server 配置
  2. 两周后上线,老板你在开玩笑吗?
  3. UML Distilled 3rd 学习笔记
  4. 物料分类账业务配置及操作手册
  5. 飞鸽传书最新源码类都要复杂的多
  6. gradle错误 dependency.systemPath‘ for com.alibaba:jconsole:jar must specify an absolute path
  7. gx works2 版本号_GX Works2 64位
  8. Pascal VOC 2007和2012数据集下载地址(不需国外,速度依旧让你感动)
  9. matlab simulink光伏发电系统MPPT算法
  10. 局域网计算机如何传输文件,强烈推荐电脑同一个局域网传输文件的图文教程
  11. java字符串替换空格_特殊的空格(Java无法替换字符串中的空格)
  12. 修改window本地hosts文件,修改域名指向
  13. chmod 赋权所有_linux 命令 赋权 chmod
  14. 如何度过有用的每一天
  15. poj 2152 Fire - 经典树形dp
  16. PMP章节练习(第六章:项目进度管理)
  17. 前端基础之Html、CSS、JavaScript、JQuery、Ajax
  18. 计算机组成与系统结构课程设计报告
  19. LyNews『凌云新闻』 - 在JAVA文件中获取该项目的相对路径
  20. 论文笔记----Selective Transfer Learning for EEG-Based Drowsiness Detection

热门文章

  1. Atitit onvif 协议截图 getSnapshotUri 使用java
  2. Atitit.500 503 404错误处理最佳实践oak
  3. paip.提升性能---首页性能加快解决方案
  4. python: Requests库的一些高级特性
  5. 【人脸识别】基于matlab GUI形态学教室人数统计(带面板)【含Matlab源码 1703期】
  6. 【虹膜识别】基于matlab GUI形态学虹膜检测【含Matlab源码 959期】
  7. 【声源定位】基于matlab阵列流形矩阵信号显示【含Matlab源码 549期】
  8. ue4 如何获取端口号_UE4编辑器开发基础
  9. ai人工智能可以干什么_人工智能可以解决我的业务问题吗?
  10. spring的九大组件