程序员都是工程师吗?

jopen 10年前

英文原文:Are Programmers Engineers?

  为了吸引注意力,Slashdot 提出了一个备受争议的老话题:所有的程序员都是工程师吗?

  当然不是。

  我曾经却不这么认为。我的母校是伊利诺伊大学香槟分校,计算机科学系是工程学院的。我可以证明,这好几年都在学和工程师一样的课程。

  正因为很多学校把计算机科学归于工程学院,很多程序员毕业之后都以为他们和工程师没什么区别。但是差别很快就会显现出来。

  工程师是必修课,程序员则是选修。

  要做一个工程师,你就必须获得授权。你必须通过专业的工程师考试。在工程这个领域,你必须有证书来证明你知道正确答案。在法律专业,也是这样。 我非常确定对于著作权法的了解我比一些小型城市的律师强。然而他们可以在这个领域内发表一些自己的观点,但是我就不行。工程学也如此。有些事情只有有执照 的工程师做才合法。

  但是每一个人都可以编程。

  工程师为自己的事业工作,而程序员做他们喜欢做的事情。

  通常,工程师比程序员拥有更高的学位。有人认为他们想证明自己,但是我认为,这源于对事业的选择。许多程序员都是因为兴趣编程,并逐渐地变得专业。我就是这样。很多年前我还不会开车的时候就会编程了。有时候,我们做了错误的决定,正是因为混淆了爱好和专业的区别。

  工程师却不是这样。人们不会将桥梁建筑作为他们的爱好,而选择将成为桥梁工程师作为自己的事业。工程师们通常将他们的工作作为自己的事业,因为这一直都是他们的梦想。

  工程师理解地更深,程序员通常不知道他们在做什么。

  通常,工程师可以预测工作流程。他们不会陷入纷繁复杂的参数中,不必纠结于使用什么方法来完成项目。让他们来估测一个项目,通常会得到准确的答案。

  到现在为止,没有管理软件项目的通用方法。每个人的方法都不同。一些人几乎没有用什么程序,却得到了惊人的结果;一些人用传统的方法论,却不能按时解决问题。

  工程是实实在在的,编程是抽象的。

  工程师使用的是物理的东西,像力学,电和热。当工程师建造什么东西的时候,通常是实实在在的事物,可以摸得到,可以拿在手上,甚至可以保持它的形态度过几个世纪。

  编程利用的是一些抽象的东西。我们创造变量并赋予他们名字,通过操作它们来创造事物。当产品最后完成的时候,不需要什么制作流程。成品不过是一 些字节。理论上讲,如果一只猴子在键盘上敲打,也有几率敲出相同的字节。这样生产处的产品是看不见摸不着的,可能在几年之后,就不再有什么价值了。

  我的意思并不是说工程师就比程序员更有价值。我能建造出一座桥,一台电视,或者一条小舟吗?不,但我藐视一切能建造它们,部署优秀控制系统的工程师。因为程序员同样解决了困难的问题。

  我们的大学,由于没有适合我们的学院,而将我们称为「工程师」。我不会怪他们,因为我并不会期望借「工程师」这几个字来获得更多的尊重。

  为什么就不接受软件开发是一个特殊的行业呢?我们必须承认没有别的领域,像编程这样。工程师对我来说太枯燥。

  我喜欢做一个程序员。