写给程序员:我们这一代不是汽车工人

软件开发圈是个奇怪的圈子。尽管有着低失业率、高薪水和美好前景,显然一直处于危险和衰退之中,或者迫切需要警醒。有的开发者将最近软件开发的兴旺仅仅看做是未来衰退的前兆,并且开始写宿命型小说来警示这个即将死去的圈子。

Greg Baugues之前写过一篇文章《我们这一代的汽车工人》。他在文中比较了当今的软件开发者和60年代底特律汽车工人。Baugues的认为取代底特律汽车工人的机器人将会同样地取代软件开发者。作为证据,他举了一些例子:电子商务的Shopify,在线日志的WordPress,还有信用卡集成的Stripe。尽管竞争越来越激烈,他说软件开发教育的需求已经爆发,伴随着像TreehouseHacker School这样的公司提供低成本,高相关的课程,让学生可以在大学四年里用零碎的努力和代价为开发工作做准备:

不要感觉良好。不要被一种语言锁住。不要过河拆桥。时常磨刀。学习软技能。建立听众。存点钱。人际关系。阅读。

几乎在所有的观点上,Baugues都没有达到目的。首先,这里组装(无需技能的手工活)和软件开发(需要技能的脑力活)有性质上的区别,让前者自动化是不可避免的。自动化创造力比自动化组装困难得多。而且底特律的汽车工人有工会,处于历史上最好的时期:工业上的功能需求旺盛,并且那时候自动化成本太高。对软件开发者两者都不成立——他们拒绝工会化(为了避免把低端功能进行外包而受损),并且他们的功能不是轻易就能自动化的:它就是自动化本身。

集体的交涉和工会给了汽车工人一个舒适的中产阶级的生活。但是最终利润下降和开始受到全球竞争的冲击。汽车变得更加安全,易于操作,更高效,更可靠,更大众。汽车工人(还有他们的工会)也许料到了全球化,但是汽车工人发现自己在新的世界里还在用老一套规矩。另一方面,软件开发者从1980年代已经步入全球化,这也许从第一天起就开始了。他们很清楚他们的工作天然的全球化,他们没有躲藏在认为自己是在一个有保护的有限的市场里工作的幻想中。所以似乎Baugues的比较并不公正:不仅软件开发和汽车制造有质的区别,而且工人缺乏工会代表权,尽管全球竞争激烈,他们还是沉浸在工会的汽车工水平的报酬中。

但是自动化呢?在辉煌的未来,我们都毫不费力地将API相互连接(显然没有报酬),这个怎么样?这里,Baugues将最近的5年看做是未来50年的蓝图,大声宣称软件开发自动化是既成事实。让我们来看他给的例子。

WordPress,免费博客平台和开源博客软件,2007年中期腾飞,现在支持着(据有些统计)将近20%的网页。Baugues说WordPress能在“15分钟”里完成过去要“两个月”做的事,任何为自己或客户建立过WordPress站点的人都很清楚WordPress常常是网站现实功能的最小外壳(授权,发布,和标签)。它把那些网站最开始要做的枯燥的苦活自动化,无关任何困难的逻辑(那个留给定制的插件)。只发日志是零成本的——只用看看Tumblr就知道了。WordPress的真正价值在于提供成熟的网站框架。有个声称说其竞争项目DrupalJoomla可以做得更加令人说服。

Stripe,一个出现在2010年的开发者友好的信用卡API,现在只是声称有少量知名度高的客户。到今天为止,它只是一个在支付处理界那些老牌竞争对手中更便宜,更简单的选择。自动化哪去了?类似地,Shopify,成立于2006年,是一个方便的类WordPress的在线产品销售平台。它仅仅是把过去自动化了的——网页模板,支付,多机托管拼凑到一起。Stripe和Shopify都不是未来软件开发自动化的好例子。所以Baugues提到他们想要表明什么还不清楚。这些产品是前一代的改良,更集成,更用户友好,但是他们都没有完全自动化(也不是最软件即服务(SaaS)的产品),也没有抢开发者的工作。

自动化引起的焦虑和存在的恐惧由来已久,往往诞生于对历史的无知。在1960年代,伦敦丝绸纺织工积极抗议机器织布机——它可以大范围地减少对他们劳务的需求——甚至于要通过法律禁止它。然而,在17世纪中期机器纺织机已经开始取代手工纺织。作为回应,1675年八月,暴乱的纺织工人走上街头,毁掉了大批他们能找到的纺织机。

