原文作者: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. jquery easyui combox不能编辑只能选择

    $('#tts').combobox({ editable:false });

  2. web性能优化之--合理使用http缓存和localStorage做资源缓存

    一.前言 开始先扯点别的: 估计很多前端er的同学应该遇到过:在旧项目中添加新的功能模块.或者修改一些静态文件时候,当代码部署到线上之后,需求方验收OK,此时你送了一口气,当你准备开始得意于自己的ma ...

  3. chrome下positon:fixed无效或抖动的解决办法

    先来看一下我们要实现的效果 我想这种效果大家都有实现过,或者说吸顶的效果和这差不多 页面结构 js代码如下 /*吸顶*/ var $child = $("#child_3"); v ...

  4. KVM 时钟分析

    1. 关于GToffset: KVM的guset时钟为gc0_COUNT 其中:mfc0 gc0_count = c0_COUNT+GToffset vcpu_run 以及 vcpu_reenter的 ...

  5. 焦点轮播图(tab轮播)

    主要有两部分:1.列表导航(小图片) 2.展示区(大图片) 页面布局: HTML部分:    <div class="s_conC">                  ...

  6. Docker容器的运用

    Docker 利用容器来运行应用. 容器是从镜像创建的运行实例.它可以被启动.开始.停止.删除.每个容器都是相互隔离的.保证安全的平台. 可以把容器看做是一个简易版的 Linux 环境(包括root用 ...

  7. 硬盘存储计量单位KB、MB、GB大小换算

    一. 预备知识 1. bit与byte 1. bit(简记为 b) 1 bit = 0 or 1 = one binary 2. byte(简记为 B) 1 byte = 8 bits 1字节,8个二 ...

  8. 六星经典CSAPP-笔记(11)网络编程

    六星经典CSAPP-笔记(11)网络编程 参照<深入理解计算机系统>简单学习了下Unix/Linux的网络编程基础知识,进一步深入学习Linux网络编程和TCP/IP协议还得参考Steve ...

  9. 计算机网络之文件传送协议FTP

    FTP 文件传送协议FTP(File Transfer Protocol)是因特网上使用最广泛的文件传送协议. FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限.FTP ...

  10. PGM:贝叶斯网的参数估计2

    http://blog.csdn.net/pipisorry/article/details/52599321 没时间看了,下次再看... 具有共享参数的学习模型 全局参数共享 局部参数共享 具有 共 ...