之前,研发频道曾发过《东方程序员怎么看西方程序员》和《西方同行眼中的东方程序员》这两篇文章。来自世界各地的程序员们各抒己见。或许,从上面两篇文章中也多少能得出“为什么中国的程序员总被称为码农?”下面是来自知乎网上各位大牛的看法。让我们来一起看下!
一位叫吴涛的程序员的回答:
编程活动和机械电子一样可以视为一种工艺(craftsmanship),从事此类工艺活动的人可以叫做工匠或者工程师。经历过工业革命的欧美国家,有深厚的工程根底,从机械到电子再到软件,都是国家产业的支柱,滋养着社会中坚力量的中产阶级。工程师的社会地位普遍比较高,他们有工艺的传承,有文化圈,有产业的历史。
而国内目前的软件工业和制造业非常相似,以来料加工式的低水平重复劳动为主。就好像农民仰赖着老天提供种子、土壤、阳光和水,中国程序员仰赖着洋人提供设备、技术和理念,从微处理器、操作系统、编程语言、编译器、IDE、编程框架到应用程序,除了做晶圆的沙子是本地产的,几乎没有什么属于自己,每天的工作内容主要就是把别人已有的东西按照自己的——甚至不是自己的——需求装配一下,没有什么创造性,也很少有业界的技术积累和传承出现,即便有也流传不开,毕竟程序员文化水平普遍不高——「有知识,没文化」,就是说这样的状况。记得劣质盗版VCD满天飞的时代,有个程序员做出一款丑陋但是解码容错能力很好的播放器,贴合国情,一炮成名,结果好容易写本书,没有几个句子能写通顺的。这种技术书籍的拙劣状况一直保持到现在,而且拙劣的方式更加多样化了。没有技术传承,没有文化圈,不乏有人上大学之前对编程一窍不通,学计算机只是因为计算机「热门」而已。如同包办的婚姻,没有一丝爱情,最后以编程为业,只是因为也不会做别的什么了。
另一方面,国内程序员不论薪水如何,的确很苦。许多人长期被迫加班,最后甚至会成为一种自愿的习惯。可生产率和产品质量并未因此而提高,就像千百年来用惯锄头和镰刀的农夫,很少有人会想要去学习、改进自己使用的工具和习惯,甚至对于新兴的思潮和方法抱有非理性的抵触情绪。生活如此悲惨,却又如此不思进取,和农民的问题很相似。再加上,就好像城里人眼中的乡下人一样,程序员们木讷、邋遢、缺乏情调、土。可偏偏又自负而且互相看不起。
总而言之,在中国做一个程序员,很少有什么事情能让人觉得自己从事的工作很体面。那么,在整个社会以自嘲为风尚、许多行业都喜欢好勇斗狠地自轻自贱的状况中,使劲贬低自己的职业,自嘲和群吵时,就不会有什么心理包袱。不过,就好像黑人可以自称或者互称「黑鬼」,但是白人如果敢讲立刻会惹祸一样,喜欢以此自称的程序员并不见得能容忍其他人这样称呼自己。
最后,英语有类似的说法,将带有隔断的办公室叫做cube farm,常见于传统的软件公司。以讽刺(但不限于)软件公司日常生活为主题的漫画Dilbert就有不少格子办公室里的场景。不过cube farm说的并不是程序员们像农民,而是说他们像地里的庄稼或者果树,产出成果,等待收割。毕竟,欧美发达国家的农民生活往往比程序员更好。高收入,农机劳作,大片的私有土地,宁静的田园生活。农民的生活在那里,如果不是令人向往,至少也并无贬义。
补充:本版同文所说的code monkey在英语中的语用,与「码农」在中文里的用法并不一样。
code monkey是指以计算机程序员或者那些以编码为生的人。这个术语可能包含轻微的贬义,这意味着开发者可能编写代码,但不能执行复杂点的任务,比如:构建软件结构、分析和设计,一般指初级程序员。
如果一名code monkey正在努力增加知识和提升职业技能,那么会有另一个等级名词赋予他。
其实code monkey这个术语在层次划分上还是有点困难的,因为像那些真正熟练的开发人员或程序员他们仍然在做编码工作。或许像这样划分会好一点:
coder:编码员
programmer:程序员
software engineer:软件工程师
software analyst:软件分析师
software architect:软件架构师
或许还可以在前面加“初级”、“中级”、“高级”这几个前缀。这些都反映了一定的等级、技能水平和薪资。
请注意:它只能在小范围确定的某种层次结构,例如在一个公司、甚至一个部门。一个在A公司工作的“程序员”可能比B公司的中级架构师所要求的技能更多。
该贴由hui.chen转至本版2015-1-28 15:19:19