1. 程式人生 > >一個好的技術團隊應該怎麽選擇自己的開發語言

一個好的技術團隊應該怎麽選擇自己的開發語言

rdquo 阿裏 要求 AC 好處 進度 心跳 們的 排除法

在過去的三年時間了,作為曾經的研發部經理,我和我的技術總監始終在為一件事而努力著,那就是選擇一門合適我們團隊的技術語言。

我們研發團隊一共有9個人,分為三個小組:移動手機組、後端接口組、web前端組,如果按照大公司的做法,我們完全不必為每組應該選擇什麽技術語言而擔心,我們可以在每組中選擇一個組長,由他全權負責即可,公司層面只要最終的結果即可,可事情並沒有那麽簡單。

現實總是殘酷的,其中的原因有這麽幾個:第一:崗位經費不高,想要低成本找一個技術合格的人非常難;第二:知名度有限,一般的技術人才都有更好選擇的條件,好的人才當然更傾向於知名度高和前景好的公司,而對於沒有知名度且前景一般的公司來說,想要吸引他們加入也是一件極其不易的事;第三:公司的地理位置,即不屬於技術人員聚集的地區,有在離市中心比較遠的郊區,想要讓他們來面試都是一件極其不易的事情。所以凡事還得親力親為,加上公司剛開始發展所有的一切都是空白的,選擇一門合適的語言就迫在眉睫了。

在這三年的時間裏,我們每個組都經歷了很多語言和框架的更換,也一直在找尋適合我們的框架,現在回想起來好的語言框架要符合這幾個要素:

1、技術語言發展成熟;

2、技術語言統一;

3、技術門檻低;

4、使用人數多;

5、技術匹配目前業務需求;

技術發展成熟:代表了出現問題之後的技術解決方案很多,那麽團隊處理問題的速度就會很快,相應的成本也就最低,這個是選擇語言與框架非常重要的一個指標。

技術語言統一:有這麽幾個好處,第一:團隊之間交流和互動會更緊密,產生問題的處理成本就會很低,同時能夠增加成員之間交流的話題,增加彼此的友誼;第二:出現特殊情況,能夠很好的使用現有人員替補代替;第三:利於管理,比如接口開發如果使用nodejs,其本質還是js,前端開發使用vuejs,也有很多js的語法,這樣對於同時管理兩個組的領導技能要求就會降低很多,只需要有很好的js功底即可,而如果接口開發使用的golang、c#、java,那麽你就得即會這些後端語言,又要會js才能搞定問題。

技術門檻低:別覺得技術門檻低是什麽壞事,技術門檻低並不代表對技術人員的要求低,而是如果是其他語言的人想要中途轉學,會容易很多,還有就是技術門檻低,相應的從業人員就會多很多,這樣招聘的壓力就會小很多,相應的勞務報酬也相對會低一些。

使用人數多:這個比較好理解,讓你在緊急的時候能夠很輕易的招聘到你需要的人,而不是湊合的用,或者重新培養相應的人才,這樣會耽誤你開發的進度。

技術匹配目前業務需求:我們在技術開發的時候容易陷入一個誤區,就是開發過於龐雜復雜的系統,我們都聽過一句話,羅馬城不是一天建成的,一口氣吃不成一個大胖子等等諸如此類的話,多的數不勝數,而然我們還是容易陷入思維的誤區。我們之前花了很長的一段時間按照阿裏的框架設計了一個很復雜的系統,把一個交易系統分為4、5個中間系統,前後端分離還不夠,中間加了分部署的中間任務調度系統,把所有的系統平行分割註冊,以提供給不同的子系統進行調用,為此我們花費了很多的經歷,並且不得不為一些新的問題付出很多的努力,比如分部署機器的服務自動註冊,怎麽維系不同的機器健康心跳檢測,怎麽分發任務等等,花費具體時間和經歷的結果是,前後端開發調試極其困難,調試很繁瑣和復雜,要使用排除法,分開測試每個系統之後才能確認問題所在,最主要的是我們把系統花費很大經歷初見雛形之後,發現根本用不上,以後的三五年都用不上這麽龐大和笨重的系統,而我們卻為此花費了太多的經歷,這些是很不可取的,我們應該把技術資源用在更多可以創建價值的事情上,完美主義並不適合所有公司,小公司的模式更適合從下往上的快速試錯和快速叠代的形式。

掌握了以上“心法”,相信會讓你的團隊事半功倍。而我總結一下,我們總結一下我們技術衍生的具體方案吧。

我們首先把我們可以用到的主流技術窮舉一下:

前端組:vuejs、ag、react

後端組:java、c#、nodejs、go

移動開發(混合開發):react native、dcloud、xamarin、apicloud、deviceone、weex

前端框架,從使用人數和學習門檻的角度來分析,最理想的框架vuejs、react次之,非要排出一個的話應該是ag;

從技術統一的角度來看,那麽nodejs是我們最好的選擇,go次之,java、c#的學習門檻算是在這幾個裏面比較高的,如果不是要求千萬級的負載,那麽nodejs完全可以勝任;

移動開發,如果從性能和技術統一的程度,以為前端我們使用vuejs或react那麽最理想的就是react native(以下簡稱rn),rn的性能是無可非議的,它有一個好爸爸facebook使用了虛擬dom重構了它的執行基礎,性能是僅此於原生的,同時有主要用的了js的技術,這樣就能和接口和前端都統一了,並且rn的技術解決方案非常成熟,各種組件都能很輕易的找到,技術解決成本也更低,使用起來更得心應手。

所以綜合以上所述,最理想的框架:

前端:react、vuejs

後端:nodejs、go

移動開發:react native

以上框架都是經過3年的嘗試,總結得出了符合中小公司整體框架的最優方案,鄙人拙見,願拋磚引玉,大家一起討論。

一個好的技術團隊應該怎麽選擇自己的開發語言