我总是很愿意把“程序员”和“文化”这两个词组合在一起使用。不独是我,我相信每个程序员都希望有一种属于自己的文化。上至帝王将相,下至贩夫走卒,多年传统的职业分工和社会地位划分使这些人群都有属于自己的文化。但程序员(或者说,软件开发者),这个信息浪潮催生的新兴人群,却无意间变成了文化的荒原——至少在中国是如此。一个证据?在最大的华语软件开发专业网站CSDN.net的论坛上,你可以毫不费力地找到诸如“程序员=民工”或者这样的帖子,而且响应者众。抛开结论不谈,这样的讨论本身已经足以证明“程序员文化”的失位——你能想象建筑师们展开一场“建筑师是否等于民工”的讨论吗?究竟什么是“文化”?在媒体研究名著《消失的地域》一书中,约书亚·梅罗维茨认为,自电子媒介时代以降,文化是一个小群体独占性接触的知识,以及知识外化形成的语词。用更通俗一点的话来说,文化就是用话语营造的藩篱,是维护一个小圈子神秘感的屏障。或者可以说得更直白一些:大多数时候,“文化”这个词并不像它所表现的那么高尚,它是一个小圈子得以区分于其他人群、得以成为稀缺资源、得以获得更高待遇的武器。
有位老朋友曾经说过一句精彩的话:“软件与软件之间的差异,不会比软件与大白菜之间的差异来得小。”是的,按照我们的设想,在信息化时代的末期,软件将无处不在。一个逻辑常识:外延越宽,内涵越窄。当软件的外延宽泛到无所不包的时候,如何期望两个“软件开发者”能够有共同的语词,如何期望他们用这些共同的语词来营造一种文化?
这时,一本书出现在我的脑海中:Gerald Weinberg的《程序开发心理学》(清华大学出版社即出)。在阅读这本书时,我注意到一个有趣的现象:Weinberg老先生不断地强调“专业程序员”与“业余程序员”之间的分野。在他看来,尽管都是用C或者Fortran(这本书有些年头了,现在我们或许应该说“C++或者Java”)编写程序,但业余的编程爱好者与专业的软件开发者有着天壤之别。例如,校园里的“编程高手”或者计算机系的高材生,如果没有在软件企业中做过项目开发,他就只能是一个业余程序员。因为软件开发最重要的,并不是一时一地的技术,而是——套用老先生的话——心理因素。尽管PC的普及极大地模糊了“业余”与“专业”的界限,但“业余程序员……就程序开发的理论与实践侃侃而谈”仍然是“最令专业程序员们反感的”。“毋庸讳言,二者之间的差别也是客观存在的。”
这就是了。试图从技术、从应用的角度找到程序员之间的共同话语,这本身就是一次错误的尝试。专业程序员之间必定有某种共通之处,但那必定不是他们掌握的技术或者他们面对的应用领域,而是他们作为专业程序员所具备的那种心理素质,以及他们从事专业软件开发时求解问题的方式。举个最常见的例子:业余程序员总爱讨论“Java与C++哪个好”这样的话题,甚至常常可以把问题上升到计算理论、哲学思辨一类的高层次;但在专业程序员的眼里,这根本是一个伪问题——专业程序员考虑的是在用户允许的成本条件下按时交付用户需要的软件产品,而当范围、应用域、时间、成本等诸元确定之后,几乎从来不会出现语言抉择的问题。毕竟Java与C++适宜的应用域交集极小。
作出“业余”和“专业”的划分,我们已经在厘清“程序员文化”的道路上迈出了可喜的第一步。另一位成名多年的软件开发者、技术顾问Pete McBreen则走得更远。在他的《软件工艺》(即将由人民邮电出版社出版)一书中,McBreen借用工艺学的传统,提出了“学徒——技师——工匠”(apprentice-journeyman-craftsman)的三级划分。在他看来,大学文凭早已不能作为鉴别毕业生水平的标准,SCJP一类的认证考试代表了“six-pack”式的廉价货(six-pack指美国常见的一种廉价批发滞销啤酒的方式),外面的培训班根本教不出真正有用的东西。惟有软件开发者本身的声望——reputation,如果阅读这本《软件工艺》,你会不断地看到这个词——能够证明他的实力。软件开发者要想获得更高层次的认可,也只有靠自己在低层次的打拼,获得足够的声望。
不知道你是否喜欢这种论调?在计算机系里混了四年的学生、自己写过几个小程序考了一张MCSD或者SCJP的“编程高手”、参加了三个月“软件工程师班”培训的学员……当他们毫无顾虑地把自己称为“程序员”或者“软件工程师”时,当他们与从业多年的程序员(至少在表面上)无法区分时,我相信这是对整个行业的损害,也是对他们自身的损害。《中华读书报》的读者,如果你恰好不是IT业内人士,请想想你对于程序员这个人群的整体印象,相信你的观点能够证明我的结论。
所以,在我看来,这才是“程序员文化”的正道:划分人群的标准不是Java、C++、.NET……,而是“专业”与“业余”、是“学徒——技师——工匠”。惟其如此,同一人群才能真正拥有共同的话语;惟其如此,希望进入这个文化群体的人才能找到正确的方向——看看现在的初学者们吧,“Java与C#,我应该学哪一个?”,难道你认为他们这样真的能一窥程序员文化的堂奥吗?
|
相关推荐
硅谷程序员进阶之路,囊括程序员面试内容,包括操作系统、计算机网络、组成原理以及算法。
【程序员个性电脑桌面壁纸】这一主题,其实涵盖了两个主要方面:一是程序员文化,二是电脑桌面壁纸的个性化选择。这两者都是IT行业中与个人工作环境和精神风貌紧密相关的元素。 首先,我们来谈谈程序员文化。程序员...
历史提供了一个广阔的舞台,让程序员能够更好地理解不同文化和价值观,这对于在全球化背景下工作的程序员来说,是必不可少的素质。 总的来说,程序员阅读二十四史,不仅可以丰富个人的文化底蕴,还能提升问题解决...
介绍了程序员如何进一步进阶提升自己能力的转载文档!真是有效,字字珠玑,大家快来下载啊!
本资源教你如何成为一名合格的程序员,作为一名程序员你值得拥有
【程序员学习之路】这篇文章主要探讨了程序员这一职业的定义、发展历程以及成为一名合格程序员所需的基础知识和技能。在文章中,作者首先指出程序员不仅限于计算机专业背景,而是那些以编写程序为职业的人。早期,...
“外国篇”则让我们了解国际视野下的程序员生涯,比如硅谷的创新文化、欧美国家的软件开发流程、跨文化交流等。这部分内容可能揭示了国外程序员如何适应敏捷开发、DevOps等现代开发模式,以及他们如何处理全球化背景...
* 企业文化和企业氛围是程序员转正述职报告中提到的重要内容之一 * 程序员转正述职报告中提到需要加强企业文化和企业氛围的学习和积累,能够更好地融入公司文化 十、个人成长和自我完善 * 个人成长和自我完善是...
程序员修练之道E文版
【程序员桌面背景图片.zip】这个压缩包文件显然与程序员的文化和喜好有关,它包含了专为程序员设计的桌面背景图片。这些图片可能包含了编程语言的图标、计算机科学的幽默元素、代码相关的艺术设计或是激励程序员的...
标题中的“程序员专用编程输入法”指的是专门为程序员设计的特殊输入法工具,旨在提升编码效率。这类输入法通常具有以下特点: 1. **快捷代码输入**:程序员输入法能够通过快捷键、组合键或者自定义短语来快速输入...
程序员项目交接文档概要 IT 项目交接文档概要是程序员在项目交接过程中的重要文件,它对项目的开发、测试和维护起着至关重要的作用。本文档概要将对程序员项目交接文档的主要内容进行概要介绍。 人事模块是程序员...
java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流项目经验java程序员面试交流...
程序员成功之路,基本技能、思想程序 第一步,需求分析 第二步,概要设计和详细设计 第三步,编码和测试 第五步,集成和发版
程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 ...
这些壁纸通常包含与编程语言、科技元素、代码文化等相关的图案和标语,旨在展示程序员的独特个性,同时也起到装饰电脑桌面、手机屏幕的作用。在长时间面对电脑的程序员群体中,这类壁纸不仅能够体现他们的职业身份,...
《程序员的呐喊》涉及编程语言文化、代码方法学、Google公司文化等热点话题。对IT界的各种现象、技术、趋势等,作者都在本书中表达了自己独特犀利的观点。比如Java真的是一门优秀的面向对象语言吗?重构真的那么...
程序员简历程序员简历.pdf