开发人员、程序员与计算机科学家三者之间的区别

导读:原文作者Alan Skorkin写了一篇《The Difference Between A Developer, A Programmer And A Computer Scientist,文中讲述如何区分程序员、开发人员和计算机科学家之间的区别,发表了个人见解。现将译文《开发人员、程序员与计算机科学家三者之间的区别》转载,以下是文章内容:

我经常使用这三个几乎可以互换的词,是的,甚至包括计算机科学家。毕竟,我们中的大多数人都拥有计算机科学学位,那这三者有什么不同呢?然而,最近我发现这三者的特点在我脑海中愈发泾谓分明。当我一想到那些我认识或者从事这个行业的人时,便能马上将他们归为这三种之一。不是说一个人不能同时拥有这三者的全部特点,但无论如何,他们总会更倾向类一种,那么我便把他们归属到那一类,程序员、开发人员或者计算机科学家。

其实很难对这三者下定义(相比严格的描述,这更靠直觉而定)。虽然它们非常相似(确实如此),但我还是尽力分辨,因为我是个不怕吃苦的人。

计算机科学家

他们写代码(是的,我知道这有点让人吃惊)。他们所写的代码,也许不是最漂亮或者构造最好的代码,但是能完成任务。这跟代码设计或者“良好”习惯没有关系,只是用来证明他们要去证明的东西。计算机科学家不仅是技术专家,而且还是数学家(他们有31337种数学技巧),他们不仅要知道代码是有效的,还必须对其作出证明。沟通和人际交往能力是理想的品质,但不是必须的。这些人掌握了他们整个研究领域足够的基础知识,但他们会专攻其中一点或者几个狭小的领域。在这些领域中,他们是世界级的专家。他们在私人时间里做着和他们研究相关的工作。

程序员

程序员编写非常棒的代码。代码简化,构造优良并且要没有错误(error free),这些非常重要,但是他(她)们不能以无法完成任务为代价。在他们的领域中,全是关于了解“优秀代码”的含义。他们需要掌握一些数学技巧,但这不是最重要的。他们需要清楚好(最好)的问题解决方案,但不必加以证明该方案是最佳的。对他们而言,必须掌握足够广泛的算法,并且在专业知识方面掌握有熟练的技巧,在相关领域也具备相当优秀的知识。沟通和人际交往能力是理想的品质,但不是必须的。软件开发过程和团队活力是理想的品质,也不是必须的。他们在不上班的时候,做个人软件项目,以寻找乐趣。

开发人员

他们写代码。优化和简化代码固然重要,但通常会优先考虑其它因素。数学技能不是必须具备的,但有助于了解与他们所在领域相关的常见问题及解决方案。沟通和人际交往能力是最重要的。软件开发过程和团队活力是赖以生存的技能。他们是不依赖任何真正专业技术的全才。他们擅长绕过问题,集成组件,从而满足一系列要求。在个人时间里,他们不是在尽力构建下一个Facebook,就是参加与编程、开发或者计算机科学无关的活动。

一定程度上,开发人员就是程序员。

一定程度上,计算机科学家就是程序员。

企业软件属于开发人员的领域。

谷歌和微软是程序员缔造的(包括小部分计算机科学家)。那里的开发人员最终成为了产品经理。

RnD(研发)和学术界属于计算机科学家的领域(在较小程度上包括程序员)。

需要记住的是,这三者在任何方面中都不存在贬义或者不好的意思。他们体现的价值是相等的。他们只是我们所涉及的领域中不同的方面(有一些交叉点)。可能其中一个会有更多与众不同的特点,但这并不意味着这三者不能相互渗透、相互融合。一名出色的开发人员完全有可能同时是一名杰出的程序员(虽然要关注于那么多重要的事情是很困难)。极少数情况下你会遇到甚至集三者于一身的情况,那也是我乐意从您那了解的情况。因为我们应该一起开公司,那样我就可以借着你这牛人一路顺风:)。不过不管你在哪儿失败,只要你把握住三者之一,都完全有可能大获成功。

什么是软件工程师呢?他们只是开发人员的一个子集。

我相信我没有完全表达清楚我的想法。不过没关系,这个任务交给你了,亲爱的读者。您是否认为程序员、开发人员和计算机科学家是有区别的?如果是,那您对它们的定位是否跟我的相似?如果不是,我很乐意倾听你关于他们的想法。

译文链接:http://www.jobbole.com/entry.php/526

原文链接:The Difference Between A Developer, A Programmer And A Computer Scientist

时间: 2024-11-10 13:33:41

开发人员、程序员与计算机科学家三者之间的区别的相关文章

