天天写业务代码?写业务代码中的成长机会!
寫業(yè)務代碼有成長機會嗎?關(guān)于這個問題,答案非常肯定:必須有成長機會。對于大部分公司而言,能夠?qū)懙讓哟a或者中間件代碼的人總是有限的,寫業(yè)務代碼會面臨更高的復雜度。
這里分三個層次來看其中的成長機會。
- 第 1 個層次,讓代碼寫得不一樣。可從代碼規(guī)范、可讀性、可擴展性等角度著手,這也是程序員的基本功。
- 第 2 個層次,考慮業(yè)務問題和技術(shù)問題的匹配。可從寫業(yè)務代碼中理解需求,并做好分析與設(shè)計。被動接收需求和實現(xiàn)接口,確實成長空間不大。
- 第 3 個層次,總結(jié)相關(guān)方法體系,成為業(yè)務及技術(shù)雙料專家。
下面通過例子分別針對這 3 個層次進行講解。
讓代碼寫的不一樣
這里看一個例子,常見的代碼如下:
糟糕的代碼這段代碼其實可以寫成這樣:
優(yōu)化后的代碼考慮業(yè)務問題和技術(shù)問題的匹配
這里舉一個煙囪型架構(gòu)重構(gòu)的例子。某團隊在早期發(fā)展階段對新來的每個業(yè)務都會搭建一套系統(tǒng),業(yè)內(nèi)人士將這種見招拆招、垂直化發(fā)展的架構(gòu)稱為「煙囪型架構(gòu)」。煙囪型架構(gòu)并非一無是處,在早期業(yè)務成敗未知的情況下,不過度設(shè)計架構(gòu),能直接、有效地支持業(yè)務。
不過,隨著業(yè)務的發(fā)展,「煙囪」越來越多,對這些「煙囪」的后續(xù)維護成為很大的問題,「成長」的煩惱如期而至。
其中存在的問題如下
- 人手不夠,業(yè)務響應慢了下來。以一個 5 人研發(fā)團隊為例,起初這個團隊從 0 到 1 進行建設(shè),5 個人花了 1 個月做出一個簡單版的紅包系統(tǒng);幾年后該團隊增加到 10 個人,但手頭要維護 10 個系統(tǒng),每個人就要維護一個系統(tǒng)。這時又來了兩個新業(yè)務,該團隊派出 3 個人去做這兩個新業(yè)務,大約要花 4 個月才能完成。這嚴重不符合前端業(yè)務的響應預期。
- 重復建設(shè)。在同類煙囪系統(tǒng)中有 80% 的功能是類似的,從數(shù)據(jù)庫模型到主要業(yè)務邏輯都是復制粘貼加補丁,一不留神就又踩到一個坑。
- 維護成本高。面對日常升級包、咨詢支持服務,該團隊疲憊不堪。
那么,能不能將其中 80% 甚至 90% 的共性問題抽象出來呢?核心領(lǐng)域模型是否可以穩(wěn)定呢?
在既要支持不斷出現(xiàn)的各種業(yè)務,又要建設(shè)新平臺的糾結(jié)中權(quán)衡之后,該團隊首先啟動了平臺化項目,建設(shè)路徑是存量業(yè)務繼續(xù)使用煙囪架構(gòu),但新業(yè)務隨著新平臺一起接入,然后逐步遷移存量業(yè)務,實現(xiàn)煙囪系統(tǒng)的下線。如圖所示,優(yōu)惠券平臺對前端業(yè)務提供統(tǒng)一的能力輸出。
總結(jié)下來,平臺化架構(gòu)有如下好處。
架構(gòu)不服務業(yè)務,那么再高大上都是空話。技術(shù)不是炫技,要服務于商業(yè)。對于抽象共性的問題,業(yè)務平臺化要解決業(yè)務的共性問題,比如天貓、淘寶都有各類營銷活動,那就抽象出一個營銷平臺來管理營銷活動、營銷工具的整個生命周期,并提供給前端業(yè)務使用。
總結(jié)相關(guān)方法體系,成為業(yè)務及技術(shù)雙料專家
舉個例子,曾有一位做事非常努力、成長也比較快的小兄弟訴苦說,他之前在做網(wǎng)關(guān)程序,做得很細,除了完成了業(yè)務還保障了系統(tǒng)沒有 Bug,還使文檔沉淀、效率提升,外部機構(gòu)聯(lián)調(diào)合作方比如銀行對其反饋也很好,但大家對其印象是善于合作,技術(shù)貌似一般。這位小兄弟在最近一年又做了業(yè)務平臺,覺得自己在分析設(shè)計、中間件技術(shù)的應用上已經(jīng)進步很大,甚至對自己的成長也很滿意,但其他人還是認為其技術(shù)貌似一般。這位小兄弟百思不得其解。
筆者的反饋如下。
再舉個例子,小郭在幾年前參與了一個接入類業(yè)務,當時已經(jīng)有不少機構(gòu)接入了這個業(yè)務,業(yè)務規(guī)模不大不小,產(chǎn)品經(jīng)理換了幾茬,研發(fā)團隊也變更了三次。當大家日復一日地做業(yè)務接入、測試、發(fā)布時,有人發(fā)現(xiàn)這個業(yè)務缺少一個業(yè)務視圖。也就是說,這個業(yè)務有對系統(tǒng)資源的檢測、對接口調(diào)用的監(jiān)控,但是沒有對業(yè)務運行情況的監(jiān)控,看不到地區(qū)粒度、子業(yè)務粒度的變化情況等,甚至 BD 在簽訂新業(yè)務時都不了解為啥某地區(qū)已經(jīng)沒有調(diào)用量了。小郭利用業(yè)余時間開發(fā)了一個業(yè)務視圖工具,整個團隊馬上就感受到他的過人之處了。有人講,大公司不是應該什么都就緒嗎?實際情況是,大公司也是經(jīng)歷了業(yè)務的高速發(fā)展的,可以這樣說,大部分公司并不缺少做得更好、做得不一樣的機會!
所以,「寫業(yè)務代碼有成長機會嗎」這個句式還可以改為「維護老系統(tǒng)如何晉升」「做商戶接入如何走向高端」和「項目這么忙如何學習」,我們需要進一步將自己的知識和經(jīng)驗系統(tǒng)化,形成相關(guān)的方法體系。
在心態(tài)上,筆者提兩點建議:一是欣賞自己的成長,二是做個有心人。
總結(jié)
以上是生活随笔為你收集整理的天天写业务代码?写业务代码中的成长机会!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中有哪些无锁技术来解决并发问题?
- 下一篇: CAT 性能优化的实践和思考