随着越來越多的公司裁撤 CTO 崗位,很多人便好奇,倘若技術部門在不懂技術的人管理下,會是什麽樣的?近日在 HN 上,一篇标題爲《I accidentally saved my company half a million dollars》(我爲我的公司節省了 50 萬美元)的文章登上熱榜,吸引了不少讀者的注意。
在這篇文章中,作者詳述了公司的分析平台在一群不專業的工程師設計下留下的技術債務,拆開了管理層需要不斷晉升所做的 " 面子工程 ",分享了識别出色的工程師果斷行事帶來的改變,道出了科技行業從業者在職場都會遇到的 " 加薪 "、" 彙報 " 的無奈。
原文:https://ludic.mataroa.blog/blog/i-accidentally-saved-half-a-million-dollars/
作者 | Ludicity 編譯 | 蘇宓
出品 | CSDN(ID:CSDNnews)
以下爲譯文:
不容置否,我的确在大約五分鍾内爲我的公司省下了五十萬美元,這比我在整個職業生涯中爲雇主創造的金額還多。
然而,我并沒有因此而感到高興,甚至認爲這件事是「可恥」的。接下來,讓我談談爲什麽發生這種情況吧!
背景
幾年前,我所在的這家公司決定要創建一個分析平台,并想要轉型爲 " 數據驅動 " 型的公司。于是,他們先雇傭了一群非常有才華的人希望來實現這一目标,後來又雇傭了五倍多在我看來起不到什麽作用的人。
當時,我剛剛畢業,就以數據科學家的身份加入了這家公司。實際上,在投入工作後的很長一段時間裏,我們根本沒有做任何有關數據科學的工作。
在我看來,這家公司實際上需要做的是解雇每個團隊中的大多數員工,隻留下 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 萬英鎊。我得到了一箱免費啤酒。