“5 分钟内为公司节省了 50 万美元,要求涨薪却无果,我有些后悔了!”
↓推荐关注↓
转自:CSDN(ID:CSDNnews)
随着越来越多的公司裁撤 CTO 岗位,很多人便好奇,倘若技术部门在不懂技术的人管理下,会是什么样的?近日在 HN 上,一篇标题为《I accidentally saved my company half a million dollars》(我为我的公司节省了 50 万美元)的文章登上热榜,吸引了不少读者的注意。
在这篇文章中,作者详述了公司的分析平台在一群不专业的工程师设计下留下的技术债务,拆开了管理层需要不断晋升所做的“面子工程”,分享了识别出色的工程师果断行事带来的改变,道出了科技行业从业者在职场都会遇到的“加薪”、“汇报”的无奈。
原文:https://ludic.mataroa.blog/blog/i-accidentally-saved-half-a-million-dollars/
不容置否,我的确在大约五分钟内为我的公司省下了五十万美元,这比我在整个职业生涯中为雇主创造的金额还多。
然而,我并没有因此而感到高兴,甚至认为这件事是「可耻」的。接下来,让我谈谈为什么发生这种情况吧!
背景
几年前,我所在的这家公司决定要创建一个分析平台,并想要转型为“数据驱动”型的公司。于是,他们先雇佣了一群非常有才华的人希望来实现这一目标,后来又雇佣了五倍多在我看来起不到什么作用的人。
当时,我刚刚毕业,就以数据科学家的身份加入了这家公司。实际上,在投入工作后的很长一段时间里,我们根本没有做任何有关数据科学的工作。
在我看来,这家公司实际上需要做的是解雇每个团队中的大多数员工,只留下 1-2 位真正了解领域知识的人,然后允许他们与优秀的工程团队合作构建明智的流程和系统。
现实却是,这家公司雇佣了一群大公司的顾问。你可能已经能猜到接下来会发生什么。
不过,当时我还很年轻,相信了公司“画的大饼”。高管们不断告诉我们,他们对我们推出新的人工智能项目计划感到多么兴奋(然后告诉我们没有时间,所以我们能否以电子表格形式向他们提交该计划),而我则请求一些计算资源来执行机器学习任务,或者设置数据管道。
遗憾的是,我的请求从来没有得到响应。相反,我们被告知只需等待高级分析平台(AAP)的部署。此时是 12 月,而我们被通知 AAP 将在 1 月份推出。
然后时间来到了 1 月,我又被告知要耐心等待,它要到 3 月份才会推出。
到了 6 月,我被告知这个项目因为疫情而暂停了——这是一个非常方便的借口,因为他们已经把整个项目搞砸了,但这为他们争取到了宝贵的时间。
到了第二年的 12 月,我已经离开了这家公司,但 AAP 仍然没有见到影子。
我们再跳到三年后。AAP 终于准备好「面市」了。事实证明,原来我在公司时提出需要的功能根本没有在计划中,所以我猜他们在我离职前,对我做的种种承诺,都只是在欺骗我。
后来,这家公司的四名工程师在同一个星期内离职,我回去与这家公司的高管进行了交谈,因为我知道他们需要一名真正的工程师,但他们找不到。
虽然我是一名经验远远不及许多人的工程师,但我具备不断学习的能力,也可以毫不惊慌地阅读任何文档。与此同时,我也提出了自己的入职条件是一大笔钱,并且他们必须将我放在 AAP 团队,因为该团队是公司唯一一个能够使用实际工具的团队。
这真是太糟糕了
重新进入公司之后,万万没想到,这里像是一个疯狂的技术债务垃圾场。以下是一些有趣的细节。
我招聘了我的一位朋友进公司,在入职的第一天,他在项目的代码库中找到了一个文件,如果将产品移动到错误的文件夹,该文件就会通过我们的 CI/CD 管道删除生产数据。这个文件还包含了管理账户所需的密钥和密码。这个文件是由之前的首席工程师创建的,在麻烦找上他之前,他已经调到了新的岗位上了。
整个系统是由 Python 解析的电子表格拼接而成,然后上传到 S3(亚马逊简易存储服务),再由 Lambda 解析为更多的 S3 文件,MongoDB 将 S3 文件提取,然后通过另一个 Lambda 传递到 S3,S3 文件通过 Snowpipe 传递到 Snowflake,新的 Snowflake 数据由 JavaScript 存储过程转换成关系格式...这就是你编辑某人的数据库访问权限的方式。
整个过程就像是为了将一个 2KB 的 CSV 上传到一个包含用户数据库角色信息的数据库中。这被认为更容易审计。
所有内容都转换为 CSV,因为安全团队要求能够轻松扫描恶意内容,然后他们从来没有部署扫描工具,这样操作下,导致我们拥有了 CSV 的缺点,却没有 CSV 的任何优点。
每个 Lambda 函数(所有 ETL 管道的支柱),都以 counter = 1 开始,因为早期的某个版本使用了计数器,然后人们一直在复制这行代码。高级数据工程师也一直在复制这行代码。
CI/CD 管道中的测试套件已经失败了几个月,因为有人在调试过程中选择使用 Linux 的 tee 命令(用于显示程序的输出并将其复制到一个文件中)将任何错误同时记录到 stdout 和文件中,但 tee 成功执行会覆盖失败测试的错误代码。
要获得访问任何 API 的密码,你需要搜索 AWS 服务中的“service-password”,然后返回值是...“service-password”(就是说,实际上所有值都与键相同),然后你使用它来查找实际密码,但在一个完全不同的服务中。
没有人知道为什么我们这样做。
生成管道配置文件的脚本以 600 行注释开头,因为以前的高级工程师一直在注释这些代码行,以备将来不时之需。这些代码行实际上只是将相同的变量设置为不同的值,而且它们都已经在 GitHub 上了。
截至目前,我还没有进入正题,容我缓一缓,因为我要生气了。上述的这些细节很重要,因为现在你明白了这种“运营上的无能”是如何让你浪费了如此多的钱来处理每天不到 1TB 的数据,这笔支出已经超过了团队所有人的工资了。
预算
值得一提的是,这个平台实际上从来没有机会为公司赚取任何钱。以前的工程师做了一些“虚假”的操作,让人觉得他们取得了巨大的胜利,但实际上,这种模式比我们之前的运营模式昂贵了许多倍。
问题是,我们假装整个团队在做某事,并保持在预算范围内,因为公司负担不起在这个虚构的社交中花费无限的资金。然而,我们的数据库成本预算严重超支。我不确定最初的估算是多少,但我认为一年的运营成本约为 20 万美元,但我们现在接近了 100 万美元。
一些简单的事实:
我们使用 Snowflake 作为数据库,它根据你用于运行查询的计算机的大小来收费。
只有在计算机处于开启状态时才需要付费。
我们可能每周运行数千次查询,大多数开发人员都在尝试对没有人阅读的 PowerBI 报告进行一些小调整,平均每次运行大约需要 2 秒钟。
计算机在每次查询后被设置为闲置状态,持续 10 分钟。
我在加入团队的大约一个月后注意到这一点,并提出了一些建议...不要让计算机运行比每次查询需要的时间长两个数量级。
简单做事
不管怎样,几个月后,公司终于给我一张卡片,上面写着“发现:优化成本”。
现在我必须优化成本,以便在下一次会议上有些话可说,幸运的是,我知道一个方法!我想要按下我内心认为显然应该按下的按钮,对我的测试进行验证。
我们的另一个团队有一个看起来很优秀的新人,所以我问管理层是否可以给他管理员权限,因为我们需要有能力的人。他们说不行。后来,我向他提供了一些较低级别的数据库凭证,从技术上来说,我没有被告知不要这样做,因为我给他开设的权限也不是管理员权限,让他进行健全检查,看看是否可以节省资金。
在那个星期的最后一天下午 4 点,我拉了一个小组,里面都是优秀的工程师,没有项目经理,然后我们就开干了!其实也就花了 5 分钟的时间在 GUI 配置面板中解决了低效率的问题。
混乱降临
当我在下一个星期一回到工作岗位时,我怀疑这会节省大量的资金。只是没想到的是,我们的预计账单从一百万美元降至了五十万美元,每个人都感到震惊不已。
我的团队将其宣传为巨大的成本节省,但实际上,我们只是用灭火器来扑灭我们点燃的一堆钱。
在这件事发生之后,没想到的是,混乱也随之而来:
一方面,我的团队遭到了其他团队的“围攻”,他们坚持认为他们团队一个新人的加入,让我们实现了这种成本节省。他们这么说是因为这样可以让他们在公司内部的地位更高。
另一方面,虽然我的主管经理们非常高兴,但他们悄悄地建议,不要将这项更改扩展到所有计算机上(此前为了安全起见,我只做了一些),因为如果我们部门因此大出风头,也会遭到内部排挤。这句话的“潜台词”是:如果我们做得足够慢,就能凸显这件事非常难,需要付出巨大努力。
再者,我被要求写一些 PowerPoint 演示文稿,其中需要包含诸如“对用户使用模式进行仔细的统计分析,最终数据表明有机会更有效地分配资源”之类的短语,这意味着本来很简单的事情,而我们需要收集更多数据,然后才能决定不让昂贵的机器整天闲置。
在这个过程中,我每天都特别害怕有人来问我,以及让我解释一下如何发现这项优化措施的。不过,我的经理无可避免地需要对外不断谈论这种优化方式。他们实际上是相当不错的经理,只是整个部门内部,像许多其他部门一样,都蕴藏着一种奇怪的政治心理,他们需要靠这些“优化”业绩,来提拔高管。
结局和教训
通过识别一些出色的工程师,果断行事,我们带来的成果相当轻松地超越了整个部门。事实上,公司有很多有能力的人在那里,只是被组织完全剥夺了权力。
遗憾的是,我在节省了 50 万美元后向管理层要求涨薪 3 万美元,但我的消息仍未读。我怀疑最终我可能会得到要么什么都没有,要么只有 5 千美元。
在给公司系统优化之后,现在的我要参加更多的会议,因为每个人都想谈论一下我们如何节省钱,每参一次会,我都必须要制作一个 PowerPoint 演示文稿,“太痛苦了”。
现在仔细想想,如果不做任何事情,我可能会更好。我花了五分钟的时间,取得了职业生涯中最大的成功,但立刻受到了“惩罚”。
网友热评:深有感受!
随着作者 mataroa 将自己的经历发到网站上之后,不少网友表示感同身受(https://news.ycombinator.com/item?id=38069710):
@jsmith 说道:
试图通过减少闲置计算资源、清理掉数 PB 的未使用存储以及在测试环境中使用按需计算来每月为我的公司节省 10 万美元。结果是,我遭到了董事们的连珠炮式提问,工程师们提出了各种假设,直到我最终放弃了。我曾经认为,创业公司将是少数真正关心精益和高效的地方之一,但事实证明,只有当它们是自负盈亏时,这一点才成立。
justin_oaks :
这就是技术上有能力和无能力之间的区别。我们可以争论是否存在 10 倍开发人员,但我希望我们能达成一致的一件事是:某些问题无论我们投入多少无能的人来解决问题都无法解决。
WebiBlino:
我的公司向顾问支付了 25,000 英镑以提高效率。每项工作节省了大约 5 分钟的时间。我编写了一个工具,每个案例节省了大约两个小时的时间,总共为公司节省了大约 50 万英镑。我得到了一箱免费啤酒。
- EOF -
关注「程序员的那些事」加星标,不错过圈内事
点赞和在看就是最大的支持❤️
微信扫码关注该文公众号作者