軟體工程,必須跨越的四大門檻

2022-10-09 12:15:09 字數 1980 閱讀 1057

作者 | oto brglez

譯者 | 彎月

**自:the four dusty pillars of software engineering | linkedin*

1.複雜性; 2.技術負債; 3.資源; 4.實驗

作者從四個角度分析了工程師和開發者在工作中不可避免的難題。不論是技術小白、初入職場亦或是資深碼農,在工作和學習中不斷進步提高的同時,反覆思考這必須跨越的四大門檻,我個人認為在每個階段都會有不同的新收穫。

在軟體開發中,總會遇到一些不同的難題。在本文中,我將介紹一些關鍵的主題,由於這些領域的「投資」很難短時間內在roa/kpi/okr儀表板上看出成效,遠遠比不上那些「客戶非常喜歡」的閃亮新功能,因此常常被忽視、遺忘或排除在外。

第乙個搖搖欲墜的「支柱」就是複雜性。在做技術規劃時,我們常常會忽略複雜性引發的各種問題。雖然只是新增了乙個小小的庫,然而其背後引入的依賴性卻無法預知。很多人會因為患得患失而不斷新增各種微服務,然而這會引發一系列的後續工作:部署、版本控制、發展,乃至逐步淘汰。不僅如此,這也會加劇組織的複雜性:隨著產品、團隊和公司的發展,組織成員、文件、利益相關者等的數量也會增加,導致組織的靈活性降低。

在考慮複雜性時,你還應該想到另乙個可怕的問題:每個工程師每天都在構建功能,但這些構建工作都是正確的嗎?就目前來看,這些構建工作都是正確的?那麼,再過兩年、三年、五年乃至十年,還正確嗎?該問題的回答越複雜,你就越應該感到害怕。我們應該通過良好的需求定義、明確的目標和持續的「簡化」來對抗複雜性。

在談論和思考複雜性時,應該採用記錄時間的方式:記錄下為了支援某些功能而浪費的小時數,記錄下為了讓 x 進入生產環境而不得不在 y 上浪費的小時數。還有為了尋找與 z 相關的資訊而花費的時間。總的來說,我們不僅要知道需要什麼,還要知道為什麼需要。

這就引出了我們的第二個「支柱」,技術負債不僅會破壞士氣,影響計畫和截止日期,而且在極少數情況下還會導致整個組織瓦解。每個專案,每個組織都有技術負債,就是因為他們不願意談論這個話題,而且即便談論也是因為延誤專案而受到指責或以此為藉口。

當然,你可以打乙個補丁,然後再打另乙個補丁,不斷累加。你可以調整介面,以便進度條在螢幕上多停留幾秒鐘;也可以將負載均衡器的超時時間延長至幾分鐘,讓服務「消化」有效負載;甚至可以用另乙個服務打包整個服務。

這些不恰當的解決方案確實可以爭取一些時間,而且很多產品,尤其是年輕的產品,都採取了這樣的措施。然而,你必須做到心中有數,這些都是技術負債,最終仍然不得不償還。不償還這些債務,就會威脅到團隊和組織。技術負債是一種風險,尤其是當你身處管理職位時,必須時刻關注技術負債。

你需要記錄並公開討論技術負債,向其他工程師解釋為什麼某些實現採取了蹩腳的做法。此外,還需要與管理層溝通,向他們澄清技術負債引發的各種問題:收入損失、系統停機、開發周期延長、錯誤和 bug 頻發等等。

這個「支柱」比較顯而易見,且不同的組織有不同的稱呼:資產、人員、基礎設施、構建產品所必需的元素等等。我們經常討論將來的計畫,比如我們需要招聘 50 名工程師、20 名資料科學家,我們需要擴大雲預算、購買新的 saas 服務等。

然而,我們應該多花些時間思考如何留住現有的人員、利用現有的服務,並以更有效的方式利用我們的資源。

從風險的角度來看,培養團隊內現有的專家比招募新成員的風險更小,尤其是在當前。嘗試新技術意味著,你的技術棧中將出現一條你不知道如何馴服的「猛龍」。

我建議多花些時間認為思考如何利用當前的資源,以及如何提公升他們的價值和效能。

我很喜歡這個「支柱」。實驗有一種特殊的力量。然而,很多組織都會忘記實驗,或者更直白的說,他們會嚴格限制實驗和創新,他們希望「一切照舊」,甚至還有人說「被迫如此」。

我希望鼓勵每個人勇於嘗試以前從未接觸過的框架和技術,同時也希望每個人都能積極地想辦法解決符合組織願景和挑戰的難題。

作為一名工程師,你應該積極地向管理層提出有關公司如何創新和提高競爭力的問題。作為管理層,你應該多投入一些時間和資源開展相關的活動,思考如何將一些不成熟的想法變成出色的解決方案。

當然,對於各個組織、專案或產品來說,關鍵性的支柱肯定不止這四個。常見的還有優先順序、預算、銷售等等,但是我認為這些支柱能夠讓組織保持良好的發展,而且還能幫助組織保持領先地位。

EA手機遊戲負責人 手機遊戲要跨越四大門檻

在昨天開幕的gdc2006上,現任ea公司移動遊戲業務高階副總裁mitch lasky發表了關於手機移動遊戲前景的演說。他強調了這一產業所具有的巨大潛力和優勢,以及如何解決長期以來一直困擾遊戲開發商的問題 如何吸引那些偶爾接觸遊戲的玩家。lasky在演講中陳述了jamdat與ea的合作是完全市場化的...

軟體工程專業必須要會的演算法

計算 部分匹配表 移動位數 已匹配的字元數 對應的部分匹配值。include include includeusing namespace std void computeprefix string s,int next void kmpmatcher string text,string patt...

成就IT工程師的四大口訣

笨如郭靖那樣能夠練成神功,成為一代大俠的在武林之中那是少之又少。要想修煉成一名高手多半都要求修煉者是個練武奇才,這除了要 骨骼奇特 之外,修煉者本身的思想覺悟那也是很重要的。誠然,在風起雲湧的 it界,要想修煉成為一名獨霸一方的 it工程師,有四大口訣,那是必須要牢記的。一 看得到的都不是你的 程式...