2025年第二季度,我做了一个决定:放弃SAS Programmer的求职。
像分手。不是那种撕心裂肺的分手。是那种你早就知道不合适,却一直拖着不肯说出口的分手。拖到某一天,一个契机——然后你说了,说完了,反而松了一口气。
松了一口气之后,是空落落的。
一
我写了五六年代码。R、Python、SQL,这些是我的日常。2023年秋天,我开始稍微看一点SAS——不是因为我热爱这门语言,是因为招聘JD上写着"必须熟悉SAS"。
以前不是这样的。
以前SP招聘,写过R和Python,那SAS和SQL肯定没问题。逻辑是一样的,语法可以学。这是招聘者的潜台词:我们要的是编程能力,不是特定语言的熟练度。
后来人多了。
人一多,门槛就变了。写过R和Python?不够。必须写过SAS。有没有项目经验?没有?那不好意思,下一个。
我理解这种筛选逻辑。当供大于求,用人单位当然挑最顺手的。
但理解归理解,接受归接受。
我开始学SAS的时候,心里其实有点别扭。不是为了学新东西——学新东西我从来不抗拒。是为了迎合一个我并不认同的筛选标准。
这种感觉,像是被迫去考一个含金量存疑的证书。
其实更早的时候,种子就已经埋下了。2021年,第14届中国R会,线上。MSD的张亦龙做了一个presentation,讲的是用R做临床研究报告和提交。那时候我坐在屏幕前,心想:原来这件事已经有人在做了。不是学术讨论,不是概念验证,是真的在用R做提交。
但我没有当回事。
(人总是这样,听到了信号,却选择性地忽略。)
二
然后我看到了那份报告。
FDA在2025年8月更新了eCTD技术规范9.3版,新增支持.rds、.rdata、.rda等R数据文件格式,允许.zip打包R包提交。PMDA在2025年3月确认接受R用于申报。EMA正在探索使用SAS和R进行审评分析。
以前R脚本要转成.txt才能提交。现在不用了。
这意味着R正在获得监管认可。SAS在监管提交领域的垄断地位,正在被打破。
R Consortium在2023到2025年间牵头了三个FDA试点项目——Pilot 1、2、3——验证R提交方案。三次都成功再现了。
强生用SAS+R混合策略完成了FDA提交——SAS生成ADaM,R生成表格输出。为了保证审评者能重现R环境,他们在ADRG里加了安装脚本和renv.lock。勃林格殷格翰更激进,启动了跨部门的SAS向R迁移,用生成式AI把约20万行SAS宏代码翻译成R。CRO们开始搭建R基础设施,培训员工,建立社区。
JPMA 2024年的调查显示,约59%的公司在临床编程中已经用上了R。
这不是小打小闹。这是行业层面的转型信号。
我突然意识到,我正在追逐的,是一个正在被替代的技术栈。
而2021年那个presentation,原来不是信号。是预言。
三
技术替代这件事,说快不快,说慢不慢。
SAS不会明天就消失。它有几十年的积累,有稳定的用户群,有完整的验证框架。FDA的指南也没有强制要求R,只是提供了技术支持。
趋势是清晰的。
R生态中涌现了{metacore}、{admiral}、{xportr}这些专用包,用于CDISC SDTM/ADaM构造。tidyverse的管道式编程在数据清洗重塑方面灵活直观。开源社区的力量,正在把SAS的护城河一点点填平。
SAS还在依赖DATA步、PROC SQL和自定义宏。不是说这些工具不好——是说,当R社区用元数据驱动的自动化流程替代手动操作的时候,SAS的工作方式看起来越来越像是在用算盘对抗电子表格。
更关键的是生成式AI。
SAS Institute的研究报告指出,大型语言模型能理解自然语言规范,输出符合要求的SDTM/ADaM编程代码。实际案例已经演示了LLM辅助完成SDTM映射、ADaM推导逻辑编写和标准表格输出。
重复性很高的规则性编程工作,正在被自动化工具覆盖。
这意味着SAS Programmer这个岗位的核心价值,正在被重新定义。从"编码者"变成"验证专家"或"数据科学家"。而如果你本来就会R和Python,这个转型反而更容易。
Atorus甚至专门开了Academy,帮SAS程序员学R。培训需求旺盛——这说明市场已经在动了。
我花时间学SAS,是为了迎合一个正在失去垄断地位的技术栈。而我已经掌握的R和Python,恰恰是替代者。
四
劳动力市场的数据也很有意思。
美国SAS程序员平均薪资约9万美元,中位数也是这个数。经验丰富者可达13万美元以上。看起来还不错。
但从2018到2028年,SAS程序员岗位预计会下降约7%。行业对多语言技能的需求增加。
招聘广告越来越关注数据可视化、机器学习、Python/R语言及云计算技能。SAS技能仍有市场溢价,但这个溢价正在被稀释。
中国市场更戏剧化。SAS宣布退出中国,可能影响近500人。国产替代方案(如启维QiviData)开始推广。
PPD/Thermo Fisher在PhUSE年会上分享过他们的经验:初始时几乎没有R基础设施和流程,于是引入RStudio、搭建集中R环境、组织内部"R马拉松"——从零开始,一步步培养团队R能力。他们的结论是,R采纳需要系统的变革管理:领导支持、清晰愿景、持续培训与社区支持。
一家CRO从零搭建R基础设施。这本身就是信号。
一个正在退出的市场,一个正在褪色的技术栈,一个正在被重新定义的岗位。
这就是我在2025年第二季度看到的图景。
五
2025年4月,老父心梗发作,住了ICU。
找工作这件事,突然就不重要了。
不是说不急。是说不出来急。人在ICU外面坐着的时候,脑子里转的不是JD和面试题,是监护仪上的数字和医生的脸色。
那几天我反复想一个问题:如果我现在还在为SAS Programmer的面试刷题,我坐在ICU外面会是什么心情?
大概会更焦虑。不是因为面试本身,是因为我知道自己在为一个不认同的方向投入时间,而这些时间,本可以用在更重要的事情上。
我反而更确定了。
不是那种"大彻大悟"的确定。是那种在医院的走廊里坐了几天之后,对什么事情重要、什么事情不重要,有了一种不需要思考的直觉。
SAS Programmer的求职,不重要。
六
我盯着那份报告,想了很久。
不是纠结要不要继续学SAS。是纠结要不要继续在这个赛道上投入时间。
SAS Programmer这个岗位,正在经历一场结构性变化。监管开放、开源潮流、LLM自动化,三股力量同时作用。它不会消失,但它的性质会变。
从"必须会SAS"变成"会SAS更好,但R和Python更重要"。从"编码者"变成"验证专家"或"数据科学家"。从"垄断地位"变成"竞争者之一"。
而我,一个写了五六年代码、R和Python是日常的人,正在被迫去学一个正在褪色的技术栈,为了迎合一个正在被重新定义的岗位。
这个逻辑,怎么想都不对劲。
像一段早就该结束的关系,你却还在努力维持。维持的理由不是爱,是惯性。
七
所以我放弃了。
不是放弃编程,是放弃SAS Programmer这个特定的求职方向。
我的R和Python,本来就是替代者。我的五六年代码经验,本来就是更稀缺的资源。我为什么要花时间去迎合一个正在褪色的技术栈?
这个决定做出来之后,我反而轻松了。
不再为了迎合JD去学不感兴趣的东西。不再为了一个夕阳职位去刷题、背语法、做项目。可以把时间花在更有价值的事情上——比如深入R和Python,比如学习机器学习,比如做真正感兴趣的项目。
八
夕阳职位这个词,听起来有点悲观。
其实确实有点悲观。
夕阳职位不是消失的职位,是性质正在变化的职位。旧的护城河正在被填平,新的价值正在被创造——这些话说起来轻巧。但对正在这个岗位上的人来说,变化就是不确定性,不确定性就是焦虑。
我已经站在了替代者这边。这是我的幸运,也是我的清醒。
R和Python,开源生态,现代数据科学工具——这些才是未来。SAS不会消失,但它的垄断地位正在被打破。而打破垄断的人,用的是我已经掌握的工具。
所以我放弃了SAS Programmer的求职。
像分手。说出口的那一刻,心里空了一下。但空了之后,是清醒。
不是因为我找不到工作。是因为我不想再为一个不认同的方向投入时间了。
(好穷。但穷和将就比起来,什么都不是。)