按照一种庸俗的所谓的“产业界”的说法,工程师和程序员似乎是一类的东西,实际上在产业中,经常他们可能从事着几乎重合的工作。有的时候,程序员似乎还是“工程师的低级阶段”
但这就是对的吗?我们想想这个问题:为什么程序员要叫程序员而工程师叫工程师?
一种想法可能说,在一个项目中,工程师是负责整个项目的运行的工程意义上的技术上的所谓落地,而程序只是这些需要落地的技术体的一部分,所以工程师的工作比程序员要更大,也更高级,这似乎是有道理的。
但是,这种思路却首先把“程序”看成一个小于“工程”的东西了,那么当然程序员似乎就比工程师的工作范围要小了。为了不引起歧义,我们主要也还是讨论计算机程序员。
这种观点并不正确。他没有完全地说明到底程序员和工程师的区别。具体的论证我不在这里展开了,我直接说出一个论点。
我们考虑,假如有两个充分地无限地授权的人,完善的不受限制的自由的人,一个人是程序员(programmer),一个人是工程师(engineer),然后我们考虑:选择某个工具是否必然是某个人的职能(function)?
我们似乎认为工程师必然有职能包含了工具的选择。但是,我要说的是,几乎不是的。实际的情况我们可以知道,所谓工程师选择工具是有条件的,即工程本身。工程师无论怎么授权,如果他要选择一个工具跟这个工程无关,那么我们不会认为这是这个工程师的职能。
反过来我们看程序员。现实中由于社会建制的意义上,程序员经常已经是没有什么权限的那一类员工,所以他们选择工具就更加不能了。但这是正确的吗?
我们请考虑程序员这个岗位为什么要被叫程序员。很显然,这个名字并不包含对整个工程的意义上的承诺,现实中我们也知道很多人,比如ada,我们好像就谈不上认为她是工程师,我们甚至不会将她等于能实施软件工程的那类人,但我们觉得程序的制定是属于她的职能范围的。
于是我们出现一个问题?选择工具是否属于所谓“计算机程序”的必要条件?从制作过程来看,计算机程序跟一般意义上的程序是不一样的,但结合实践来看,怎么实现一个程序,能不能实现一个程序,怎么去实现一个程序,常常就是跟工具有关系的。以至于,如果是充分授权的意义上,程序员选择工具去实现计算机程序,在合法等等的意义上,似乎是合理的,除非这个程序员根本不能“做程序”(do program)。
由此我们可以划界程序员和工程师,作为一种“想象”:
① 计算机软件工程师是负责编制、组织、保障计算机软件的实现的人。其工具权依赖于工程的需要。他们不一定可以选择工具,但他们可以选择工具,并选择最有利于工程的事项。
② 计算机程序员是负责编制、组织、保障计算机程序的实现的人。通常,其工具权依赖于其计算机程序的实现的需要,而且不一定是工程意义上的问题。
容易发现,这种意义上的程序员和工程师的职能,一部分已经被转移到各种“经理”,“主管”,“领导”的职能那里,那是存在于整个生产关系中的事实。
有的时候,一些事情根本不需要叫程序员,事实上他们也已经叫工程师了。另外一些时候,我们可以发现会用特定的概念来限制程序员这个概念,例如SAS程序员,这本身是创造了一个程序员的子类概念,但这个概念显然不能表示超出SAS程序的开辟的意思。
由此我们可以推出,在真实(real)的意义上,禁区化程序员的工作的手段和范围,实际上是反人民反人类的,程序员要无条件使用某个工具,实际上是与程序员这个概念矛盾的,是不道德的。
--
修改:darkk FROM 120.239.45.*
FROM 120.239.45.*