編譯 | 蘇宓
出品 | CSDN(ID:CSDNnews)
在 Reddit 上,一位干了 25 年的老程序員寫下了他的離職感言,他直言:“我干了這么多年,但從沒(méi)見(jiàn)過(guò)這種情況,就算是最糟的公司也沒(méi)這么離譜。通常技術(shù)債只是讓開發(fā)的人頭疼,可在這家公司,我眼睜睜看著技術(shù)債導(dǎo)致客戶大批流失,卻無(wú)能為力?!?/p>
更離譜的是,這里的問(wèn)題不是代碼太老舊,而是公司根本不讓動(dòng)。修了一個(gè) bug,新問(wèn)題馬上又冒出來(lái)??蛻粼谑芸啵_發(fā)者也在受罪。
這篇帖子一發(fā),很快就在 Reddit 上引起熱議,許多開發(fā)者表示深有同感,也分享了自己遇到的類似“爛攤子”經(jīng)歷。究竟是什么讓這家本應(yīng)高速成長(zhǎng)的創(chuàng)業(yè)公司陷入混亂?接下來(lái),我們不妨一起看看~
前因
事情發(fā)生在一家 VC 支持的初創(chuàng)公司,該公司研發(fā)的產(chǎn)品是一款面向工程和技術(shù)人員的移動(dòng)應(yīng)用。至于具體的應(yīng)用名稱,這名老程序員并未透露,只表示,此款應(yīng)用在過(guò)去增長(zhǎng)很快,廣告投得也多,銷售團(tuán)隊(duì)也很能「打」,但在最近幾個(gè)月,公司卻被大量客戶流失和業(yè)務(wù)縮水搞得焦頭爛額。
表面上看公司還在擴(kuò)張,實(shí)際增長(zhǎng)幾乎為零。
這位老程序員坦言,罪魁禍?zhǔn)字挥腥齻€(gè)字:技術(shù)債。
“客戶被逼著做 QA”
他解釋說(shuō),很多技術(shù)問(wèn)題都是不到一年時(shí)間里積累起來(lái)的巨額技術(shù)債造成的。這個(gè)應(yīng)用是為專業(yè)人員在現(xiàn)場(chǎng)執(zhí)行工作時(shí)用的,但近來(lái)使用它的客戶頻繁遇到數(shù)據(jù)丟失、應(yīng)用崩潰,甚至根本打不開的情況,有些客戶干脆轉(zhuǎn)向競(jìng)爭(zhēng)對(duì)手。
糟糕的是,這些 Bug 修不完:修了一個(gè)問(wèn)題,又冒出兩個(gè)新問(wèn)題。
這就給客戶一種“你們根本沒(méi)在修?。 钡母杏X(jué)。
該初創(chuàng)公司現(xiàn)有的研發(fā)團(tuán)隊(duì)自己也很崩潰,因?yàn)檫@個(gè)項(xiàng)目用的是 React Native 技術(shù),依賴一大堆 NPM 包,其中不少早就沒(méi)人維護(hù),稍微一碰就崩。
為了繼續(xù)用,有些包不得不自己 fork(復(fù)制一份自己維護(hù)),還有的因?yàn)橐蕾嚊_突也被迫 fork。
最近一個(gè)讓客戶出問(wèn)題的包,其實(shí)早在 6 個(gè)月前就沒(méi)人管了,現(xiàn)在直接在客戶設(shè)備上崩潰。公司里的人完全復(fù)現(xiàn)不了這個(gè)問(wèn)題,有人甚至親自跑到客戶現(xiàn)場(chǎng),用 Macbook 連上他們的 iPhone 調(diào)試,還是查不出原因。
這名老程序員表示:“那這個(gè)依賴真的有必要嗎?其實(shí)并不需要,但大家就是不敢刪?!?/p>
據(jù)這位老程序員透露,對(duì)依賴相關(guān)的根本問(wèn)題,公司從不去解決,而是頭疼醫(yī)頭、腳疼醫(yī)腳。比如:應(yīng)用初始化時(shí)完全沒(méi)有日志。這已經(jīng)多次引發(fā)線上事故。原因在于后端要求用一個(gè)自定義 logger 接入觀測(cè)系統(tǒng),而這個(gè) logger 會(huì)“屏蔽”常規(guī)日志。
為了解決這個(gè)問(wèn)題,該研發(fā)團(tuán)隊(duì)只能做出一些臨時(shí)“補(bǔ)丁”:增加一堆“驗(yàn)證器”去檢測(cè)應(yīng)用能否啟動(dòng)。
結(jié)果,這又引入了兩個(gè)新依賴和大約 50 個(gè)額外的間接依賴,只是為了掩蓋根本問(wèn)題。但因?yàn)楸镜乜床坏藉e(cuò)誤,新 bug 還在不斷冒出來(lái)。
更糟糕的是,該項(xiàng)目的日志系統(tǒng)本身完全不可靠,要么是一堆沒(méi)人能讀懂的垃圾文本,要么啥都沒(méi)有。
現(xiàn)有的新研發(fā)人員無(wú)法從觀測(cè)、遙測(cè)或 bug 追蹤工具里看出任何有用信息。但公司內(nèi)部有話語(yǔ)權(quán)的高層出于個(gè)人喜好,強(qiáng)行規(guī)定“不許動(dòng)”。
于是,一旦系統(tǒng)出問(wèn)題,真正負(fù)責(zé)的人根本不知道,只能靠客戶自己報(bào) bug 和崩潰。
與此同時(shí),“開發(fā)體驗(yàn)也很差。應(yīng)用依賴的子包一改就得重建,哪怕只改一行代碼,也得等幾分鐘重新編譯,沒(méi)法調(diào)試,更沒(méi)法熱重載。而且這也是公司的硬性規(guī)定,不能動(dòng)”,該老程序員吐槽道。
此外,公司還有很多“表面功夫式”的規(guī)定。比如,強(qiáng)制要求所有新的前端組件都要寫 Storybook,但 Storybook 已經(jīng)壞了半年沒(méi)人修。結(jié)果大家只能把東西丟到錯(cuò)誤的文件夾里“應(yīng)付差事”。修的時(shí)間沒(méi)人給,但規(guī)矩還是要遵守。
簡(jiǎn)單來(lái)說(shuō):客戶在忍受 bug,開發(fā)在忍受工具。
“這是文化問(wèn)題,不是 skill issue”
在這名程序員看來(lái),真正的根源不在于研發(fā)團(tuán)隊(duì)能力不行,而在于企業(yè)文化:
公司里流行一句話:“這是 skill issue(水平不行)”。開發(fā)者之間會(huì)公開羞辱。當(dāng) CEO 問(wèn)“為什么應(yīng)用老是崩”,沒(méi)人能回答,除非有人跳出來(lái)說(shuō):“這是因?yàn)槟銈儾粫?huì)寫代碼”。這已經(jīng)變成文化了。
初創(chuàng)團(tuán)隊(duì)普遍抱有一種錯(cuò)覺(jué):“初創(chuàng)公司就該寫爛代碼”。團(tuán)隊(duì)的工作模式基本就是兩種:要么趕著上線新功能,要么趕著修客戶 bug。
但偏偏負(fù)責(zé)修問(wèn)題的團(tuán)隊(duì),正是制造問(wèn)題的團(tuán)隊(duì)。每當(dāng) CTO 或其他人想要嘗試解決根本原因或改善工具鏈,內(nèi)部完全沒(méi)有動(dòng)力,最終不了了之。
一句話總結(jié):再好的戰(zhàn)略,也救不了爛文化。
最后的選擇
這名老程序員說(shuō),他從這家公司學(xué)到的唯一經(jīng)驗(yàn)是:
當(dāng)新人抱怨“東西太難用”時(shí),應(yīng)該認(rèn)真聽(tīng)。
當(dāng)有人動(dòng)不動(dòng)甩鍋“skill issue”時(shí),要毫不客氣地讓他閉嘴。
最終,他決定離開。而他的整個(gè)團(tuán)隊(duì),也都在面試新工作。
這篇帖子在 Reddit 上引發(fā)了不少共鳴,很多開發(fā)者分享了類似的“戰(zhàn)場(chǎng)故事”。
有位名為 zapporius 的網(wǎng)友分享道:
我之前最后一份工作的公司,問(wèn)題出在 CTO 身上。他們?cè)陉P(guān)鍵程序里設(shè)計(jì)了一個(gè)效率非常低的操作,算法復(fù)雜度是 O(n2),自己完全沒(méi)意識(shí)到,直到我做了簡(jiǎn)單的性能測(cè)試才發(fā)現(xiàn)。CTO 對(duì)我發(fā)現(xiàn)并記錄這個(gè)問(wèn)題非常不開心,他和他的親信一直在掩蓋問(wèn)題、淡化責(zé)任,搞得好像沒(méi)什么大不了的。這徹底打破了他們自認(rèn)為“很厲害很酷”的幻想。
與此同時(shí),CEO 還在向投資人夸???,說(shuō)公司所在的市場(chǎng)潛力有萬(wàn)億美元,用戶有上百萬(wàn),而實(shí)際上他們的產(chǎn)品連六個(gè)人都放不進(jìn)一個(gè)會(huì)議房間。我甚至提出過(guò),把項(xiàng)目分叉,嘗試不同的設(shè)計(jì)方案和取舍,看看能不能解決問(wèn)題。
結(jié)果公司的人說(shuō):“不,我們現(xiàn)在需要你去做一年前向投資人吹噓的那個(gè)‘區(qū)塊鏈’功能,投資人現(xiàn)在在追問(wèn)它在哪里?!?/p>
我照做了一陣,然后就徹底離開了這家公司。
還有開發(fā)者吐槽稱:
我雖然不在創(chuàng)業(yè)公司,但也遭遇過(guò)類似的文化問(wèn)題。
公司管理層非??粗啬承〇|西表面上“運(yùn)行得好”,但根本不關(guān)心它是怎么做成的。與此同時(shí),任何指出問(wèn)題或不良模式的人都會(huì)被排斥,好像問(wèn)題根本不存在,直到有人提出來(lái)才被承認(rèn)。
多年下來(lái),這自然導(dǎo)致了難以解決的技術(shù)債務(wù),以及我們依法必須維護(hù)的各類倉(cāng)庫(kù)分支——無(wú)論是自己開發(fā)的,還是第三方的。
我真的越來(lái)越討厭那種“先不管,改天再修”的思路。以前留下的各種捷徑至今都嚴(yán)重影響了開發(fā)效率,而所謂的“改天”幾乎從未發(fā)生過(guò)。沒(méi)人敢去動(dòng)那些基礎(chǔ)代碼。
其實(shí),技術(shù)債不可怕,可怕的是公司文化把技術(shù)債變成了死局——客戶在流失,團(tuán)隊(duì)在出走,最后連投資人可能都會(huì)后悔。
原文鏈接:https://www.reddit.com/r/ExperiencedDevs/comments/1moz96e/cautionary_tale_company_is_crumbling_in_part_due/
萬(wàn)興科技·萬(wàn)興天幕2.0
中國(guó)首個(gè)音視頻多媒體垂類大模型!
面向普通創(chuàng)作者、專業(yè)創(chuàng)作者和企業(yè)用戶
提供一站式音視頻多媒體創(chuàng)作解決方案
一流模型——實(shí)力硬核躋身國(guó)內(nèi)TOP陣營(yíng)
良心低價(jià)——讓創(chuàng)意平權(quán)觸手可得
萬(wàn)興天幕AI APP已首發(fā)上線!
→ 口袋里的AI制片廠,即刻擁有!
萬(wàn)興天幕創(chuàng)作廣場(chǎng)已全面開放
→ 高階創(chuàng)作,一觸即達(dá)!
立即行動(dòng),開啟你的AI創(chuàng)作新紀(jì)元
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.