照片由 markuswinkler 提供 (https://unsplash.com/@markuswinkler)
阅读有关开发者的头条新闻时,很难不让人产生人才短缺的印象。这听起来很有道理,对吧?如果公司能轻易地用更便宜的人填补职位空缺,他们就不会付给某人每年 10 万美元的薪水。但是开发者其实并不短缺。不相信我?
你可以复制粘贴一份通用的开发者职位描述,并在 LinkedIn 上创建一个免费的招聘启事。你至少会得到十几个申请者。如果你向 LinkedIn 付费推广这个职位,你还会得到几十个。作为一名招聘经理,我已经看到这种情况上演过几十次了。
既然有几百人申请一个职位,你应该能够把薪水压低到每年 10 万美元以下,对吧?
错。
开发者并不短缺
更准确地说,自称为开发者的人并不短缺。短缺的是合格的开发者。
会做急救并不能让你成为一名医生。会用电子表格并不能让你成为一名会计。而构建过一个应用程序并不能让你成为一名开发者。
这在任何开发领域都是如此。懂 React 并不能让你成为一名合格的前端开发者。懂 Node.js 或 Django 并不能让你成为一名合格的后端开发者。用 Solidity 编写过一个 ERC-721 代币也不能让你成为一名合格的区块链开发者。同样地,训练过一个神经网络也不能让你成为一名深度学习工程师。
来自前端工程的一个例子
看着前端开发,人们很容易会想:“哦,我只需将一些 div 构造成 React 组件的线框,添加一些 CSS,瞧,我就有了一个 Web 应用程序。” 确实如此,但这很可能是一个速度缓慢、代码混乱且 SEO 很差的应用程序。
你必须能够兼顾不同的浏览器。你必须知道如何优化组件加载,并在正确的时间和地点调用 API。你必须知道如何构建一个允许多名工程师共同贡献代码而不会相互踩脚的代码库架构。你必须知道在功能相同的情况下,为什么要选择这种 CSS 解决方案而不是另一种。你必须使用相当现代的工具来提高生产力。如果页面加载缓慢,你必须知道如何加速它。你必须了解 SEO 和移动端优化是如何运作的。你必须熟悉各种各样的库,这样你才不会重新造轮子。而且,虽然你不需要成为 UI 或 UX 专家,但你至少需要知道一些基础知识。你必须能够识别内存泄漏并避免它们。你必须在架构上支持你的应用程序无缝运行 A/B 测试。你的架构需要有正确的抽象,以使功能和库的切换无缝衔接。
公司最终会在吃了苦头后明白,不是每一个自称为开发者的人都真正知道自己在做什么。而且,由于糟糕的软件绝对会严重拖垮公司的收入,他们明白只能聘用合格的开发者。
让我们用区块链开发者来做同样的推演。
仅仅因为你在 mainnet 上部署了一个智能合约,你并不会自动成为一名智能合约开发者。
那么,是什么让你成为一名合格的智能合约开发者呢?
就像前面的例子一样,你知道一个很长的“不该做什么”的清单。仅仅因为你的代码能编译并通过测试,并不意味着它就是好代码。后端工程师知道他们可以随意对数据库建立索引,但以某人名字的首字母建立索引是个坏主意,因为包含常见字母的索引会超载。前端开发者知道,应当尽量减少依赖于 API 调用的组件挂载,以避免在网络缓慢时出现空白页面。他们知道某些 CSS 模式在特定浏览器上不起作用,或者性能不如其他模式。
你能为区块链列出一个类似的清单吗?(在不使用 Google 的情况下?)现在就试试。这个清单有多长?你确定你涵盖了那些主要问题吗?
招聘经理希望确信你知道这个清单是什么。你不可能在仅仅 4 周的基础学习和构建简单的智能合约之后,就能对哪些是不该做的事情了如指掌。
我们刚才讨论了不该做什么,那么知道解决重复出现问题的优良方法又如何呢?你知道有哪些模式吗?还是说,你会因为不重复利用现有的行业知识而糟糕地重新造轮子?你知道你是否应该在 L2 上开发吗?如果是的话,你将如何与 L1 进行通信?你能够从所有的需求中退后一步,思考如何以高 gas 效率的方式对你的数据进行建模,并且还能灵活应对未来的变化吗?安全性是一个大问题。相同的黑客攻击一遍又一遍地发生,因为开发者通常不研究这个。这让声誉良好的招聘经理害怕雇佣区块链开发者。
以上这些并不是为了设置门槛或人为制造排他性。这也不是在贬低那些正处于学习旅程早期的人。
关键在于,如果你的最高水平就是展示几个基于在线课程的简单项目,公司就有充分的理由拒绝你的申请。
半杯满的心态

照片来自 https://pixabay.com/photos/optimism-optimistic-pessimism-619018/
但仅仅因为杯子里装了 50% 的水,并不意味着它是半空的。
对于这些事实,存在一种有用且真实的“半杯满”的解读方式。
任何具备一般聪明才智的人,只要经过足够刻苦和足够长时间的训练,都能在几乎任何编程领域成为一名高级工程师。掌握一门学科并没有什么神奇或神秘的地方。这已经被做到过几百万次,并且还将再被做到几百万次。
事实上,你完全可以靠自己做到这一点。当然,我们相信 RareSkills 能够加速你成为高级工程师的道路。但开始并完成这段旅程取决于你自己。
这不应该让你感到害怕,它应该让你感到兴奋。你所要做的就是超越你的同行正在做的事情,然后公司就会来找你。就这么简单。是的,这是艰苦的工作,但任何告诉你不需要努力工作就能获得理想高薪工作的人,都是在忽悠人。是的,无需经历艰苦而昂贵的法学院、LSAT 以及律师资格考试就能获得律师般的薪水,这是一件非常美妙的事情。但是,聪明地工作并不意味着逃避艰苦的工作。这意味着在能够高效推动结果的活动上努力工作。
努力工作的真正定义
努力工作并不意味着做令人厌恶的工作。
在没有前途的职位上为糟糕的老板拼命工作,这是你应该避免的不良努力。为了掌握稀有技能而拼命工作,从而让你跻身于一个激动人心的领域的前沿,这是令人向往的努力。拼命学习那些无法真正提升你的知识或对求职毫无帮助的东西,这是不理想的努力。能够让你朝着目标实现质的飞跃的拼命工作,才是理想的努力。
公司强烈偏爱高级工程师是有充分理由的。这是无法回避的现实。成为一名合格的开发者没有捷径可走。
然而,如果你能以最高效率进行学习,这段旅程可能并没有你想象的那么长。
这就是我们存在的意义。如果听凭运气,成为一名高级工程师需要数年时间。我们相信,如果你与充满动力且聪明的人一起学习,并在已经完成这段旅程的人的指导下,这段旅程可以大大缩短。
我们希望你成为一名合格的开发者。因为合格的开发者确实很短缺。
最初发布于 2022 年 11 月 11 日