如今流行的一个说法是,现在的程序员与工业时期的工厂工人并无二致。
均是富集于人口密集的城市、均是超时劳动、均是遭受资本家的盘剥、均是一架大机器上的螺丝钉,在超过“劳动年龄”之后被弃如敝屣。
基于这些相似点,有些人得出结论,程序员不过是这个时代的“无产阶级”,和以前的流水线工人,纺织厂女工属于同一社会分工和定位。
是否当真如此,这个问题值得仔细推敲一下。
个人所处的社会阶层,取决于他能让属于他的生产资料产生的价值。传统的生产资料包括实体的机器、厂房、地皮、原材料、资本和人等等。
而作为信息时代的标志,人人都可以通过网络获取一项虚拟的生产资料——信息。诚然,信息壁垒依然存在,但普通人能接触到的信息总量和质量与信息革命之前的时代相比已不可同日而语。
程序员是与电子计算设备打交道的人,此类设备本质上是信息的产生、加工和分发工具。一台电脑加一条网线,程序员就可以以极其低廉的方式获得他所需要的生产资料。而拥有生产资料的人,就不能再称之为“无产阶级”。
我们已经听过了太多程序员在车库创业的故事,也许这些故事仍然可以称之为“个例”,毕竟,哪个时代没有一些白手起家的人。
但如果某个行业能在全社会掀起创业的热潮,那么就不能再以孤例的眼光看待。只有在该行业的生产资料极大丰富,且对再加工之后的产品有持续需求的情况下才有可能出现这类情况。
是否能以足够廉价的方式获取生产资料,是程序员与工厂工人的第一个区别。
注意这里强调的是再“分”工,而不是再加工。
程序员能够开发出各种程序满足人们的需求,工人也能生产出各种生活必需品,所以在生产资料再加工这一点上,两者没有本质区别。
专业细分是社会生产率提高的根本因素。每个人只负责整条产业链中的一环,愈发细致的分工与合作是现代生产活动的组织方式。
程序员和工人均为某一细分领域的专家,但二者所处的分工链条深度不同。
工人是分工链条的末端,他所能做的就是尽自己所能做好手头的事情。
而程序员虽然仍然要听老板的,但他手下仍有电子设备作为分工的最后一环。
程序员可以通过编码为这些电子设备“分工”,从而令其为程序员服务。
从某种意义上说,程序员就是这些电子设备的“老板”。同时随着设备的计算能力越来越强,这些设备就能逐渐胜任更加精细的分工任务。
随着分工的深入,一方面带动社会整体劳动生产率的提升,一方面更加高效地产生价值。
一个大型工厂的老板最多能令数万工人为其服务,而所有能跑代码的设备都可能为程序员服务。
在分工链所处的位置和对生产资料的再分工能力,是程序员与工厂工人的第二个区别。
其实程序员是新时代的工厂工人这种论调,只不过是之前“青春饭”、“过了 30 岁不能再编程“等论调的新瓶装旧酒而已。
但程序员面对的现实压力确实是不容忽视的问题。很多人学了很多技术,掉了很多头发,但最后仍被公司扫地出门,问题就在于做了无用的努力。
解决之道其实就蕴含在前文论述的两点之内:
实际执行的术便是一定要有自己的“产品”。
这当然是一个程序,可以是公司的产品,也可以是个人作品。但需要关注两个关键点:
可以看看这些久盛不衰的“产品”:操作系统、数据库、浏览器、服务器软件、办公处理、图像应用处理等等甚或编程语言本身,都是这两个关键点的很好的体现。
当你拥有这样的产品时,操心的就不是公司会不会要你了,而是如何高效地指挥你自己这支被你分工的生产队,实践一些大胆的想法。
最后附上我最喜欢的历史名人名言作为结尾:
臣但恐富贵来逼臣,臣无心图富贵。
——杨素
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.