今天早上,一位我很尊敬的高级开发人员给我打来电话。他想找个朋友聊聊:因为担心自己只能得到可怜的 12% 加薪——而他所管理的其他初级开发人员,则有望获得 40% 的加薪。他还抱怨道,有 85% 的高级开发人员都需要管理 10 名左右的初级开发者。
我不知道该怎么安慰他。我尽自己所能表达善意,听着这段长达 30 分钟的倾诉。之后,我突然意识到光是倾听并没有太大意义。
在早上,我看到一则关于 Palitana 生产簧风琴簧片的新闻,宝莱坞的艺术家们对这个故事赞不绝口。作为一个印度小镇,Palitana 的工人师傅们没怎么受过教育,并且从 1902 年开始就一直在为英国制作这类乐器配件。
在第二次世界大战之后,他们的命运迎来转机——当时大部分英国殖民地开始抵制由德国生产的产品,其中也包括簧风琴。最终,Palitana 拥有了自己的品牌,并在 114 年之后的今天仍然在谷歌搜索中成为最重要的“簧风琴簧片”关联商品。通过亚马逊,他们的产品得以行销世界各地。
他们成功的关键并不在于自动化,而是对工艺的深刻理解,以及一代代工匠对手工流程的改进。
高超的工艺,也与对行业需求的理解结合起来。
当下,虽然大部分制造业已经实现了自动化,但 Palitana 的簧片仍然需要手工调节才能产生最悦耳的单色——而且至少在未来 50 年内,3D 打印机还无法完美还原其效果。这蕴含着一种重要的启示——工匠们并不是在即兴创作,而是在部件中找到必须优化的部分,确定哪些可以由机器完成,最后利用自己的热情拿出真正完美的产品。
高级开发者正在消亡(真正的消亡)
在编程领域,这种对工艺的追求也在逐渐消失。高级开发人员正在失去自己的优势地位:
- 在线 IDE(JSConsole 及其它同类方案)——能够轻松运行编写中的代码。原本只有高级开发人员能够玩转的东西,如今已经没有什么难度。
- 开源 repos 与论坛,庞大的 API 文档不再需要高级开发人员将其整合在一起。
- 培训视频,只有高级开发人员才有耐心认真吃透的陈旧出版物已经不是主流,从业者也不太需要牺牲周末个人时间刻苦学习。
确实,高级开发人员仍然负责为初级开发者提供各种可复用的构建单元,但如今企业的关注重点已经明显倾向于初级人群。
在我们所处的技术世界当中,经验只会为产品的生命周期增加价值,而不再直接影响到产品本身。
有经验的开发人员很清楚要在哪里找资源,哪些资源能够发挥作用——但也就到这里为止。不是因为他们缺乏热情,而是因为缺乏必要的奖励与动机。
这会带来非常糟糕的负面影响,我这里就甘冒天下之大不韪,说点实话:对于企业而言,高级开发者相当于把石材聚拢成形的框体。
这背后的技术原因在于:
- 互联网民主化
- 模块化浪潮带来的指数级规模效应——软件之间能够相互依托与构建
相信大家也一定能看清这背后的商业原因。初创企业雇主往往更倾向于雇用初级开发人员,而非薪酬水平达到前者 1.5 倍到 2 倍的高级开发人员。高级开发人员只在初级开发团队当中才有存在的理由——而且具体取决于项目规模以及团队的实际需求。
为了保持自己的高级开发者地位,我们必须:
- 保持流程优化——对大批文件进行 docker 化。
- 持续挖掘可以优化的点,但并非必须优化的开发成果。
- 继续在客户并不需要持续使用的现有产品中,开发通用的功能。
- 打磨软技能,让自己的人缘更好一些,同时满足管理层以及销售人员的期望。
如今,高级开发人员的薪酬回报预期开始变得难以预测。Stackoverflow 在 2018 年与 2019 年开发者调查报告,已经非常明确地列出目前薪酬水平最高的技术方向。尽管如此,人们还是在不断猜测哪些技术可能迅速升温,而且永远无法预测接下来会有哪种技术成为高级开发者的必备武器。技术淘汰,总是来得太快,就像龙卷风。
当然,目前比较流行的观点是,我们可以牺牲自己的休息时间以及宝贵的假期来继续学习新的语言。但是,这还不足以帮助大家巩固自己的高级开发者地位。
如果 HR 人员脑子不太好使,即使各位拥有长达 8 年的 Java 开发经验与相对较短的半年 Kotlin 经验,当下也很容易受到仅有 2 年经验的 Kotlin 开发者的冲击。即使是获得了面试机会,对方开出的薪酬水平恐怕也根本无法达到您的预期。像中国以及印度这样的国家,堪称初级开发者的批量制造工厂——他们甚至没有软件开发学士学位。更可怕的是,在美国,freecodecamp、codeacademy 以及 hackathon 文化实际上就是在复制这种轻基础、重应用的经验。
最终,高级开发者将选择出逃:
这并不是什么古老的智慧,只是一种残忍的丛林法则。市场不讲温情,如果我们发现市场空间不再适合自己,就必须屈服于冷冰冰的供求关系。
如果我们原有角色不再受到重视,那么接下来要么改变施展才能的平台,要么改变自己的角色定位。
如今,非技术出身的企业创始人能够直接购买应用程序模板,并借此从投资者处获得可观的资金。对他们来说,高级开发者的主要作用就是拿出更漂亮的 PPT 展示,而非真正能够工作的开发成果。
两个选项:
高级开发者能够选择的去向,从离岸开发合同到 CTO。开出的金额,则一般从 500 美元到 5% 总收益不等(如果项目失败,后一种可能无法带来任何收益)。我们将出售自己的专业知识,并从这两种选择中做出判断:立刻就能拿到的 500 美元,还是充满不确定性的 5%。当然,身为 CTO,您可能会得到应有的待遇,但其可能仍远远低于其他高管人士——毕竟我们是支持企业建筑的地基,而非吸引投资者的墙面彩绘。
而且可以想见,入职之后您肯定会认识一些销售主管,他们拿到的薪酬与股权要远高于您——毕竟客户可是人家谈下来的。
第三种选择:
接下来我要提出的,是很多朋友可能从未考虑过的第三种选择。为什么不以竞争对手的身份进军市场?从技术上讲,即使是哈佛大学或者沃顿商学院的高管,也很乐于选择这样的道路。这里我们先来了解需要解决的问题:
- 如何进行市场调查
- 如何进行广告宣传
- 如何获取投资
事后看来,这些问题只是管理学教授们的废话。我们真正需要关注的,其实只有以下两点:
- 他们想要什么
- 我们能提供什么
身为一名资深开发者,我们更擅长回答第二个问题。回答第一个问题需要真正的研究,但也未必非得报考相关专业。
这里我总结出了一种非常简单的方法——别看它简单,但已经得到无数成功企业家的验证。
另外,大家也不需要在自己的领英资料里添加什么企业家标签。最重要的,是培养我们自己的创造力;在获得了良好的热情与能力组合之后,实现目标将只是时间问题。
我们首先构建自己的解决方案,尝试将其宣传给 10 个人;进行版本迭代,再宣传给另外 10 个人,然后将这些人群归类为:
- 手握雄厚财力的人,即投资者
- 拥有大量受众的人,即媒体
由于我们已经拥有 20 位受众,所以这一切并不像听起来那么困难。就这么简单,刚刚我们还是个为了 12% 加薪而气得不行的员工,现在我们已经踏上了自己的创业之路。
更新
我在文章中对高级开发者的未来前景很不看好,这也激起不少读者朋友的热烈讨论,其中当然有一些存在偏见的观点。我觉得有必要列出一些数据作为补充,也感谢各位的积极回应。
我在这篇文章中传达的主要观点,在于一部分有能力的软件业同行应该在职业生涯当中做出新的探索与进展。其中也包括我自己,我曾经在不少企业担任核心产品的软件开发者,后来也尝试过自由职业者等其他选择。
我并不是那种极度迷信调查结果的人,但由于缺乏关联性足够强的故事,观察结果很容易被视为“存在偏见”。根据我的个人观察,我得出了以下结论: 软件工作的跳槽率最高——理由主要是薪酬水平,或者对管理层不满意。也有不少做得不错的从业者最终也进入了管理层,成为自己最讨厌的家伙。拜拜,咱再也不是开发人员了。 如果没有选择跳槽,那么大多数从业者会变为远程自由职业者。自由职业早已存在,只是目前变得更加流行。远程自由职业者的存在感不强,但高级开发者却希望过得更好。 当个人目标与管理层目标有所偏差时,顶尖开发人员的表现也会快速下滑——这一论断来自某软件开发总监的文章,获得了 4200 个赞。 彭博社表示,软件工程是个注定消失的职业,从业能力从 35 岁起即快速下降。
这里我会再强调一次,以上只是来自学术研究或者调查的结论,我其实并不怎么在乎。但是,纵览 reddit 上的相关帖子,我们也能看到整个软件行业对于“高龄”开发者们的偏见与打压。总结:幸福需要一点点运气,而我也是个有点运气的人。其中需要改变,改变非常痛苦,但也教会了我很多,包括不少非常实用的技术与技能。如今,我乐于说出这个很多人讳莫如深的观点,我甚至觉得咱们没必要为此难过。这就是市场的力量,而从长远角度来看,这种力量同样由技术本身所驱动。只是在面对这种必然时,身为当事者的我们多少会心有戚戚。