惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
L
LINUX DO - 最新话题
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
S
Schneier on Security
C
Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
P
Privacy & Cybersecurity Law Blog
S
Security Archives - TechRepublic
Scott Helme
Scott Helme
PCI Perspectives
PCI Perspectives
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Attack and Defense Labs
Attack and Defense Labs
Hacker News: Ask HN
Hacker News: Ask HN
S
Security @ Cisco Blogs
S
Secure Thoughts
C
CERT Recently Published Vulnerability Notes
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Cybersecurity and Infrastructure Security Agency CISA
The Last Watchdog
The Last Watchdog
T
Tenable Blog
SecWiki News
SecWiki News
T
The Exploit Database - CXSecurity.com
Google Online Security Blog
Google Online Security Blog
N
News and Events Feed by Topic
E
Exploit-DB.com RSS Feed
H
Heimdal Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
L
LINUX DO - 热门话题
The Hacker News
The Hacker News
P
Privacy International News Feed
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 叶小钗
Cloudbric
Cloudbric
小众软件
小众软件
月光博客
月光博客
S
Securelist
V
V2EX - 技术
I
Intezer
M
MIT News - Artificial intelligence
aimingoo的专栏
aimingoo的专栏
S
Security Affairs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
F
Full Disclosure
A
About on SuperTechFans

博客园 - csdnexpert

美国程序员Peter:落脚北京只因这里的胡同 不是冷饭的冷饭:重评芙蓉姐姐现象 从早晨8点到晚上12点:WebEx合肥CTO的一天 转胡一虎Blog:父亲是我生命中的永恒 十年后,ELM会不会创造SOA现在所创造的局面? 来京两载,今日入清华读书,记一笔 传媒人应该具备的素质:批判 理性 正气 异国也有欢乐:北京Linux User Group探访实录 解释传统与敏捷方法最贴切的故事:大象与猴子 媒体的关键还是在于“软件”(人与规范) “Web开发之华山论剑”制作花絮与推荐导读 利用Radrails开发Ruby on Rails程序入门指南 “悲欣交集”的《开源大本营》制作之路 Alistair讲座的几点感受:纠正对敏捷方法的误解 在Eclipse里实现Ant自动编译 Java之父Gosling:Java没有受到PHP、Ruby或C#的威胁 PC-cillin 2005网络安全版使用简评 为什么刘彻会成为一代名君? 有选择才精彩 到哪里都是从零开始 可怜的微软与项目管理经典图解 从对一篇文章的修改看写作中的主题把握 谁说做软件测试没有好的前途?反驳之 《程序员》第9期:面对多核时代 我们以何应对? 8月的最后一天,我们开赴日照前线 Java Transaction Design Strategies推荐阅读 温总理对读书和思考问题的回答 共享软件大鳄来华抢人 是机遇还是挑战? 只有资源共享 中国共享软件才能突破性发展 又可以写Blog了 心里竟有点小小的激动 反射机制与系统耦合实例详解 事件驱动模型实例详解(Java篇) 开源的软件+商业的服务=? 封印的武士 测试Google的网络Office——Writely 《男人装》2006.05 未来技术杂志会走向哪里? 评评点点,程序员的2006世界杯 终于理解了我的作者 你知道的Java,和你不知道的Java [投票]3·15消费者日 《程序员》杂志之现状调查 三言二拍 Eclipse+Tomcat实现Mysql数据库连接 解决在Eclipse中配置JBoss、Tomcat等插件时遇到的问题 Log4j日志管理系统简单使用说明 IntelliJ IDEA使用技巧一览表 我喜欢使用IntelliJ Idea的25个理由 新帆起航,目标新大陆,感谢大家.... 6.26南汇校园行 面向对象的授课感想 集合框架的授课感想 反射在Java Swing中的应用 从杭州到北京 华为“新同事文化”:爱你的同事如兄弟 读书的快乐 闻听06年研究生收费有感 用创新产品支撑流体计算 杂拌儿:歪评百度牵手MTV、雅虎推出优化IE7现象 有钱的IBM 有争议的开发者大会 7月最后一天脑袋里的杂事 2006-IBM开发者大会现场组图与技术点(部分) 火锅论坛:要团队不要群体 中国软件的井喷时代 热烈庆祝CSDN 2006年中大会顺利闭幕 听同学谈有中国特色的软件营销模式 马云于“赢在中国”的一些讲话 看图识性格,蛮有意思的,累的时候玩一下:) 8月19日BBUG:电信技术开发经验分享与前景展望 Yahoo!新成立Python开发者中心 推动Python发展 也谈如何举办一场成功的技术讲座? 不满SourceForge服务 JRuby迁移至CodeHaus 看完《天狗》,我对社会充满了失望 从写Blog看技术人员成长6要素 再次慨叹生命的脆弱,我辈当惜之 急雨、泥土与睡觉 Google继续扩张,“魔爪”伸向服务器 感慨国内技术网站的环境 外包,从拧螺丝钉开始 史上最大规模的Agile开源项目Callisto发布 畅快、郁闷、遗憾 阿根廷,让我如何不爱你? 好笑的那几个小时 人是应该有长远目标的 庆祝阿根廷挺进八强 博客究竟能做什么? 对Web标准的9大误解 Slashdot热点一览 Blogger的痛心事——没人回贴 一个责任编辑的日记 你可以赚钱,但你赚不来时间 印度软件外包发展简记 那一段情系列之一:Fangfang 从《读库》关于“报人”文章感叹今日技术媒体 Mop研发团队:网络时代的技术偏执狂(全文) DevCo专家李维推荐的学习方法 英雄迟暮,一声长叹,且看10个可怜的技术天才 《程序员》7月刊即将上市 10大看点值得关注 把软件外包给中国,放心吗? 我也是个博客青苹果 DirectX 10后面的微软牛人们 参加IBM开发者大会前一天
商业项目应该向开源项目学习什么?
csdnexpert · 2007-12-17 · via 博客园 - csdnexpert

