作者 | Oto Brglez
譯者 | 彎月
出品 | CSDN(ID:CSDNnews)
在軟件開發(fā)中,總會遇到一些不同的難題。在本文中,我將介紹一些關(guān)鍵的主題,由于這些領(lǐng)域的“投資”很難短時間內(nèi)在ROA/KPI/OKR儀表板上看出成效,遠遠比不上那些“客戶非常喜歡”的閃亮新功能,因此常常被忽視、遺忘或排除在外。
復(fù)雜性
第一個搖搖欲墜的“支柱”就是復(fù)雜性。在做技術(shù)規(guī)劃時,我們常常會忽略復(fù)雜性引發(fā)的各種問題。雖然只是添加了一個小小的庫,然而其背后引入的依賴性卻無法預(yù)知。很多人會因為患得患失而不斷添加各種微服務(wù),然而這會引發(fā)一系列的后續(xù)工作:部署、版本控制、發(fā)展,乃至逐步淘汰。不僅如此,這也會加劇組織的復(fù)雜性:隨著產(chǎn)品、團隊和公司的發(fā)展,組織成員、文檔、利益相關(guān)者等的數(shù)量也會增加,導(dǎo)致組織的靈活性降低。
在考慮復(fù)雜性時,你還應(yīng)該想到另一個可怕的問題:每個工程師每天都在構(gòu)建功能,但這些構(gòu)建工作都是正確的嗎?就目前來看,這些構(gòu)建工作都是正確的?那么,再過兩年、三年、五年乃至十年,還正確嗎?該問題的回答越復(fù)雜,你就越應(yīng)該感到害怕。我們應(yīng)該通過良好的需求定義、明確的目標和持續(xù)的“簡化”來對抗復(fù)雜性。
在談?wù)摵退伎紡?fù)雜性時,應(yīng)該采用記錄時間的方式:記錄下為了支持某些功能而浪費的小時數(shù),記錄下為了讓 X 進入生產(chǎn)環(huán)境而不得不在 Y 上浪費的小時數(shù)。還有為了尋找與 Z 相關(guān)的信息而花費的時間。總的來說,我們不僅要知道需要什么,還要知道為什么需要。
技術(shù)負債
這就引出了我們的第二個“支柱”,技術(shù)負債不僅會破壞士氣,影響計劃和截止日期,而且在極少數(shù)情況下還會導(dǎo)致整個組織瓦解。每個項目,每個組織都有技術(shù)負債,就是因為他們不愿意談?wù)撨@個話題,而且即便談?wù)撘彩且驗檠诱`項目而受到指責(zé)或以此為借口。
當(dāng)然,你可以打一個補丁,然后再打另一個補丁,不斷累加。你可以調(diào)整界面,以便進度條在屏幕上多停留幾秒鐘;也可以將負載均衡器的超時時間延長至幾分鐘,讓服務(wù)“消化”有效負載;甚至可以用另一個服務(wù)打包整個服務(wù)。
這些不恰當(dāng)?shù)慕鉀Q方案確實可以爭取一些時間,而且很多產(chǎn)品,尤其是年輕的產(chǎn)品,都采取了這樣的措施。然而,你必須做到心中有數(shù),這些都是技術(shù)負債,最終仍然不得不償還。不償還這些債務(wù),就會威脅到團隊和組織。技術(shù)負債是一種風(fēng)險,尤其是當(dāng)你身處管理職位時,必須時刻關(guān)注技術(shù)負債。
你需要記錄并公開討論技術(shù)負債,向其他工程師解釋為什么某些實現(xiàn)采取了蹩腳的做法。此外,還需要與管理層溝通,向他們澄清技術(shù)負債引發(fā)的各種問題:收入損失、系統(tǒng)停機、開發(fā)周期延長、錯誤和 bug 頻發(fā)等等。
資源
這個“支柱”比較顯而易見,且不同的組織有不同的稱呼:資產(chǎn)、人員、基礎(chǔ)設(shè)施、構(gòu)建產(chǎn)品所必需的元素等等。我們經(jīng)常討論將來的計劃,比如我們需要招聘 50 名工程師、20 名數(shù)據(jù)科學(xué)家,我們需要擴大云預(yù)算、購買新的 SaaS 服務(wù)等。
然而,我們應(yīng)該多花些時間思考如何留住現(xiàn)有的人員、利用現(xiàn)有的服務(wù),并以更有效的方式利用我們的資源。
從風(fēng)險的角度來看,培養(yǎng)團隊內(nèi)現(xiàn)有的專家比招募新成員的風(fēng)險更小,尤其是在當(dāng)前。嘗試新技術(shù)意味著,你的技術(shù)棧中將出現(xiàn)一條你不知道如何馴服的“猛龍”。
我建議多花些時間認為思考如何利用當(dāng)前的資源,以及如何提升他們的價值和性能。
實驗
我很喜歡這個“支柱”。實驗有一種特殊的力量。然而,很多組織都會忘記實驗,或者更直白的說,他們會嚴格限制實驗和創(chuàng)新,他們希望“一切照舊”,甚至還有人說“被迫如此”。
我希望鼓勵每個人勇于嘗試以前從未接觸過的框架和技術(shù),同時也希望每個人都能積極地想辦法解決符合組織愿景和挑戰(zhàn)的難題。
作為一名工程師,你應(yīng)該積極地向管理層提出有關(guān)公司如何創(chuàng)新和提高競爭力的問題。作為管理層,你應(yīng)該多投入一些時間和資源開展相關(guān)的活動,思考如何將一些不成熟的想法變成出色的解決方案。
總結(jié)
當(dāng)然,對于各個組織、項目或產(chǎn)品來說,關(guān)鍵性的支柱肯定不止這四個。常見的還有優(yōu)先級、預(yù)算、銷售等等,但是我認為這些支柱能夠讓組織保持良好的發(fā)展,而且還能幫助組織保持領(lǐng)先地位。
參考鏈接:
https://www.linkedin.com/pulse/four-dusty-pillars-software-engineering-oto-brglez/