科技改變生活 · 科技引領未來
4月14日,在“TGO特訓營”活動中,數禾科技CTO馬霖以《技術選型過程中的一些思考》為題,從十多年金融行業實戰經驗出發,結合初創團隊與成熟團隊的不同考慮,分享了個人對技術選型決策的思考和觀點。
【以下內容節選自馬霖的分享】
技術選型本身具有復雜性和多樣性,不只涉及技術,還要考慮業務特點、團隊組成、技術與業務的匹配度等多種因素。一次選型決策,如果對技術要達成的目標了解不夠透徹,考慮不夠周到,可能導致后續出現各種各樣的問題,甚至引發多米諾骨牌效應。
一、堅持兩大原則,可以克服技術選型中的選擇困難癥
第一,KISS原則。Keep It Simple and Stupid. 所謂大道至簡,拋開業務影響因素,技術工作本身歸納下來涉及到研發和運行兩個閉環,其中研發工作的閉環主要解決可維護性問題,即讓研發工作能夠不斷迭代,持續循環推進下去;而在運行閉環中,需要解決的三個根本問題是,系統的可靠性、可擴展性、低延遲性。
第二個原則是,所選技術的生命周期一定要顯著超過項目的生命周期,這樣做有三大優勢:
•這個技術肯定相對穩定,bug相對比較少;
•這個技術生命周期比較長的話,一般來講社區比較活躍;
• 當這個技術生命周期長的時候,市場上面的人才比較多,能夠招到合適的人才。
然而在實際操作中,最常遇到的問題是:選型的目標不夠明確,導致事倍功半。
很多時候選型不是一個純技術選型,而是選一個業務解決方案。比如在考慮還唄業務的賬務清算系統選型時,首先考慮的不是用什么語言,框架是什么,跑批做還是實時做,而是業務解決方案到底能不能對整個業務流程,業務模式帶來提升。
事實上,80%的選型都不是技術問題,而是業務問題。但技術最終要為業務服務,不能推進業務發展,技術就是宋江的軍師——無用。
技術選型中還涉及技術棧問題,雖然技術沒有高下之分,但是技術一定有趨勢和方向。當新技術的壓路機向你碾壓過來時,如果你不能成為壓路機的一部分,那么你就只能成為路的一部分。一個團隊,一個公司要發展,就一定要把握這種技術潮流和方向,要成為壓路機,往前走。
二、初創團隊:問題驅動,效率優先,快是第一要義
初創團隊,顧名思義,人少,而且職能少,每個人都是多面手。
因此,在技術團隊搭建的早期,最核心的是要選對人:
要找經驗豐富,踩過很多坑,接觸過方方面面的東西,綜合判斷的意識,知覺感強的人。如果經驗不夠豐富,就選基本功最好的,對底層原理,對數據結構,對網絡結構等知識原理了解比較清楚的人,來做技術選型相對更靠譜。
回過頭來,初創團隊在技術選型方面,“時間就是金錢,效率就是生命”,快速跑起來是終極追求,給出5個建議:
1.選最熟悉的技術。所謂熟能生巧,稱手的工具才是最好的,可以通過快速試錯出結果;
2.做狹義的技術選型。此時,業務量比較小,不需要在每個業務鏈條中關注所有方面的問題,解決問題是王道;
3.選擇開發效率優先的技術;
4.問題驅動來做選型。創業早期,談不上規劃,一沒時間二沒必要,核心是找到業務問題的痛點來解決,然后再解決下一個痛點;
5.選擇簡單的技術。多個技術可選時,選最簡單的。因為夠簡單才能足夠快,這時候不適合炫技。
三、成熟團隊:規劃驅動,運營優先,擴展性為第一要義
以往在大公司工作的近10年中,我最大的感受是,很多決策做得相對比較慢,而一旦決策定下來,做出來的事情質量特別高,基本上不會有大的失誤。這就要求一個成熟的技術團隊,不再單純追求快,而是追求擴展性的增強。
相比于初創團隊,一個成熟團隊所處的環境發生了變化:
在此條件下,成熟團隊的技術選型要考慮如下問題:
選型基本上是業務本身的解決方案,既要考慮新方案的可靠性,更要考慮老系統的兼容性;
團隊追求的目標不再是快,而是擴展性強,可以支持后面很長時間的業務發展。這時候如果快決策,但支持很短的業務線,就需要不停地做選擇,反而變慢了;
選擇運行效率優先的技術。有一些技術在開發階段花費時間長,難度大,但是在運行階段效率更高,這個時候解決生產環境中的運行效率更為優先;
主營業務成規模之后,相對穩定,早期依靠用戶反饋調整業務的方式,有了局限性。這個階段產品或業務一定要有頂層設計,沒有頂層設計的產品走不遠。在技術方面,就是以規劃為主做技術選型,服務于頂層設計;
技術選型更多是廣義的選型。一輛車由車燈、車輪、引擎等組成,一個零件需要換,就要考慮與其他系統的兼容問題,這成為選型過程中最傷腦筋,最復雜的節點,牽一發而動全身。
在成熟團隊中,慎重則必成,輕發則多敗,要運用好“慢思維”,有助于解決那些疑難問題、復雜課題。
高陽東