商业项目应该向开源项目学习什么?

Posted on 2007-12-17 11:26  csdnexpert  阅读(108)  评论()    收藏  举报

作者:Andrew Stellman和Jennifer,《GreeneApplied Software Project Management》一书作者

假如您是一个程序员,在业余时间参与一个非常成功的开源项目。一般情况下,您下班回家后会检查信箱,如果发现有个新补丁被提交到该项目的Subversion知识库中,您就会认真审核该补丁。您可能会在邮件列表中讨论一个设计中的新特性的主题中跟帖,投票反对该特性,因为您觉得它会导致严重的潜在设计问题,您还会提出更好的方法以解决该问题。通常,您坚信:人们不应提交有缺陷的版本;新的捐献者应该能够很轻松地安装该软件;要让尽可能多的人审查代码,这很重要。您不是孤军奋斗。许多大获成功的开源项目就是以这种方式运转的,而且绝大多数开源开发人员认为这就是项目运转的正确方式。

如果您的职业是专业开发人员,那么在工作中您可能曾尝试引入其中的一些良好实践。如果是这样,则下面这些托辞对您来说应该很熟悉:“我们要开展业务”;“这些想法在理想世界中可能行得通,但我们需要把目光放在我们的代码上”;“以那种方式完成项目可能很不错,但我们没有时间”。只将参与成功的开源软件项目作为一种业余爱好,而以专业方式对待更有挑战性的项目,这真让人沮丧。

当人们谈及开源软件的好处时,第一个想到的就是吸引“更多眼球”:当更多的人认真查看代码,软件就会更完善。开源项目严重依赖于项目各个方面的公开讨论:哪些特性将会(或不会)被写入软件?什么是实现这些特性的最佳方式?如何保持设计灵活性和可维护性以利于后续增补?问题出现时如何解决?出现争论时,通常会以民主和开放的方式进行解决。通常,任何人都可参加讨论,而不管他们的资历以及在项目中扮演何种角色。最成功的开源项目往往是那些最大限度地坚持这些思想的项目。