17世纪末期,雨格诺派教徒(法国新教徒)移民进入到纺织工业进一步激起了伦敦纺织工的愤怒,导致他们恐吓和排斥新来者。几十年后,在1760年代晚期,斯皮塔佛德的骚乱由纺织工组织起来,目的是要保持他们在自动化工业和法国竞争面前获得公平的报酬。骚乱者没有能够达成他们的目标,自动化步伐并未减弱。

19世纪早期,英国纺织工人组成的卢德派联合来反抗自动化。他们损坏和破坏机械并威胁要采取进一步的暴力。终止于1813年的审判,后来停止抗议了。从那以后,思想家诸如马克思,海德格尔,米尔达尔,芒福德,埃吕尔就批判过技术和自动化,然而世界依旧不停地自动化,带来了增长,稳定和安全还有快速增长的人口。这不是说自动化天生就是好或者良性,而是说它的效应尽管长远来看具有毁灭性,总体来说还是正面多余负面。更有意思的是自动化尚未带来工作简单,工时短的理想世界,如果有带来什么,那就是自动化给工人更大的压力,让他们比任何时候都努力工作。

因为Baugues提到了SaaS和互联网产品,那么只有谈谈互联网对软件开发的影响才算公平。互联网产业并没有蚕食自己,而是在不断提高门槛。十年前,“网页开发”意味着懂HTML的应用知识,一点点CSS、Perl和PHP。五年前,它意味着精通HTML和CSS,一些JavaScript,还有PHP、Ruby、Java或者ASP中任何一门。今天,它意味着HTML和CSS的完全分离(让设计师去考虑那些),精通PHP、JavaScript、Python、Ruby或者Java中的至少两门,还需要熟悉Git、包管理和持续集成这类东西。Web开发者比以前任何时候都做得多,而且还得不断地用业内最新的改进和变化去在高可靠性系统的约束和需求之间寻求平衡。他们线下的同行不需要太多重复自我发明。如果说有的话,就是过去十年已经看到了网页开发里最具重复性组件的自动化(就像汽车工人的工作)。现在还有程序员会重头开始写一个在线商店或者博客吗?毫无疑问,现在我们有更多有趣的问题需要解决。

Baugues提到的编程学校和学院也忽略了这点。1990年代后期我们已经这样把它作为一个产业来发展了。计算机科学大量提高招生名额,这个专业的毕业生享受了数年的高薪。然后市场崩溃,计算机科学招生下降,失业率暴涨,工资也回到他们的正常范围。那种在计算机科学专业的短期投入值吗?毕业生发现他们毕业即失业。更重要的是他们后来有没有继续做开发或者是换成别的行业,把编程忘得一干二净?类似地,如果软件开发的市场明天崩溃,有十年开发经验的开发者转投别的行业不会发生。而是会有来自“骇客学校”新生产出来的毕业生,他们只参加了3个月的课程学习如何制作Python应用,他们会跑得最快。他们的知识基础薄弱——他们不但缺少每个开发者都要经过数年才获取到的关键的经验知识体系,而且还缺少网页开发学校或者博客上学不到的计算机科学理论知识。如果比赛是通过编程教学机构,那今天的软件开发者没有什么可担心的。这是一个没有入门门槛的领域,新一代不成熟的开发者不但不是威胁,而且是一个巨大的机会。

自动化不会对软件产业构成威胁。对于每个封装某个业务处理的API,还需要写一个应用程序,适当的时候还需要有支持的API。对于每个履行某种功能的库和app,还要有新用法。对于每个需要被自动化的处理系统,还有一个开发者工作等着。今天存在的数量庞大的软件应该给悲观者一个暂停的机会 —— 也许有一个崭新的软件开发产业正在将旧的产业淘汰,这个产业不会关注诸如支付处理或博客这种乏味的问题,而是旨在用过去二十年中来之不易的成果来解决困难度以指数级增长的问题。

软件开发是为数不多的能够持续提炼自身的产业之一。不像制衣或医疗或汽车业,软件是难以捉摸且无形。软件开发者是问题的解决人,他们常用某种很抽象方式解决问题。它让一类特别乐观的人去想那种人才的自动化,并且让一类特别悲观的人去认为它永远这样。(It takes a special sort of optimism to consider that kind of talent automatable, and a special sort of pessimism to think it will ever be so.)

收藏 1 评论

关于作者:奇风余谷

做一个偷懒的程序员。电子邮箱:dut.hww@gmail.com、个人主页:http://deepfish.info、新浪微博:@奇风余谷 个人主页 · 我的文章

相关文章

可能感兴趣的话题



直接登录
最新评论
  • wwj   2013/12/18

    即使全世界的CEO失业了,程序员也还在写那些顶替CEO的程序

跳到底部
返回顶部