我不是一个工程师——我是一个软件开发者

简介: 导读:本文是从《I am not an engineer - I’m a software developer》这篇文章翻译而来。译文来自外刊IT评论《我不是一个工程师——我是一个软件开发者》。内容如下:在《Object-Oriented Software Development Using J...

导读:本文是从《I am not an engineer - I’m a software developer》这篇文章翻译而来。译文来自外刊IT评论《我不是一个工程师——我是一个软件开发者》。

内容如下:

在《Object-Oriented Software Development Using Java》这本书的导言部分,8-9页上的“软件开发过程是工程化的过程吗?”一节中,Xiaoping Jia写道:

…对于“软件工程”这个词的精确定义仍然没有多少共识,就连使用“软件工程师”作为一个专业职称的正当性也受到质疑…

工程(engineering)和工艺(craftsmanship)之间的一个关键区别就是,工程的成功可以通过事前对设计的科学分析而得到保证,而工艺的成功却是通过当前的和之前的制作上的试验和失误获得的…

在某些非常成熟的工程化领域里,失败、有时甚至是灾难难以杜绝…但相同的失败却很少会重复发生…而对于软件开发,相同类型的失败比比皆是。

成熟的工程化领域里的成功很大的原因在于对知识的规范和积累,重复利用以前的解决方案…对于软件开发,尽管有积累的大量的经验和设计技术,却很少有被系统化的整理过的… 

所以,软件开发是一项跟传统的工程方法有很大的不同的活动。充其量也只是一个不成熟的工程学科。软件开发如果想成为真正的工程方法,软件开发人员必须要机械的去执行设计分析,确保已知的失误不会重现,把设计知识系统化。

我不是一个工程师。我是一个软件开发者。在跟一个是工程师的朋友交谈中,我问他觉得我和他的工程作业上最大的不同是什么。他没有想太久。“我的产品都是大规模生产的。”

我是一个软件开发者。在我的想象里,就像Jia指出的,我们更接近是手艺人,而不是工程师。但我所说的“手艺”跟Jia说的有很大的不同,我所指的不仅仅是开发过程和工程过程之间的交集,更指的是让软件成为工艺品的工艺流程方法。

我既不是一个计算机科学家,也不是一个业余人士,既不是一个专家,也不是一个新手。我处在中间,我靠写代码为生。

译文出自:外刊IT评论

目录
相关文章
|
2月前
|
安全 物联网 5G
5G技术在软件开发中的应用
5G技术作为新一代移动通信标准,凭借高速度、大带宽和低延迟的特点,正深刻改变软件开发领域。本文介绍了5G技术的基本概念及其在实时应用优化、物联网集成、增强现实/虚拟现实和云计算等方面的应用,并讨论了安全性、技术兼容性和成本等挑战。5G为开发者带来了新机遇,但也需应对各种挑战,以充分利用其潜力。
|
5月前
|
敏捷开发 持续交付
探索现代软件开发中的敏捷实践
【7月更文挑战第8天】 在快速变化的技术世界中,敏捷开发已经成为了软件开发团队的必选策略。本文旨在深入探讨敏捷实践在现代软件开发中的应用,并分析其对项目成功的影响。通过实际案例分析,我们将揭示敏捷方法如何提高团队效率、增强产品功能以及缩短上市时间。文章不仅为软件开发专业人士提供实用指南,同时也为非技术读者呈现敏捷转型的洞见。
|
开发工具 开发者 UED
五种关键的软技能可以让软件开发人员脱颖而出
五种关键的软技能可以让软件开发人员脱颖而出
155 0
|
JSON NoSQL JavaScript
2018最新后端开发人员的路线图
简评:之前,后端开发路线图仅仅是一个技术推荐,且没有明确的方向指明应该遵循的顺序,这份重新制作的指南将会给你一个更好的方向。 现在的 Web 开发与几年前完全不同了,有很多不同的东西可以轻易地把人拒之门外,这也是我们决定制作这个循序渐进指南的原因之一,并让任何人可以清楚地了解他们在 web 开发中扮演的角色。 可以在下面的图片中找到详细的路线图,而我也将在下面的描述中解释每一个步骤。
132 0
|
测试技术 程序员 C++
高质量软件开发之道
1. 学习"高质量编程"的目的是要在干活的时候一次性编写出高质量的程序,而不是当程序出错后再去修补2. 十大软件质量属性包括:     正确性(Correctness): 指软件按照需求正确执行任务的能力。
970 0
|
程序员
项目难做,程序员难当,软件开发中的 9 大难题
是什么让项目变糟?何时起我们下班回家时开始盘算:“见鬼,我得离开”?下面是我们程序员不时要面对的一个问题清单,这些问题让我们筋疲力尽。
984 0
|
测试技术 开发工具 项目管理