原文作者:Jeff Atwood

2009年7月,Tom DeMarco在《IEEE Software》杂志上发表了一篇论文,题为“Software Engineering: An Idea Whose Time Has Come And Gone?”(软件工程:这个概念已经过时了?)。读后让我大跌眼镜。你也来看看吧:

年出版)。很多初露头角的软件工程师在量化工作和规划项目时都把那本书奉为圭璧。如今我在反思之中,我想知道:书里的建议在那时候正确吗?现在还有用吗?我现在仍然相信“度量”是任何成功的软件开发活动所必需的吗?我的回答全部是否定的。

我慢慢地得出这样的结论:软件工程——这个概念流行过,但现在已经过时了

无论是现在还是将来,软件开发总是带有点试验性质的。尽管实际的软件构造未必是试验,但它的概念却是。这是我们应该专注的地方。我们原本也应该一直专注在这方面。

读过上面这些文字之后,如果你的脑袋瞬间爆炸了,不必紧张,我也一样。为了缓解你的头痛,我强烈建议你完整地读一下那篇论文。文章不长,也就两页。(点击这里下载PDF文件,英文或阅读中文版

要知道,Tom DeMarco(汤姆·迪马可)可是软件行业里最受尊敬的权威人物之一。他与Timothy Lister合著了具有开创性并且辉煌一时的《人件》,还有很多其他堪称经典的软件项目管理方面的图书,比如《与熊共舞》。对于一个像Tom这样德高望重的人,他居然站出来声嘶力竭地喊着“软件工程已死”……我们也只有瞠目结舌的份了……

这应该算是一件大事吧!让人惊慌失措的大事!

然而,它同时也是一种解脱,就好比是(举重运动员)从胸口挺起了一个决定性的重量。现在我可以公开承认了,作为一名软件开发者,在过去5~ 10年的职业生涯旅途中,我慢慢地认识到:我们所做的是技艺,而不是工程。我可以骄傲地说这句话了!我已经释然,对自己没有丝毫的怀疑!

最近,Joel Spolsky(我的创业合作伙伴)似乎也有相似的顿悟。他在“The Unproven Path”(未经证实的方法)一文中这么写道:

关于如何开发软件,我内心深处一直坚持着一些想法。但是,我几乎从未对别人说过。事实证明,没说是明智的,因为当组织成形时,几乎所有这些原则都用不上。

这是为什么呢?我仍然在试图解开其中的谜。在业务和软件工程方面,我曾抛弃了7条承载着自己信念的原则,结果却安然无恙。那么,是我过去太过于谨慎了吗?也许是因为那只是一个对我来说不太重要的项目(不是我的主营业务),所以我才愿意“鲁莽”一些。但那次经历却很好地给我提了一个醒:在做一个全新的东西时(并且你不知道将来何去何从),把一些条条框框抛之脑后并无大碍。

没错,需要的话,我可以在软件工程方面为你正在做的项目提出很多防御性的告诫:项目类型(项目要完成的使命当然是很关键的)、规模(自然要向Google看齐)、目标受众(显然每天要有几百万用户)等等。

但是,我不想那么做。

Tom DeMarco似乎在说(最起码,我想这么说):在软件开发项目上,控制其实是一种错觉。如果你想推进你的项目,唯一可靠的方法是培养起一种高超的软件技艺和职业精神。

每天都兢兢业业地磨练着手艺的那些程序猿和程序媛,他们对创造充满了热情,做着一些对他们自己很重要的事情(或许还能通过某种微妙的方式改变世界)——这些人和他们的项目才会最终取得成功。

其他的一切都毫不相干!

Jeff Atwood:软件工程已死?的更多相关文章

  1. 转:Jeff Atwood倾情推荐——程序员必读之书

    Jeff Atwood倾情推荐——程序员必读之书 英文版:<Code Complete 2>中文版:<代码大全(第二版)>作者:Steve McConnell译者:金戈  汤凌 ...

  2. Jeff Atwood倾情推荐——程序员必读之书

    英文版:<Code Complete 2>中文版:<代码大全(第二版)>作者:Steve McConnell译者:金戈  汤凌  陈硕  张菲出版社:电子工业出版社出版日期:2 ...

  3. wp已死,metro是罪魁祸首!

    1.这篇文章肯定会有类似这样的评论:“我就是喜欢wp,我就是喜欢metro,我就是软粉“等类似的信仰论者发表的评论. 2.2014年我写过一篇文章,windows phone如何才能在中国翻身? 我现 ...

  4. 泰泽新闻:英特尔三星双否认泰泽Tizen系统已死

    7月8日 据媒体TizenExperts报道,关于“Tizen系统跳票”的传闻已经遭到了英特尔和三星否认. 此前传闻三星自行研制的智能手机Tizen操作系统流产,但如今已经遭到了官方的否认. 英特尔三 ...

  5. Android首席设计师宣称移动概念已死,开发人员应该面向屏幕编写应用而非移动

    腾讯科技对Android首席设计师Duarte"移动已死"訪谈内容的翻译错得离谱,被到处转载,误人视听. 而要真正理解Duarte所想表达的含义,须要深入了解互联网前沿设计理念以及 ...

  6. MVC模式已死

    MVC模式:Model模型 View试图 Control控制器,是目前主流模式,被当作服务器软件入门基本模式学习和掌握,主流框架Struts 1/2 JSF Wicket基本都顺理成章支持MVC模式. ...

  7. 王垠:Lisp 已死,Lisp 万岁!

    王垠:Lisp 已死,Lisp 万岁!_IT新闻_博客园 王垠:Lisp 已死,Lisp 万岁!

  8. JVM学习记录-对象已死吗

    前言 先来回顾一下,在jvm运行时数据区,分为两部分,一个部分是线程共享区,主要包括堆和方法区,另一部是线程私有区分包括本地方法栈,虚拟机栈和程序计数器.在线程私有部分的三个区域是随着线程生和灭的.栈 ...

  9. [转载]致创业者:APP已死 服务永生

    前几日,有位创业者和我讲他在带领团队做一个将爱踢球的人集中在一起的App,我告诉他你的创业方向错了.原因在于你的目的是要为爱踢球的人提供服务,而你现在却在竭尽全力的做App,你应该做的是设计你为爱踢球 ...

随机推荐

  1. 文件服务器的详细配置之共享权限与NTFS权限的设置

       文件服务器的详细配置之共享权限与NTFS权限的设置    在大中型企业中,一般而言所谓文件服务器是指共享文件夹,即对共享权限与NTFS权限的设置!当然这也是我们搞网络者必须会的,是必经之路!我旨 ...

  2. textarea不能使用maxlength

    知道文本框有个maxlength属性,有次开发项目中使用了textarea标签,没去看文档,直接加了maxlength属性,且有效果没有报错,喜滋滋的用了,结果没两天就测试出了bug 问题描述:文本域 ...

  3. c++ 文件操作详解

    C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstre ...

  4. SAS中常见的数组函数

    SAS中常见的数组函数有: dim dimk hbound hboundk lbound lboundk 数组函数计萁数组的维数.上下界,有利于写出可移植的程序,数组函数包括:dim(x) 求数组x第 ...

  5. 打印n阶菱形

    #打印n阶菱形 def print_rhombus(n): #打印正三角 for i in range(1,n+1): x_num = 2*i-1 #每一层的*数量 space_num = n - i ...

  6. reload(sys)后print失效问题解决

    python版本: python2.7.6 #查看python默认编码格式 >>> import sys >>> print sys.getdefaultencod ...

  7. async/await 的一些知识

    博文 Don't Block on Async Code What is the purpose of "return await" in C#? Any difference b ...

  8. 04_Struts2标签

    1.通用标签: property标签: 用来输出值栈属性的值 如果value属性没有给出,ValueStack值栈栈顶对象的值被输出 许多情况下,EL表达式可以提供更简洁的语法 url标签: url方 ...

  9. MacOS下postgresql数据库密码的那些事

    如果你是第一次玩postgresql数据库,你会发现你给role或者user明明设置了密码,但在登录的时候毛都不用输入,直接就进去了,怎么那么爽快!? 虽然爽快,但貌似不该这样啊. 其实这些都和一个重 ...

  10. 解决HTML外部引用CSS文件不生效问题

    作为一个前端小白,鼓捣了几天前端..今天突然发现我深信不疑的东西,竟然出现了问题..就比如我在css目录下面写了一个css样式文档:style.css.这时里面只有一句话: body { backgr ...