原文作者: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. JSON概述

    错误理解:         一直以为JSON就是对象,拥有跟js对象类似的特征:{key:value}形式, 以至于在自己的思维定式中就出现了一种很可怕的情景:居然不知道怎么去解释习以为常的json是 ...

  2. C语言 分支与循环 递推思想 穷举 流程的转移控制

    条件语句 开关控制语句(SWITCH语句) 象坐电梯一样,break是按的楼层,不加break则会一直执行下去. 上面程序有细节BUG,边界测试输入-5,105时由于整除会得到错误的结果. 解决方法: ...

  3. Tomcat性能调优-JVM监控与调优

    参数设置 在Java虚拟机的参数中,有3种表示方法用"ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数: 标准参数(-),所有 ...

  4. NVIDIA Titan Xp Star Wars Collector's Edition显卡深度学习工作站 + Ubuntu17.10 + Tensorflow-gpu + Anaconda3 + Python 3.6 设置

    为了能让 Tensorflow GPU 版本跑起来,我折腾了1个多星期. 总体参照 https://zhuanlan.zhihu.com/p/32118549 ,安装成功,但还是有不足的地方, 在此记 ...

  5. python学习之路前端-CSS

    CSS概述 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style ...

  6. 浅析JS异步执行机制

    前言 JS异步执行机制具有非常重要的地位,尤其体现在回调函数和事件等方面.本文将针对JS异步执行机制进行一个简单的分析. 从一份代码讲起 下面是两个经典的JS定时执行函数,这两个函数的区别相信对JS有 ...

  7. 使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)

    1.线性规划模型: 2.使用python scipy.optimize linprog求解模型最优解: 在这里我们用到scipy中的linprog进行求解,linprog的用法见https://doc ...

  8. Go语言-通道类型

    通道(Channel)是Go语言中一种非常独特的数据结构.它可用于在不同Goroutine之间传递类型化的数据,并且是并发安全的.相比之下,我们之前介绍的那些数据类型都不是并发安全的.这一点需要特别注 ...

  9. Do a web framework ourselves

    step 1: from wsgiref.simple_server import make_server def application(environ, start_response): star ...

  10. 新版Azure CDN HTTPS加速服务正式上线

    随着网络安全问题日益得到全民重视,HTTPS网络访问协议在互联网访问中得到了广泛的使用.Azure CDN也早在一年前的2015年4月上线了HTTPS加速服务.该加速服务上线一年以来,用户使用量逐渐增 ...