Jeff Atwood:软件工程已死?
原文作者:Jeff Atwood
2009年7月,Tom DeMarco在《IEEE Software》杂志上发表了一篇论文,题为“Software Engineering: An Idea Whose Time Has Come And Gone?”(软件工程:这个概念已经过时了?)。读后让我大跌眼镜。你也来看看吧:
我早年写过一本关于软件度量的书,书名叫《Controlling Software Projects: Management, Measurement, and Estimates》(由Prentice Hall出版社于1986年出版)。很多初露头角的软件工程师在量化工作和规划项目时都把那本书奉为圭璧。如今我在反思之中,我想知道:书里的建议在那时候正确吗?现在还有用吗?我现在仍然相信“度量”是任何成功的软件开发活动所必需的吗?我的回答全部是否定的。
我慢慢地得出这样的结论:软件工程——这个概念流行过,但现在已经过时了。
无论是现在还是将来,软件开发总是带有点试验性质的。尽管实际的软件构造未必是试验,但它的概念却是。这是我们应该专注的地方。我们原本也应该一直专注在这方面。
读过上面这些文字之后,如果你的脑袋瞬间爆炸了,不必紧张,我也一样。为了缓解你的头痛,我强烈建议你完整地读一下那篇论文。文章不长,也就两页。(点击这里下载PDF文件,英文。或阅读中文版)
要知道,Tom DeMarco(汤姆·迪马可)可是软件行业里最受尊敬的权威人物之一。他与Timothy Lister合著了具有开创性并且辉煌一时的《人件》,还有很多其他堪称经典的软件项目管理方面的图书,比如《与熊共舞》。对于一个像Tom这样德高望重的人,他居然站出来声嘶力竭地喊着“软件工程已死”……我们也只有瞠目结舌的份了……
这应该算是一件大事吧!让人惊慌失措的大事!
然而,它同时也是一种解脱,就好比是(举重运动员)从胸口挺起了一个决定性的重量。现在我可以公开承认了,作为一名软件开发者,在过去5~ 10年的职业生涯旅途中,我慢慢地认识到:我们所做的是技艺,而不是工程。我可以骄傲地说这句话了!我已经释然,对自己没有丝毫的怀疑!
最近,Joel Spolsky(我的创业合作伙伴)似乎也有相似的顿悟。他在“The Unproven Path”(未经证实的方法)一文中这么写道:
关于如何开发软件,我内心深处一直坚持着一些想法。但是,我几乎从未对别人说过。事实证明,没说是明智的,因为当组织成形时,几乎所有这些原则都用不上。
这是为什么呢?我仍然在试图解开其中的谜。在业务和软件工程方面,我曾抛弃了7条承载着自己信念的原则,结果却安然无恙。那么,是我过去太过于谨慎了吗?也许是因为那只是一个对我来说不太重要的项目(不是我的主营业务),所以我才愿意“鲁莽”一些。但那次经历却很好地给我提了一个醒:在做一个全新的东西时(并且你不知道将来何去何从),把一些条条框框抛之脑后并无大碍。
没错,需要的话,我可以在软件工程方面为你正在做的项目提出很多防御性的告诫:项目类型(项目要完成的使命当然是很关键的)、规模(自然要向Google看齐)、目标受众(显然每天要有几百万用户)等等。
但是,我不想那么做。
Tom DeMarco似乎在说(最起码,我想这么说):在软件开发项目上,控制其实是一种错觉。如果你想推进你的项目,唯一可靠的方法是培养起一种高超的软件技艺和职业精神。
每天都兢兢业业地磨练着手艺的那些程序猿和程序媛,他们对创造充满了热情,做着一些对他们自己很重要的事情(或许还能通过某种微妙的方式改变世界)——这些人和他们的项目才会最终取得成功。
其他的一切都毫不相干!
Jeff Atwood:软件工程已死?相关推荐
- 来篇文章:Martin Fowler的设计已死中文版
设计已死? 英文原文版权由Martin Fowler拥有 Original text is copyrighted by Martin Fowler Martin Fowler Chief Scien ...
- Jeff Atwood倾情推荐——程序员必读之书
英文版:<Code Complete 2> 中文版:<代码大全(第二版)> 作者:Steve McConnell 译者:金戈 汤凌 陈硕 张菲 出版社:电子工业出版社 出 ...
- 关于“VCL已死、RAD已死”答读者问
这两天在上海参加erlang的大会,来不及写第五小节,先回复一些评论吧.其中最主要的是nanyu的一组评论,大概有三.四篇,写到了不少东西.下面一一道来. 有关评论请参见: http://blog.c ...
- Martin Fowler:设计已死
设计已死? 英文原文版权由Martin Fowler拥有 Original text is copyrighted by Martin Fowler Martin Fowler Chief Scien ...
- Martin Fowler:设计已死?
设计已死? 英文原文版权由Martin Fowler拥有 Original text is copyrighted by Martin Fowler Martin Fowler Chief Scien ...
- python程序如何执行死刑图片_如何判断对象已死
已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...
- 百度“已死”,百度“真香”
骂百度已然成为互联网的政治正确了. 10w+阅读量刷屏的一篇<搜索引擎百度已死>,和后续到达的作战大队<百度搜索引擎死了吗?><谁杀死了百度搜索?><百度双手 ...
- 批着DDD,实则是以数据库为中心------数据库已死
现代软件和以往传统软件主要区别在于:现代软件基于internet互联网技术,运行于开放的网络环境,不象传统软件只是运行在封闭的局域网,运行环境的区别就决定了软件操作用户的多少,在一个开放互联网环境, ...
- NLP领域的ImageNet时代:词嵌入已死,语言模型当立
NLP领域的ImageNet时代:词嵌入已死,语言模型当立 https://www.toutiao.com/a6742137243487437316/ NLP领域的ImageNet时代:词嵌入已死,语 ...
- 英特尔:谁说深度学习已死?AI任务挑大梁的是CPU,不是GPU
https://mp.weixin.qq.com/s/9GLT6SkfiiIFVNlVtCIFhg 英特尔副总裁在受访时表示,"深度学习已死"这类报道完全属于夸大其词,深度学习是A ...
最新文章
- Survey | 多任务学习综述
- 构建linux下的web服务器
- c语言程序 实现简单计算器功能,C语言实现简单计算器小项目
- HBase总结(九)Bloom Filter概念和原理
- struts2 Eclipse 中集成strust2开发框架实例
- LeetCode--96. 不同的二叉搜索树(动态规划)
- java server2008_在windows server 2008下搭建简单的java学习环境
- scala List入门到熟悉
- 免费下载收费音乐教程,亲测有效
- iPhone硬件拆机解锁方法 十步!
- javascript的数组和数组元素的遍历,实现全国省份和城市一览表
- 各版本iphone重要参数
- Centos 7 制作Oracle 12c Docker Images
- 0517零散问题整理
- 由浅入深MFC学习摘记--第三部分
- vimdiff解决git merge冲突
- python 绘图如何画螺旋圈_如何画出python螺旋线
- axios中put的参数怎么传_iOS开发之如何通过PUT请求上传数据
- 使用HTML语言和CSS开发商业站点
- 【C语言】英文文章出现次数最多的单词
热门文章
- web前端培训:JQuery实现键盘打字游戏
- 中国移动计算机类行测题目,中国移动笔试题:行测巧用十字交叉法解题
- Spring 集成mybatis 3.几之后,打印sql语句到控制台
- 机器学习 周志华-西瓜书 全文内容分享
- 串口通信USART的波特率误差计算GD32、STM32
- c#程序设计实训报告心得体会_c#学习心得体会范文_c#程序设计心得体会
- 在ubuntu下安装Dynamips
- 《Java小游戏实现》:贪吃蛇
- FreeTextBox3.1.6使用说明(整理)
- Windows 2003 server下载