文/贾文娟(上海大学社会学院,上海 200444)
进入21世纪,以大数据、云计算、人工智能等为支撑的第四次工业革命已经到来,新的资本积累方式、剥削方式与劳动问题也正在出现。与此同时,两类劳动者进入了学者的分析视野。一是数字劳工。他们在产销合一、受众劳动等生产模式下制造出大量内容,为数字资本主义的发展提供了巨量资源。①姚建华、徐偲骕:《劳动的“媒介化”与媒介的“劳动化”:数位劳动研究的内涵、现状与未来》,《新闻学研究》2019年第141期。因数字劳工的劳动有隐匿性与免费性,与以往奴隶劳动、家务劳动性质相似,他们被冠以“i奴”②Kylie Jarrett,Feminism,Labour and Digital Media:The Digital Housewife.New York:Routledge,2015.“数字家庭主妇”③邱林川:《告别i奴:富士康、数字资本主义与网络劳工抵抗》,《社会》2014年第4期。“数字灵工”④刘战伟、李媛媛、刘蒙之:《平台化、数字灵工与短视频创意劳动者:一项劳动控制研究》,《新闻与传播研究》2021年第7期。之名。二是平台劳工。诸如骑手、网约车司机、网络作家等也进入了劳动研究者的视线。随着平台对泰勒制等管理策略进行着转译或改造⑤陈龙:《“数字控制”下的劳动秩序——外卖骑手的劳动控制研究》,《社会学研究》2020年第6期。⑥孙萍:《从“惯习培养”到“粘性使用”:数字平台的算法生产——基于行动者网络的视角》,《西南民族大学学报》(人文社会科学版)2022年第1期。,他们在众包生产体制和算法支配下进行着高强度的劳动。但是,还有一类劳动群体并未获得足够的重视,他们便是人工智能产品的生产者。我们知道,各类平台、App和AI算法模型并不是凭空产生的,而是生产者的劳动结晶。它们往往以生产资料的形态留存于世,而当其与新的“活劳动”结合在一起后,便会生成新价值。从这个意义上看,人工智能时代的产业工人除了数字劳工、平台劳工以外,还包括人工智能产品的生产者。
程序员是最主要的人工智能产品生产者。但是,学界对人工智能产业中程序员劳动生活状况的研究仍然是不充分的。当然,早在20世纪末期,学界便以欧美国家为蓝本,展开了对ICT程序员的研究。这些研究者指出,软件生产是围绕“永远的测试”和没完没了的“debug”进行的⑦Gideon Kunda,Engineering Culture:Control and Commitment in a High-Tech Corporation.Philadelphia:Temple University Press,2006.⑧Rowena Barrett,“Working at Webboyz:An Analysis of Control over the Software Development Labour Process,”Sociology,Vol.38,No.4,2004,pp.777-794.,管理方通过塑造规范、培养信仰、灌输价值观、激发情感等文化策略对程序员进行管理。⑨Gina Neff,Venture Labor:Work and the Burden of Risk in Innovative Industries.Cambridge:The MIT Press,2012.随着大企业采用离境外包和众包生产体制进行App开发,程序员在面对不稳定劳动状况时自行发展成了“创业劳工”。他们具备企业家精神,并在自我控制、自我商品化、自我理性化等逻辑下,努力将自己的编程技术能力打包出售。⑩Hans J.Pongratz and G.Gnter Voβ,“From Employee to‘Entreployee’:Towards a‘Self-Entrepreneurial’Work Force?”Concepts and Transformation,Vol.8,No.3,2003,pp.239-254.具体而言,创业劳工们在推特、脸书等社交网站推广自己的产品、积极建构职业网络、进行长时间的工作,努力在竞争激烈的众包市场中拓展工作机会。①Birgitta Bergvall-Kåreborn and Debra Howcroft,“‘The Future’s Bright,the Future’s Mobile’:A Study of Apple and Google Mobile Application Developers,”Work,Employment and Society,Vol.27,No.6,2013,pp.964-981.但是,上述发现却不能完全用以解释中国的情况。中国人工智能产业的发展模式与以硅谷为核心的全球分包众包模式并不相同,其劳动者的处境与欧美国家程序员也存在差异。我们有必要对中国人工智能产业程序员的劳动生活状况进行研究,以进一步丰富针对程序员劳动的研究。
2019年之后,中国的高科技企业受到了美国的制裁。2021年1月,美国商务部发布了《确保信息和通信技术及服务供应链安全》。与此同时,中国政府发布了《网络安全审查办法》。在中美科技竞争的背景下,中国采取了国家主导、城市政府与各大企业共同推进的人工智能产业化发展模式,并出台了一系列旨在推动高科技产业园区发展、人工智能企业集聚、相应劳动者集聚的产业政策。在这种情况下,程序员不再被理解为从事知识劳动或创意劳动的工人贵族,而成了资本与城市所需要的弹性劳动力。与此同时,程序员内部产生了严重分化。其中不仅包括在海外名校获得博士学位、年薪百万并在工作地城市享有优越生活的算法工程师,而且包括大量基层程序员——他们年龄普遍在35岁以下、职级较低、没有获得工作地城市的户口,也没有在这些地方安家生活。本文关心的问题是,人工智能产业中的基层程序员群体的劳动生活状况究竟是怎样的?其处境与以往的农民工有什么相同与不同之处?在这种情况下,他们生发出了怎样的身份认同与利益行动?
为了对该问题进行回答,笔者的研究团队在2020年7月到2021年7月间,对S市人工智能产业中的30名小组长职级以下的基层程序员进行了半结构式访谈。在接下来的分析中,笔者试图将比较的视野贯穿文章始末,以呈现基层劳动者工作生活等状况的“变”与“不变”。这项探索性研究将为学界进一步剖析人工智能产业程序员的劳动过程、劳动关系等问题提供一定的帮助。
城市社会学研究者曾指出,城市不应仅被看作资本积累的发生地,其本身便是一台推动经济发展的“增长机器”。城市之间的经济社会竞争成为其发展、招揽特定产业的根本动力。②John R.Logan and Harvey Luskin Molotch,Urban Fortunes:The Political Economy of Place.Berkeley:University of California Press,1987.2017年后,北京、上海、广州、深圳、杭州等领先城市在国家政策推动下,开始推进自身人工智能产业的发展,并形成了激烈的竞争态势。与此相应,中国人工智能产业的发展亦是在国家政策支持下,依托大城市推进的全产业链崛起。
2016年11月,国务院在《“十三五”国家战略性新兴产业发展规划》中便明确指出,要“培育人工智能产业生态,促进人工智能在经济社会重点领域推广应用,打造国际领先的技术体系”。2017年7月,国务院印发了《新一代人工智能发展规划》,提出要“把人工智能发展放在国家战略层面系统布局、主动谋划,牢牢把握人工智能发展新阶段国际竞争的战略主动”,并“积极培育人工智能新兴业态,布局产业链高端,打造具有国际竞争力的人工智能产业集群”。人工智能产业很快成了中国各领先城市力主发展的朝阳产业。此后,这些城市先是采用“腾笼换鸟”的政策将传统工业制造业转移出去,继而通过制定相应的产业政策、社会政策和劳动政策,对资本、劳动、土地等要素进行整合,大举推动自身人工智能产业的发展。
以S市为例,S市政府在2017年11月印发了《关于本市推动新一代人工智能发展的实施意见》,提出要在2020年形成具有国际竞争力的人工智能重点产业集群,建成5个左右人工智能特色产业集聚区,培育10家左右人工智能创新标杆企业,其人工智能重点产业规模超过1000亿元。紧接着,S市各辖区便展开了围绕人工智能产业发展的招商引资行动,并发展出“4+X”的人工智能产业布局,以推动涵盖传感器、AI芯片、云计算、数据服务、计算机视觉、自然语言处理、语音识别和智慧+各类产业的完整产业生产体系。以S市S区T镇为例,其在产业政策的推动下,迅速推动发展起占地23.8万平方米的人工智能产业园区,并以各类配套奖励、租房补贴等政策,吸引人工智能公司与程序员在此园区聚集。
上述政策在推动产业发展和劳动力聚集方面收到了明显的效果。如图1所示,2020年S市IT产业从业人员数量从2003年的7.1万人迅速增加到了74.96万人。与此同时,S市IT产业2020年的营收达到了10912.97亿元。①数据来源:《2021上海信息化年鉴》,学林出版社,2021年,第38页。从全国数据来看,同年中国IT产业的营收达到了81585.91亿元。②数据来源:《中国统计年鉴2020》,中国统计出版社,2020年,第565页。如图2所示,全国软件行业整体从业者人数也从2003年的116.8万人增加到2020年的487.1万人,这些劳动者大部分集中在城市里。即便如此,有关报告仍然指出,中国人工智能产业目前人才缺口达30万人。③数据来源:工业和信息化部人才交流中心牵头编写的《人工智能产业人才发展报告(2019—2020)》。可见,与产业发展相关的人才集聚方兴未艾,人工智能算法程序员的队伍还会持续扩张。
图1 S市信息传输、计算机服务和软件业从业人员数量变化
图2 中国软件行业从业者数量变化
但是,产业发展与城市发展并不一定带来劳动者工作生活质量的提升。比如,推进中国制造业迅猛发展的农民工群体,就在很大程度上没能享受到产业发展与城市发展带来的红利。实际上,作为“增长机器”的领先城市并不慷慨①John R.Logan and Harvey Luskin Molotch,Urban Fortunes:The Political Economy of Place.Berkeley:University of California Press,1987.,其在劳动力使用与劳动力安置上存在一个两难议题②Eli Friedman,The Urbanization of People:The Politics of Development,Labor Markets,and Schooling in the Chinese City.New York:Columbia University Press,2022.。一方面,出于产业发展、经济扩张、资本集聚的需要,因本地居民劳动力价格较高、生产率较低,城市政府倾向于从其他地区吸收大量廉价劳动人口进入其中——不管这些人口是制造业中的农民工还是人工智能产业中的基层程序员;另一方面,城市政府却难以承担这些劳动人口的城市化带来的经济、政治、社会成本。因为这些劳动人口进入城市的目标不仅是获得临时性收入,而且是在城市安家落户,享受丰富多彩的城市生活,所以其对公共资源的获取提出了更高的要求。总之,这些领先城市所需要的并非永久性居民,而是在特定时间推动特定产业发展的劳动力大军。据此,城市政府面临着经济发展需要与人口控制需要之间的矛盾。在这种情况下,如何在正确的时间里,以合适的数量,提供合格的劳动力,以满足城市特定产业发展诉求,成为城市政府所考虑的核心问题。
研究者指出,领先城市往往遵循“即时城市化”的制度逻辑来应对上述问题。“即时城市化”的核心策略是通过设定限制性的社会政策,以最大限度地削减人口库存,最终达到人尽其用。具体而言,城市人口往往会被分成两类:一类是享有完整福利保障的永久居民。他们拥有大城市的户口和商品房,其劳动力社会再生产将在该城市中进行;另一类是参与到特定生产生活领域中的临时劳动力。他们虽然在该城市工作,但城市并未满足其劳动力长期再生产的需要。各产业中的临时劳动力都处于拆分型劳动力使用模式下。对于服务业中的农民工而言,他们的劳动力虽然在城市中使用,但子女教育、父母照护等劳动力社会再生产却是在农村中进行的;而对于人工智能产业中的基层程序员而言,他们的社会再生产被分割成居住、医疗、生育、教育、养老、休闲乃至机动车牌照获取等不同部分,不同政府部门将依据积分制度选择性地满足其部分需求。此外,城市对他们进行着筛选——仅愿意留住对城市发展有用的“人才”,而随时遣散其他的“剩余”人口。
在“即时城市化”的制度逻辑下,基层程序员仅是城市中的临时劳动群体,而非永久性居民,城市并未完全承担其劳动力社会再生产所需的成本。不少基层程序员面临着与农民工类似的不稳定、流动性与边缘化的处境,并将大量时间投入工作劳动之中,成了不稳定劳动者大军中的新成员。那么,基层程序员在这种情况下的工作与生活状态是怎样的?这便是本文接下来要讨论的问题。
在中国加入WTO、成为“世界工厂”之时,东南沿海各大城市为了推动制造业的发展,曾经招收了大量的农民工作为临时劳动力。这些农民工在拆分型劳动力使用模式下,被安置在工业区拥挤的宿舍或狭小的出租屋中,长期从事着机械性的劳动。今天,当国家大力推动人工智能产业发展时,大量不拥有本地户籍的基层程序员,成了大城市中新的临时劳动力。其工作与生活处于一种不稳定、暂时性和不可持续的状态,呈现出了与农民工群体类似的临时性特征。
人工智能公司对基层程序员劳动力的使用方式是临时性的与不可持续的。这种临时性主要表现为以下几个方面:第一,基层程序员工作时间长、劳动强度高,加班情况非常普遍。可持续的劳动力使用方式意味着张弛有度的工作节奏、劳逸结合的劳动方式、可以预期的个人成长与职业发展。但很多人工智能公司经常让基层程序员承担过多的工作任务,并处于很高的劳动强度下。从工作时间上看,加班、“大小周”是很多基层程序员的工作常态。比如,YM讲到公司的“大小周”时说:
“你可以想一下,单休要上6天班,双休一下,然后又要上6天班,这个状态,就是你上完6天班之后休那一天,你不会想去干其他事情,就是想睡觉。”(访谈:YM,20210817)
SWJ则说:
“我觉得晚上九点半以后还在工作就是加班了。我在KS工作的时候,因为做的是大促销方面的任务,所以几乎整年都在加班。每天除了在公司就是回家里睡觉,然后又去公司。我在TX的时候,还通宵加过班。”(访谈:SWJ,20210720)
刚刚开始工作的LTH则说:
“现在我的劳动强度可以说是远超某些公司的,我每天晚上十一点下班,回去后都没时间倒垃圾。每天加班,每天加班,现在我的身体基本上已经废掉了,我已经得了高血压。”(访谈:LTH,20210613)
与以往农民工相比,基层程序员加班的原因是非常多元的。有人以此学习技术、博取职业发展的机会;有人是在为今后买房、结婚而攒钱。但是,与农民工劳动的类似之处是,随着程序员年龄的增长,他们的身体难以承受这种高强度劳动,超长工作时间无法长期持续。
第二,人工智能公司在招收基层程序员时存在年龄歧视的倾向。中国的人工智能公司有非常崇尚年轻的文化,多数公司不会招收年龄在35岁以上的普通程序员。2021年3月,脉脉研究院发布了《互联网人才流动报告》,在其统计的19家企业中,人才平均年龄为29.6岁,其中滴滴算是“最老”的,员工平均年龄为33岁,最年轻的是字节跳动和拼多多,雇员平均年龄仅为27岁。到了35岁后,如果基层程序员还没有成长为管理者,便会面临失业风险。回首以往,农民工的劳动生命被分割为两个部分:他们在年轻的时候为了结婚、盖房、生养子女而外出打工,在其劳动力耗竭之后,则会返回老家生活。与此相似,基层程序员也以35岁为界,将自己的劳动生命划分为两个阶段。他们35岁前在人工智能公司工作拼搏,从事高强度的脑力劳动;35岁后则要么转岗从事管理工作,要么转行进入传统产业,开始过起较为平稳的生活。
第三,基层程序员劳动力使用方式的临时性还体现为,人工智能公司会根据发展状况随时调整员工队伍、裁减基层程序员。当然,这些公司的裁员方式各不相同。有些企业实施KPI或OKR绩效考核制度,对员工施行末位淘汰制,并鼓励基层程序员相互竞争。比如,CJY就是因为绩效不合格,被公司末位淘汰的员工:
“我在WD公司工作快7年了,他们提出让我离职(语调尴尬并变低)。……我们这些普通人就是炮灰,以后都要被淘汰的。你35岁以后再上不去,就会慢慢失业。(那你接下来的打算是什么呢?)我不是S市人,我是河南人。接下来,我打算先回家休息一段时间,缓冲一下,然后做做生意吧。”(访谈:CJY,20210105)
还有些企业会随时根据自身股价和不同事业部的表现进行较大规模裁员,比如ZE所经历过的:
“我之前在MG公司工作,2020年4月17日,公司因为疫情裁员了。裁员那天分了几批。第一批被裁的是非业务部门,先是行政、保安,还有给花换水的、打杂的人,然后是财务、设备、HR等部门。第二批被裁的是业务部门,互联网运营啊,设计部门啊,做UI的,做海报的。最后一批就是技术部的,一共裁了140个人。我们都被裁掉了,连组长都被裁了。他是2003年毕业的,那时候刚好35岁。”(访谈:ZE,20201118)
综上可见,基层程序员的工作处境是临时性的,他们的劳动强度高、工作时间长、面临着年龄歧视,并容易被裁。处于这个位置上的劳动者如果不能通过努力实现晋升或以转行的方式离开,就会被淘汰。但无论何时,总是有大批劳动者前仆后继地成为基层程序员。
基层程序员的劳动力再生产状况同样是临时性的与不可持续的。劳动力再生产不仅包括自身吃饭、穿衣和住宿等劳动力维持部分,还包括赡养老人、养育子女、社会交往、自我丰富等劳动力社会再生产部分等。然而,对没有本地城市户口的基层程序员而言,他们的劳动力社会再生产显然是残缺不全的。从工资上看,人工智能程序员收入分化程度很高。S市从事技术管理工作的高职级程序员的年薪往往在百万以上,但基层程序员税前月收入在1万元到2万元之间,很多人每月可支配收入为8000元左右。在这种情况下,基层程序员选择了成本较低、质量较差的生活方式。从居住上看,在S市郊区工作的基层程序员往往与他人合租在公司附近的小区内;而在S市市区工作的基层程序员,则会租住在距离工作地点通勤时间40分钟以内的低租金地段。其中,很多人为了攒钱,将租金控制在了3000元以内,正如以下被访者所述:
“从我住的地方骑单车去公司的话,大概15分钟、10分钟这样吧。一个月租金2500元左右。”(访谈:ZKW,20210816)
“我住的地方不远,大概一站路不到,我每天骑自行车到公司就行。……我是合租,我们有三个房间,另外两个房间的人不认识,租金3000多块吧。”(访谈:WZS,20201118)
“我不住公司附近,我住得比较远,距离公司通勤大概一个多小时。就这样也要3000多块一个月,很贵!”(访谈:CL,20210630)
“我住的地方不是很远,骑车20分钟。这个房子是我自己租的,每个月的租金2000多块吧。我现在最大的花销就是房租和吃饭了。”(访谈:WZH,20200615)
此外,他们在大城市中的生活也呈现出极为“临时”的状态。不少基层程序员虽然会在游戏中大量“氪金”,但在其他生活消费上却极其克制。还有一些原生家庭经济状况较差的基层程序员,面临极大的经济压力,过着贫困而孤独的生活,正如以下被访者所述:
“我下午六点钟下班的话,吃过饭在公司待着,反正回家也是待在租的房子里。房子那么小,还不如在公司。公司宽敞,还有免费的空调。我一般在公司待到九点或十点钟再回家。”(访谈:DHH,20201215)
“其实我生活很失败,我除了想办法跳槽,没有别的什么乐趣。我也想搞些别的东西调节调节自己。比如,平常会搭搭模型啊,拼拼图啊,但生活还是比较枯燥。”(访谈:LTH,20210613)
“我觉得我的生活状态就是,我已经被圈死在这里了。你想想看,就这样说吧,这一年里,我发现除了公司和我住的地方,别的地方我都没有去过。我发现我的生活圈已经被圈死了。我不会玩,超孤独。我除了参与这个内卷,没有别的乐趣了。”(访谈:WP,20210618)
以往学者曾用“除了工作就是睡觉”来描述身处宿舍劳动体制中的农民工的生活状态。当然,与仅有5~10平方米却容纳6~8人并且一层才有一个热水间的农民工宿舍相比①任焰、潘毅:《跨国劳动过程的空间政治:全球化时代的宿舍劳动体制》,《社会学研究》2006年第4期。,基层程序员的生活空间要相对自由,休闲生活也更丰富。但是,与农民工类似之处在于,公司工作时间对他们的生活时间进行了挤压,工作的不稳定感、压力、焦虑蔓延到了他们的生活中,并降低了他们的生活质量。
综上所述,在“即时城市化”的发展策略下,城市政府将其人口划分为拥有本市户籍的城市居民与外来劳动力,并根据“身份”对各类公共资源进行分配。而人工智能公司中的基层程序员是正在经受一线城市筛选的临时劳动力。他们的劳动力使用方式是临时性的,并以高劳动强度、长劳动时间、随时被裁为特点;其劳动力再生产状况也是临时性的,即其劳动力维持的部分能够得到满足,但劳动力社会再生产部分存在较大缺失。基层程序员与农民工虽然都处于拆分型的劳动力使用方式中,但是两者仍然呈现出了一定差异。在跨国资本主导的弹性积累体制中,农民工的拆分主要是“空间性”的,其子女抚养、父母赡养、自身养老等劳动力社会再生产是在遥远的农村进行的。①任焰、贾文娟:《建筑行业包工制:农村劳动力使用与城市空间生产的制度逻辑》,《开放时代》2010年第12期。而在城市政府主导的“即时城市化”体制中,基层程序员的拆分主要是“时间性”的,其劳动力社会再生产是在遥远的“未来”进行的——他们也不清楚自己何时会在哪里安家。当然,相比于遭遇“精神圈地”②任焰、潘毅:《农民工劳动力再生产中的国家缺位》,《中国社会科学内刊》2007年第4期。并以“三和大神”的脱嵌方式留在城市的农民工③黄斌欢:《双重脱嵌与新生代农民工的阶级形成》,《社会学研究》2014年第2期。,基层程序员的未来依然是具有希望的。少数在市场竞争中胜出的精英能获得本市户籍,并过上在S市中心城区有房有车的稳定生活。
在高强度的劳动工作与被歧视的社会生活中,农民工建立起了诸如打工妹、打工仔等身份认同,以对城市中的身份歧视与工作场所中的劳动剥削进行反思与反抗。那么,同样身处城市边缘地带、陷于不稳定劳动状况的基层程序员又存在怎样的身份认同呢?劳动者的身份认同一般根植于他们的过去经验、当下状况与未来期望,并非单一的,而是混杂的、流变的和情境性的。④Ching Kwan Lee,Against the Law:Labor Protests in China’s Rustbelt and Sunbelt.Berkeley:University of California Press,2007.接下来,笔者便从劳动认同、个体认同两个方面入手对这个问题进行分析。
在对农民工身份认同进行研究时,学者发现,农民工在高强度的劳动与饱受歧视的社会环境中,建立起了打工者的身份认同,他们对改变自身命运充满了渴望,并对低下的社会地位抱有怨愤。⑤潘毅:《中国女工:新兴打工者主体的形成》,任焰译,九州出版社,2011年。⑥杰华:《都市里的农家女:性别、流动与社会变迁》,吴小英译,江苏人民出版社,2006年,第249-283页。与此相似,很多年轻的基层程序员面对长时间的工作与相对贫困的生活,则建立起了“码农”认同。基层程序员经常使用“码农”调侃自己的工作看似高端,实则又苦又累,正如以下几名被访者所述:
“我们就是码农啊!是农民。为什么是农民呢?因为农民不就是做技术难度比较低,但又苦又累的活儿吗?我在接到一个新的任务的时候,刚开始时创新性比较高,到后面就是重复性比较高的,所以说,是码农嘛!当然,比真的插秧还是有趣多了。”(访谈:ZHD,20201118)
“码农很贴切!我们大家就是码农。其实为什么要用“农”,就是因为辛苦嘛,工作时间长嘛。我觉得码农本来是程序员用来自嘲的,但是现在大家直接用它来称呼我们,可能曲解了其中一些意思,但我觉得这个称呼还挺贴切的吧。一开始就是程序员自嘲工作时间长嘛,跟农民一样嘛。我现在觉得程序员的工作本质上跟农民也没什么区别嘛,大家都是做一些比较枯燥的工作。”(访谈:ZZH,20210702)
此外,“码农”的称呼还意味着程序员职业看似光鲜,实则劳动地位低下,正如以下几名被访者所说:
“码农码农,不是农业部都认证了吗?(被访者的玩笑话)我们就是像农民一样的勤勤恳恳的代码熟练工,和农民、新生代农民工都没啥区别,都没有什么社会地位的。”(访谈:YP,20210714)
“码农就是对程序员日常工作的直观写照。我们每天干活很累,然后体力劳动比较多。其实我觉得程序员和机械工厂的工人——拿政治课本上的词来讲——都是无产阶级。我们虽然赚了钱,但那都是出卖劳动力换来的,并没有什么社会地位。”(访谈:WZH,20200615)
甚至有基层程序员认为,“码农”已经不足以形容自己低下的劳动地位:
“我们是码农,更是……哈哈哈……打工人太累了啊!真的都不想上班。大家天天都喊着创业,结果还是老老实实地来上班。”(访谈:DHH,20200812)
然而,与农民工以“打工妹”“打工仔”表达对歧视不满不同的是,“码农”更多地体现为一种自嘲,并隐约透露出基层程序员对于承担繁重工作的自豪感,正如SWJ所说:
“我并不觉得农民是一个不好的称谓吧。因为我从小也是在农村长大的,我觉得农民给人的印象就是比较勤劳。对我来说,码农不是一个不好的词,反而是说你很勤劳,可以做自己喜欢的事情。”(访谈:SWJ,20210720)
劳动认同主要表现为劳动者对当下工作生活状态的感受与理解。从这个角度看,基层程序员的劳动认同与曾经的农民工存在相似之处。如果说“打工妹”“打工仔”的身份认同反映了年轻一代的农家子女以劳动换取工资的次等地位,以及其将笨拙的农村身体与现代工业生产相结合的努力①潘毅:《中国女工:新兴打工者主体的形成》,任焰译,九州出版社,2011年。,那么“码农”则反映出编程工作本身的艰苦与繁重,以及基层程序员在劳动场所中的低下地位。
劳动者的社会身份认同不仅包括劳动身份认同,而且包括自我身份认同。自我身份认同是指人们基于历史经验而反思性地对自己的理解和定义,即对“我是谁”这个问题的作答,并显示出其基本的信念,以及面对未来的根本心态与主要策略。经过调研,我们发现,基层程序员的自我身份认同指向了自我进取的奋斗者。这与曾经的农民工完全不同。
劳动者的过往经历对其自我认同的生成有着重要的影响。在笔者所调研的在北、上、广、深等一线城市工作的基层程序员中,有很多人来自安徽、河南、广西等省份的小镇或农村,其出身与农民工相似,但因从小学习努力,获得了二本及以上院校的学士学位。他们具备依靠自身努力向上攀爬的奋斗人格。在学校期间,他们对自己将来的职业方向、劳动境况、生活方式等内容有了初步设想,并通过实习、参加专业大赛、自学编程语言以及升学等手段来提高自己的就业竞争力。
“我读大一、大二的时候,就自己会去网上找网课看。这个网课叫网易云课堂,它有个计算机微专业,从大一到大四,计算机领域内的各个学科门类都有,视频教程可以自己去看,这大概是我的一个自学经历。到大二暑假的时候,我就开始自己去找(IT)这方面的实习去了。”(访谈:DY,20210620)
“其实我研一就在中科院实习了。他们有一个算是联合培养的项目,可以正常发工资,每天结算,就这样,我学到了很多东西。”(访谈:WZS,20201118)
人们的自我认同往往生成于其对过往经历与当下状况的接续性理解中。基层程序员在工作中也极其注重“学习”,并延续着他们的“奋斗”人格。
“我现在还是一直在学习,因为这一行的技术发展得非常快,可能隔一段时间就出了新技术。所以说,我们可能要不停地去适应这个节奏,不停地去学。”(访谈:SWJ,20210720)
“AI算法需要你学很多东西,并不是你学一下就可以了。……我现在还在自学,一方面是靠交流嘛,另一方面就是去看一些前沿的论文,然后去读一些业界大佬的书。我每周基本上会有20%的时间用来自学。”(访谈:CL,20210630)
以往研究显示,农民工的自我认同具有两种取向:团结抗争的阶级行动者和消极被动的自我放弃者。对于一部分农民工而言,打工妹、打工仔等身份认同成为促发其抗争精神和阶级团结的基础①杰华:《都市里的农家女:性别、流动与社会变迁》,吴小英译,江苏人民出版社,2006年,第249-283页。,农民工继而在认同政治的推动下,走上街头,抗议城市与雇主对其公民权利的侵害②Ching Kwan Lee,Against the Law:Labor Protests in China’s Rustbelt and Sunbelt.Berkeley:University of California Press,2007.。然而,还有一部分农民工走向了自我放弃以及“知性和心性上的软弱状态”③周潇:《反学校文化与阶级再生产:“小子”与“子弟”之比较》,《社会》2011年第5期。。他们在各种挫折中变得自暴自弃,成为既脱嵌于城市、又脱嵌于农村,在日结劳动力市场中谋求生存的“大神”。①黄斌欢:《从何而来的“大神”:日结体制与悬浮社会》,《社会发展研究》2021年第4期。然而,基层程序员的自我身份认同与农民工群体并不相同,前者呈现出了更为积极进取的奋斗状态与打拼精神。这种打拼精神源自其曾在中、高考中胜出的经历,继而成为其追求进取的精神源泉。与农民工相比,基层程序员对自身的未来有着更清晰的规划与更切实的追求,其奋斗目标是过上其力所能及的最好生活,至于能不能留在大城市里,并不是他们最在意的。
综上所述,劳动者的身份认同来自他们当下的劳动实践与他们过往的生活经历,并指涉了他们未来的利益行动方式。基层程序员通过对当下工作生活状态与其过往经历的认知与体察,产生了“奋斗中的码农”的社会身份认同——这与农民工的“打工”认同完全不同。此外,基层程序员的身份认同并非一成不变的。当他们向上流动成为管理者后,他们的社会认同便会被管理者、研发者等代替。在这种情况下,基层程序员的利益行动方式也与农民工呈现出了明显的差异。
面对在城市中“被边缘化”的社会状态、高强度劳动以及失业危机等利益受损情况,基层程序员同样存在着不满,并展开了他们的利益行动。但是,基层程序员的利益行动与以往备受关注的农民工呈现出了完全不同的逻辑。农民工反对身份歧视,曾以打工妹、打工仔等身份认同为依托,发展出了群体团结,并采取街头抗议、暴力冲突等群体抗争的方式维护自身的利益。与农民工相类似的是,基层程序员同样对工作环境、工资水平等问题存在诸多不满,但是他们当下的利益行动方式主要以个人“跳槽”为主。
与农民工不同的是,受教育程度较高并具有很强的自我学习能力的基层程序员,对自身职业发展前景拥有比较乐观的态度,对公司工作环境具有较大的期冀。超长的工作时间、不平等的劳资关系、组织内向上流动空间的不足等都会引起程序员的很大不满,并使他们做出跳槽的决定。比如,以下被访者都说道:
“大厂好像都加班。我同学加班,我之前加班,我现在也加班。其实,就看你怎么看,你要是受不了,你可以跳走嘛,我们都这样干的!前两天,拼多多有个员工猝死了。你如果去投诉公司加班的话,好像会留记录的,可能其他公司不会要你了。所以,不爽了,那就走!只有这一个方法。我们也没想过去投诉啊什么的。离职之前,你只要给公司发个电子邮件通知一下,然后一个月之后就可以直接走。”(访谈:CY,20210620)
“公司里面的员工一般嫌工资低、工作理念不合、压力太大,都会选择跳槽来解决的。道理很简单嘛,这些东西不是提出来就能变的,我何必浪费口舌去提呢?谁干不惯就走,再找一家适合自己的公司。这个市场这么大,还愁找不到工作?”(访谈:LL,20210614)
回顾以往,不少行业的农民工常年处于糟糕的工作环境中。他们要么身处弥漫着粉尘、纤维甚至有毒气体的生产场所中,要么承受超长的工作时间、苛刻的管理规定。但是,老一代农民工对工作场所环境的理解较为简单,忍受程度较高,很多人只有在遭受工伤事故、感染了职业病或遇到了工资拖欠后,才开始采取利益行动。与此相比,基层程序员对工作环境拥有更为多元的理解,工作理念不合、工作节奏过快、人事关系复杂乃至饭堂伙食不好等问题都会促使他们离开公司。
除了工作环境之外,过低的工资水平、过慢的工资提升速度也会使基层程序员感到不满,继而离开企业。实际上,基层程序员普遍对诸如购房、结婚等劳动力社会再生产需求存在焦虑,而这些焦虑最终体现为对工资收入的焦虑。在这种情况下,“涨工资”成为所有基层程序员的核心追求。这个追求一旦不能得到满足,基层程序员就会考虑另谋高就。ZKW便告诉我们:
“你总归是有个忍受底线嘛。只能说先把自己的事情做好,如果到了你预期的时间,工资水平没有提升,或者超出了你的忍受底线,你没有得到想要的回报的话,你就得考虑是否要走了。”(访谈:ZKW,20210816)
不少基层程序员还会对不同企业的薪资状况进行比较。他们一旦发现自己所在公司的薪酬水平与其他公司相比较低,便会想方设法跳槽。正如CQ所说:
“KS那边,他们给我们人均4~5万元一个月。在这边,就是你签的协议上的价格,一个月一万多元吧。太低了,太低了!要不是因为疫情,我真的早就走了。”(访谈,CQ,20210824)
久而久之,跳槽逐渐成为基层程序员谋求工资提升的重要方法:
“每个人都会跳槽吧!这不是我个人才有的想法,因为这个行业就是靠跳槽来实现涨薪的嘛!特别是你工作几年之后,当你的技能有了一定提升之后,就会觉得这个公司给的收入配不上你的水平了啊,所以你就会去别的公司了。”(访谈:WZH,20200615)
“人工智能、互联网行业大部分都是这样,开发人员一般喜欢跳槽涨工资。市场上具有3~5年工作经验的技术研发人员一般比较受欢迎,所以他们都喜欢1~2年跳一次,拿更好的待遇。”(访谈:DK,20201017)
当然,通过“跳槽”谋求升职加薪体现出基层程序员对于企业内部晋升规则与渠道的不满。一般而言,所有高科技公司都有着复杂的晋升规则与职级评价体系。比如,阿里集团共有P1到P10的十个职业等级,每一个职级内部又涵盖三个等级,只有P5以上职级员工的工资收入才足以支撑起在杭州安家,过上有尊严的生活。如果基层程序员希望在公司内获得晋升,他首先需要完成规定的绩效考核要求,以获取晋升资格。此后,因为公司不同职级存在严格的编制限制,所以他必须与其他申请者竞争晋升名额。更糟糕的是,公司晋升过程往往并不透明。公司内部的部门纷争、领导个人偏好都会影响个体的晋升结果。QL便告诉我们:
“很多公司的内部晋升机制并不好。有些人在内部做得挺好的,但是可能由于和另外一个人竞争晋升机会落败了,或者是由于领导不太喜欢他,他就一直没有得到晋升。因为公司内部部门关系比较复杂,公司制度又有问题,所以很多人就晋升不上去。”(访谈:QL,20201119)
在这种情况下,人工智能公司内部总会存在同级不同薪、晋升不公正、工资难以提升等问题。所以,相比于谋求组织内部晋升,或者浪费口舌与管理方讨价还价,以及组织群体性抗争,基层程序员更愿意采用跳槽的方式表达对公司的不满和对经济利益的直接追求。
从周边城镇和农村地区来到S市工作的基层程序员虽然也是该城市的临时劳动力,其劳动生活充满了临时性与不稳定性,但他们与大多数农民工不同的是,其对自身的职业发展仍然怀有期盼与信念,并愿意为之而奋斗。这意味着,他们对自身知识技能水平的提升有着更高的要求,并会对无法帮助其技能水平获得提升的公司感到不满。很多基层程序员之所以会跳槽,一个重要原因便是原公司的技术水平过低,无法提供他们所需要的学习机会。比如,LP在谈及他跳槽的原因时便向我们表示:
“我最近的打算,就是明年走吧,然后跳一下,学一学。我主要就是想趁着年轻学点技术,学不到技术就走。我们都准备走的,不走的人(摇头,嫌弃的表情)……你看,这是我做的一个目标追踪项目。你首先要识别人,还要把这个人的轨迹弄出来,给他一个ID。你看,这个就是一个人,而且要给他一个标号,这可以用到安防等各个领域。这是我自己做的哦!那我还是想提升技术的。这边,我们团队中的其他很多人技术都不行,都是我去帮他们做,我帮他们写代码。这样我能攒到什么工作经验?”(访谈:XZQ,20201014)
LP在谈及未来打算的时候,同样对公司的技能水平表示出了不满:
“技术迭代那么快,产品更新那么快,你也得跟上啊。这边的技术水平不行,我继续待下去就要被锁死了。”(访谈:LP,20210405)
CY则从更一般的角度对此进行了解释:
“在AI产业做呢,你的成长就会比较快。但是,如果你成长快的话,你就会觉得在原来的公司肯定是不够的。如果你的技术成长速度跟不上你的心智成长速度的话,你就会有失落感,你可能就会想去动一下,学些新技术了。”(访谈:CY,20210606)
可见,基层程序员对技能水平提升的追求相比于农民工要强烈很多。农民工群体抗争的原因很少是企业技能培养不足或企业本身技能水平过低,但对于基层程序员而言,该问题引发的不满却是和工作环境较差、工资增速过慢一样严重。实际上,大多数人工智能公司自身的技术水平也是不够的。其管理方主要通过快速流动的程序员所提供的新技能来应对持续变换的市场需求。①Peter Cappelli and JR Keller,“Classifying Work in the New Economy,”Academy of Management Review,Vol.38,No.4,2013,pp.575-596.在基层程序员通过跳槽来表达自身不满的同时,人工智能公司也通过持续招工来对自身技术发展进行补充。
综上所述,基层程序员的利益诉求和利益行动与工业制造业中的农民工存在较大差异。他们在对工作环境、工资收入、技能成长等状况感到不满时,并没有采用群体行动的方式表达利益诉求,而是采用了个体主义的行动策略。基层程序员往往将“跳槽”作为解决人际矛盾、晋升瓶颈、过劳低薪等一切问题的有效途径,据此快速地走出劳动困境,实现自身的薪资增长和职级上升。猎聘网的数据显示,传统行业从业5年以下平均跳槽时间为34个月,而人工智能行业从业5年以下的平均跳槽时间是15~16个月。据笔者了解,百度公司某核心部门的程序员虽然一直稳定在2000人左右,但从2020年10月到2021年10月这一年的时间内,该部门共入职1310名正式员工(每周平均入职30人),约占总体量的60%。其离职人数为738人(每周平均离职16人),约占总体量的30%,最多一次一天之内便离职16人。然而,过高的跳槽频率却引发了新问题,即基层程序员构建起了一个以高速流动为特征的劳动力市场,他们在这个劳动力市场之中彼此较量、相互竞争,增加了自身的焦虑感与压力。对各类人工智能公司来说,其所需要的正是留住最核心的高级工程师,而让边缘程序员流动起来。
IT编程工作曾经被描述为一种“朝阳职业”,怀抱技术精英文化、互联网文化和企业家文化的算法工程师们,在一个扁平化的团队组织中,在自由平等的工作氛围中,从事着令人惊异的知识劳动与技术创新。然而,上述关于IT工作的美好想象逐渐被劳动研究者所打破。围绕美国硅谷高科技公司劳动过程的研究指出,高科技公司开始采用成本更低、灵活度更高的离境外包和众包的组织生产模式。②Daren C.Brabham,“Crowdsourcing as a Model for Problem Solving:An Introduction and Cases,”The International Journal of Research into New Media Technologies,Vol.14,No.1,2008,pp.75-90.在这种情况下,世界各地的程序员愈加成为处于不稳定劳动状态中的创业劳工。然而与西方国家的不同之处是,中国采取了国家主导、城市政府与各大企业共同推进的人工智能产业化发展模式。在这种情况下,中国人工智能产业中的基层程序员虽然也面对不稳定劳动的问题,其具体工作生活状况与以往的农民工存在相似之处,但也不同于以往研究所述。
其一,在以“即时城市化”为特征的城市发展逻辑下,基层程序员并非作为城市居民被纳入领先城市之中的,而只是城市的临时劳动力。不拥有城市户籍的基层程序员与农民工相似,同样处于拆分型的劳动力使用方式之下。其劳动力社会再生产被分为居住、医疗、生育、教育、养老乃至机动车牌照获取等不同部分,城市政府依据各类积分政策选择性地满足其部分需求。
其二,与以往的农民工相似,基层程序员同样处于临时性的劳动生活状态之中。人工智能公司对其劳动力的使用是临时性的,基层程序员面临超时工作、年龄歧视、裁员风险等问题。与此同时,他们的劳动力再生产状态也是临时性的。他们往往居住在租金较低的老公寓中,居住条件相对简陋,休闲娱乐比较匮乏。一些学者曾指出,“宿舍劳动体制”的构建使管理方将劳动控制延伸到了农民工的宿舍之中。而对于基层程序员而言,其工作的不稳定感、压力、焦虑也蔓延到了他们的生活中,其工作同样对其生活造成了挤压。
然而,虽然基层程序员的劳动生活遭遇与以往农民工存在相似之处,但他们的身份认同却与后者存在明显不同。基层程序员并没有产生与农民工相似的“打工”认同,他们也没有在此基础上对高强度劳动、身份歧视产生强烈的不满。基层程序员具备的ICT技能使其具有一定的向上流动的可能,他们在中、高考中胜出的经历使他们相信自己能够通过努力奋斗实现这种流动。基于此,他们产生了“奋斗中的码农”的社会身份认同,即一方面使用“码农”的称呼讽刺编程工作看似高端、实则艰苦的特征,另一方面则以更为积极的“奋斗”姿态投入工作。
与此同时,基层程序员对工作环境、工资提升速度、个人职业发展的要求比农民工更高,其利益行动的激烈程度则比后者弱。农民工更注重他们的底线型利益诉求,往往在遭受工伤事故、感染职业病、遇到工资拖欠或追讨社保时,才会采取利益行动。①蔡禾:《从“底线型”利益到“增长型”利益——农民工利益诉求的转变与劳资关系秩序》,《开放时代》2010年第9期。其利益行动也往往以群体抗争为主。基层程序员的利益行动则以极具个人主义色彩的离职为主——他们会因为团队氛围不理想、同事技术水平不高、工资提升速度不快等而另谋出路。
时至今日,人工智能产业中的编程工作已经不再是能够满足技术精英与企业家精神追求的完美工作了。弹性积累下的不稳定劳动状态已经成为全球各地基层程序员的共同挑战。但是,中国基层程序员所面对的不稳定劳动境况仍然不同于其西方同行,并具有自身特征。他们并没有成为独立的创业劳工,而是在“大厂”之间频繁跳槽流动,处于与之前的农民工相似的处境中。如何为人工智能产业基层程序员的职业发展提供足够支持和充分空间,是我们接下来需要认真考虑的问题。