我入銀行專案的坑,至今已有十年,也算是一名做銀行專案的老兵了。
關於銀行業務的重要性,之前與網友的互動中發現有不少同行有如下三種觀點:
很大一部分人這樣認為:銀行的程式設計師應該是業務知識比純技術更重要,技術是追逐不完的,唯有業務才是長久之計;當然也有不少人認為:銀行的業務和技術是相互促進、相互依存,不分伯仲;還有一部分人認為:技術比業務重要,技術很牛 X ,因為沒有技術銀行就無法實現很多業務,業務很 Low ;其實擴大到整個程式設計師群體也會有上面三種不同的觀點的存在,那麼作為程式設計師,到底該怎麼來看待技術與業務的關係呢?今天我們就從以下幾個方面來展開聊一聊這個話題:
什麼是業務;業務和技術的關係;對業務的認知會因你在團隊中的角色而不同什麼是業務?通俗一點來講,“業務”就是需要處理的各種事務,但通常偏向指客戶實際作業涉及的事務,“業務”最終的目的是完成工作涉及的所有事務。
比方說醫院掛號、預約、查檢查報告,都是業務,趣醫網的 App 就可以用來解決這些業務。
或者說存款或取款就是一種業務,銀行ATM 機內運轉的軟體,要解決的業務就是存款或取款。
再比方說買火車票也是業務,12306 這個網站就是為解決買火車票這類業務服務的。
業務和技術的關係是什麼樣的呢?我們都知道軟體是用來解決現實和虛擬世界中的業務,給人們的工作和生活帶來便利的。
比方說大家都想到好醫院看病,人人都想掛專家號,很多人為了掛到某個醫生的號,通宵排隊,非常辛苦。而現在的各種網上醫院掛號網站、微信公眾號、 App等通過軟體技術手段,把專家大夫這種資源虛擬化,讓大家隨時隨地能掛號,還不用到醫院、不用通宵憋尿排隊、不用擔心被醫托和黃牛忽悠,給患者帶來了極大便利。
再比方說到火車站買票,要坐車、還要提前排隊,又麻煩又消耗時間又浪費精力,而 12306 網站和手機App ,通過把買火車票這種現實業務虛擬化,
為人們省去了路上奔波、提前排隊、耗時的各種麻煩。
可以這樣理解軟體是現實業務虛擬化的載體,技術最終是為了解決業務問題的。從這個方面講,所有的開發者,其工作最終都是指向某個特定的業務問題。
沒有業務,技術的存在就沒有意義。技術如果不能解決實際的問題,不能給人們生活和工作帶來便利,就沒有任何價值。
但從另一方面來講,技術是現實業務虛擬化的必要條件,沒有技術,現實中的業務就無法被虛擬化。而且,同一種技術又可以實現多種業務的虛擬化。所以,很多初級的程式設計師才會有一種“錯覺”:技術牛 X ,因為沒有技術就無法實現各種業務,業務很 Low ,技術老牛 X 了,各種業務場景隨隨便便就能搞定。
實際上,這些感覺雖然在某個特定的階段有其道理,但並代表它就是真理喲。
關於業務和技術的關係,這裡下個結論:
技術是為了解決業務問題的,只有在實現業務、給人們生活和工作帶來便利的前提下,技術的存在才有意義,所以多數時候,是業務決定技術、業務統領技術、業務驅動技術;沒有技術,業務就無法被虛擬化,生產效率就很難有效提升;業務和技術具有相互促進、相互依存的關係;我們回到程式設計師身上來看,關注業務多一些,還是所謂的技術多一些,沒有高下之分,只有個人取向和組織分工的不同。
你對業務的認知會因你在團隊中所處的角色不同而發生變化你對業務的認知,會因你在團隊中承擔的角色不同而發生變化。這是由開發團隊的組織結構和職責分工導致的,大家好好看看下面的“團隊結構、能力與職責”圖:
(1)在一個專案開發團隊中,架構師這個角色,會負責業務拆分和軟體架構的工作,並且領導團隊來實現滿足業務要求的軟體。
有的研發團隊裡有業務架構師和軟體架構師兩種角色,業務拆分由業務架構師或業務分析師完成,同時軟體架構師和業務架構師這兩個角色也可能由沒有架構師頭銜的研發經理兼任。
架構師一定是要以業務為導向的,肯定是要搞懂業務,熟悉業務的,所以在架構師這個階段,在團隊管理者這個階段,業務的重要性,往往是要高於技術的。在他們的眼中,業務統領技術,技術是用來實現業務的。
(2)當團隊完成業務架構和軟體架構之後,就會安排不同的開發者來負責不同功能模組的實現。負責不同功能模組實現的開發者,必須能夠理解業務,並且要熟悉某個技術棧,能夠進行模組設計和任務拆分,通常稱這樣的開發者為“熟練開發者”或者是“技術骨幹”。技術骨幹會承接由架構師分派的子業務,負責模組設計和拆分,把拆分後的小任務,交給普通程式設計師來完成。當你是一個技術骨幹時,業務和技術幾乎同等重要,因為:你如果不理解業務,就很難將子業務模組對映到功能實現上,也很難做進一步的業務模組的拆分。你如果不具備完整的技術棧和相應的技術知識體系,就很難找到合適的技術子方案來實現業務,也很難做軟體模組的進一步拆分。
(3)技術骨幹完成了子業務和軟體模組的拆分,會形成一系列的樹枝型任務,並把它們分派給具備某種特定專項技術能力的普通程式設計師。普通程式設計師要做的事情比較簡單,就是接受別人分派的任務,實現特定的業務細節,編寫特定的業務程式碼。當你是一個普通的程式設計師時,技術比業務更重要,因為當你是一個普通程式設計師的時候,團隊要求你具備一定的專項技術能力,能夠完成任務即可,你的角色就類似於拿把螺絲刀擰螺絲,擰好螺絲就 Ok 了。
好了,關於程式設計師如何看待業務與技術的關係的話題就寫到這裡,有分析的不對的地方,還望同行們在評論區進行指正和補充。後期我會持續輸出關於銀行業務和IT系統知識及專案經驗分享的文章和視訊,感興趣的朋友可以點選關注一下!