GIMP项目就是一个绝佳的案例。其开发人员网站为软件开发的每一个方面制定了指导原则。该原则描述了该项目如何管理以及如何协作。该站点说明了开发人员如何使用CVS、如何提交补丁以及如何创建文档。其中有一个用于报告、筛选、修补和验证缺陷的流程。还有一些用于创建、包装、测试和发布新版本的标准。有一些用于通告、文档或供开发人员、用户甚至网站自己使用的邮件列表。有一些教程和常见问题解答,用于帮助新的开发人员弄清工作方向以及学习GIMP团队的工作方式。GIMP项目中的任何事情都由团队规划并一致通过。任何新的开发人员都可回顾历史,并详尽了解决策内容、决策人以及决策原因。开发人员会尽量遵守这些规则。GIMP被公认为最成功和最受欢迎的开源项目并不奇怪。

但GIMP项目并非唯一的开源案例。我们见到的绝大多数成功的开源项目都是以这种方式运转的。有些项目(如GnuCash)在wiki上提供了所有此类信息。其他项目(如KDE)以Subversion知识库的方式驱动开发人员文档。它们的共同之处是,在开发人员希望与团队其他成员交流的各个方面都拥有广泛的文档和编写策略,且整个团队都全力支持对这些策略进行维护和强化。几乎每个成功的开源项目都有类似的网站以及来自团队的类似承诺。
然而在公司环境中,项目团队很少能像在成功的开源项目中那样拥有规划、归档或审查的权限。由于某种原因,一旦涉及预算或截止日期,我们这么多年来学到并成功应用于开源项目的所有经验似乎都不再有效。讨论哪些特性应该实现或不应实现这种情况似乎根本就不会发生。当公司开发人员试图召集人员讨论软件的设计,或者制定计划指导代码的添加或维护方式时,他就会听到这样的抱怨:“又要开会了”。实际上更糟的是,当开发人员设法使团队的每个成员都同意进行设计或代码审查时,他们的主管都会告诫他们:不要在这上面花太多时间,这暗示不知为何除编写代码之外的任何活动都成了无关紧要的。毕竟,他们只是程序员,他们的观点只对那些与软件构建直接相关的问题才显得重要。软件的开发方向应“由公司指定”,程序员只需专心编写代码。
但众所周知,公司项目通常不会产生高品质软件,甚至根本不会产生任何结果!许多重要研究多次说明了这一事实,例如Standish Group的年度CHAOS报告(最近发布的2004年度报告[PDF]指出,只有不到1/3的公司项目被认为是成功的。)

但是许多大规模的开源项目都成功了,而且是在困难得多的情况下获得成功的:没有预算;团队地理位置分散;全部是志愿人员,他们只承担自己喜欢的角色和责任,而且投入的时间也是随各人的意愿。在这样的条件下,即使纪律最严明的公司项目团队也会立即自行解体,那么开源项目团队是如何确保成功的呢?在我们的《Applied Software Project Management》(O'Reilly出版社2005年出版;参见我们的公司网站)一书中,我们介绍了5项基本原则,它们应该被应用于每个软件开发项目。遵守这些原则将有助于开发出成功的项目,而不管是项目是开源的还是专有的。这些原则是:
•永远实事求是
•信任团队
•审查一切,测试一切
•所有开发人员都是平等的
•完成项目的最快方式就是正确地开发项目

每项原则都很重要,但在公司环境中通常都会被忽视,这就严重影响了项目的成功。公司项目中的一些惯例违反了这些原则。相较之下,成功的开源项目非常善于通过采用经过时间验证的、被人们广为接受的协作实践或方法,将这些原则付诸实践。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=651219