做c#开发的程序员应届毕业生最低工资都不应该低于多少

问题描述 做c#开发的程序员应届毕业生最低工资都不应该低于多少 解决方案 解决方案二:地方都不说,最低没标准解决方案三:不得低于当地规定的最低工资解决方案四:如果是由于水平太低而不能试用.只能实习的,可能工资只有正式员工最低工资的一半以下.解决方案五:如果一定要给一个数字,我想对于实习生(尽管是应届毕业也可能实习)来说,可能2000左右也是不难见的.解决方案六:引用4楼sp1234的回复: 如果一定要给一个数字,我想对于实习生(尽管是应届毕业也可能实习)来说,可能2000左右也是不难见的. 高手

你知道URL、URI和URN三者之间的区别吗?

这是一个经典的技术争论,许多人都会自问:URL.URI,很可能还有URN,它们之间的区别是什么.虽然,现在我们简单地把 URN 和 URL 都看做 URI,但严格来说URI可以进一步划分为URL.URN或者这两者的组合,所以了解这三者之间的区别将会非常有趣并让人受益匪浅.如果你恰好在某个地方碰到了这些东西,那么至少应该知道它们的含义. 我认为,尽管对一般人来说,不了解这三个缩略词之间的技术差异以及它们各自的含义并不是什么问题.但是,如果你作为一个计算机科学家.一个Web开发者.一个系统管理员,或

@private、@protected与@public三者之间的区别

@private.@protected与@public三者之间的区别   类之间关系图   @private只能够使用在声明的类当中,其子类也不能够使用用@private声明的实例变量   @protected只能在声明的类当中使用,但其子类具有使用@protected声明变量的资格   @public可以全局使用,属性是具有全局属性的   实例变量其实是支持KVO的,如果你帮实例变量写了setter,getter方法   相关源码 #import <UIKit/UIKit.h> @inter

组件,控件,类这三者之间的区别

问题描述 各位大侠:初学.NET,想问下组件,控件,类这三者之间的区别? 解决方案 解决方案二:控件:在ide中左边工具条中出现的东东,可以直接拖到界面上使用的组件:编译后的实体.比如在一个解决方案中有一个项目是对数据库操作的,如果写得比较好,以后可以继续在其他解决方案中使用,那么可以将其编译成组件,可以提高效率(webcast中mordenc#第9讲有简单介绍,可以看看)类:一种数据结构,可以包含数据成员,函数成员等等,通俗点说,你可以定义一个公共类,那么一个公共变量.公共方法可以放在这个类中

做.NET C# 开发的程序员多吗?

问题描述 有人想用asp.net自己做一个网站吗? 解决方案 解决方案二:换个问题有人喜欢开宝马吗?开宝马的人多么?解决方案三:做了,你就会想到做更多.不做,永远都难.解决方案四:想创业的资深.NET程序员可以联系我,我这里有项目解决方案五:lz的问题思考了20多年了.解决方案六:引用4楼duanzi_peng的回复: lz的问题思考了20多年了. 同意.解决方案七:当然asp.net有15年历史,是个很古老的技术了(因为最近10年在前端开发方面根本没有什么东西),因此可能有许多过时的地方,所以

招程序员,专科和本科有什么区别啊?

问题描述 我是一个专科生,我也和本科生一起工作过,感觉都一样啊,为什么有的公司要本科学历啊?不理解不明白 解决方案 解决方案二:群体之间的人才概率不同,比如本科计算系的人才概率是1/10,而专科计算机系的人才概率就是1/20.大家当然希望从人才概率大点的群体间寻找人才.解决方案三:1楼有理,这个只是一个概率问题.看看自己属于分母还是分子罢了解决方案四:个人认为还是有点区别的...

简单说说Java SE、Java EE、Java ME三者之间的区别_java

1. Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面. 服务器.嵌入式环境和实时环境中使用的 Java 应用程序.Java SE 包含了支持 Java Web 服务开发的类, 为 Java Platform,Enterprise Edition(Java EE)提供基础. 2. Java EE(Java Platform,Enterprise Edition).这个版本以前称为 J2EE.企业版本帮助开发

innerHTML,outerHTML,innerTEXT三者之间的区别_javascript技巧

与innerHTML不同,outerHTML包括整个标签,而不仅限于标签内部的内容.对于一个id为"testdiv"的div来说,outerHTML.innerHTML以及innerTEXT三者的区别可以通过下图展示出来:

C开发之----#if、#ifdef、#if defined之间的区别

#if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code... #endif 它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!) #if defined的使用 #if后面接的是一个宏. #if defined (x) ...code... #endif 这个#if defined它不管里面的"x"的逻辑是"真"还