一个好的技术团队应该怎么选择开发语言
在過去的三年時(shí)間了,作為曾經(jīng)的研發(fā)部經(jīng)理,我和我的技術(shù)總監(jiān)始終在為一件事而努力著,那就是選擇一門合適我們團(tuán)隊(duì)的技術(shù)語言。
我們研發(fā)團(tuán)隊(duì)一共有9個(gè)人,分為三個(gè)小組:移動(dòng)手機(jī)組、后端接口組、web前端組,如果按照大公司的做法,我們完全不必為每組應(yīng)該選擇什么技術(shù)語言而擔(dān)心,我們可以在每組中選擇一個(gè)組長,由他全權(quán)負(fù)責(zé)即可,公司層面只要最終的結(jié)果即可,可事情并沒有那么簡單。
現(xiàn)實(shí)總是殘酷的,其中的原因有這么幾個(gè):第一:崗位經(jīng)費(fèi)不高,想要低成本找一個(gè)技術(shù)合格的人非常難;第二:知名度有限,一般的技術(shù)人才都有更好選擇的條件,好的人才當(dāng)然更傾向于知名度高和前景好的公司,而對于沒有知名度且前景一般的公司來說,想要吸引他們加入也是一件極其不易的事;第三:公司的地理位置,即不屬于技術(shù)人員聚集的地區(qū),有在離市中心比較遠(yuǎn)的郊區(qū),想要讓他們來面試都是一件極其不易的事情。所以凡事還得親力親為,加上公司剛開始發(fā)展所有的一切都是空白的,選擇一門合適的語言就迫在眉睫了。
在這三年的時(shí)間里,我們每個(gè)組都經(jīng)歷了很多語言和框架的更換,也一直在找尋適合我們的框架,現(xiàn)在回想起來好的語言框架要符合這幾個(gè)要素:
1、技術(shù)語言發(fā)展成熟;
2、技術(shù)語言統(tǒng)一;
3、技術(shù)門檻低;
4、使用人數(shù)多;
5、技術(shù)匹配目前業(yè)務(wù)需求;
技術(shù)發(fā)展成熟:代表了出現(xiàn)問題之后的技術(shù)解決方案很多,那么團(tuán)隊(duì)處理問題的速度就會(huì)很快,相應(yīng)的成本也就最低,這個(gè)是選擇語言與框架非常重要的一個(gè)指標(biāo)。
技術(shù)語言統(tǒng)一:有這么幾個(gè)好處,第一:團(tuán)隊(duì)之間交流和互動(dòng)會(huì)更緊密,產(chǎn)生問題的處理成本就會(huì)很低,同時(shí)能夠增加成員之間交流的話題,增加彼此的友誼;第二:出現(xiàn)特殊情況,能夠很好的使用現(xiàn)有人員替補(bǔ)代替;第三:利于管理,比如接口開發(fā)如果使用nodejs,其本質(zhì)還是js,前端開發(fā)使用vuejs,也有很多js的語法,這樣對于同時(shí)管理兩個(gè)組的領(lǐng)導(dǎo)技能要求就會(huì)降低很多,只需要有很好的js功底即可,而如果接口開發(fā)使用的golang、c#、java,那么你就得即會(huì)這些后端語言,又要會(huì)js才能搞定問題。
技術(shù)門檻低:別覺得技術(shù)門檻低是什么壞事,技術(shù)門檻低并不代表對技術(shù)人員的要求低,而是如果是其他語言的人想要中途轉(zhuǎn)學(xué),會(huì)容易很多,還有就是技術(shù)門檻低,相應(yīng)的從業(yè)人員就會(huì)多很多,這樣招聘的壓力就會(huì)小很多,相應(yīng)的勞務(wù)報(bào)酬也相對會(huì)低一些。
使用人數(shù)多:這個(gè)比較好理解,讓你在緊急的時(shí)候能夠很輕易的招聘到你需要的人,而不是湊合的用,或者重新培養(yǎng)相應(yīng)的人才,這樣會(huì)耽誤你開發(fā)的進(jìn)度。
技術(shù)匹配目前業(yè)務(wù)需求:我們在技術(shù)開發(fā)的時(shí)候容易陷入一個(gè)誤區(qū),就是開發(fā)過于龐雜復(fù)雜的系統(tǒng),我們都聽過一句話,羅馬城不是一天建成的,一口氣吃不成一個(gè)大胖子等等諸如此類的話,多的數(shù)不勝數(shù),而然我們還是容易陷入思維的誤區(qū)。我們之前花了很長的一段時(shí)間按照阿里的框架設(shè)計(jì)了一個(gè)很復(fù)雜的系統(tǒng),把一個(gè)交易系統(tǒng)分為4、5個(gè)中間系統(tǒng),前后端分離還不夠,中間加了分部署的中間任務(wù)調(diào)度系統(tǒng),把所有的系統(tǒng)平行分割注冊,以提供給不同的子系統(tǒng)進(jìn)行調(diào)用,為此我們花費(fèi)了很多的經(jīng)歷,并且不得不為一些新的問題付出很多的努力,比如分部署機(jī)器的服務(wù)自動(dòng)注冊,怎么維系不同的機(jī)器健康心跳檢測,怎么分發(fā)任務(wù)等等,花費(fèi)具體時(shí)間和經(jīng)歷的結(jié)果是,前后端開發(fā)調(diào)試極其困難,調(diào)試很繁瑣和復(fù)雜,要使用排除法,分開測試每個(gè)系統(tǒng)之后才能確認(rèn)問題所在,最主要的是我們把系統(tǒng)花費(fèi)很大經(jīng)歷初見雛形之后,發(fā)現(xiàn)根本用不上,以后的三五年都用不上這么龐大和笨重的系統(tǒng),而我們卻為此花費(fèi)了太多的經(jīng)歷,這些是很不可取的,我們應(yīng)該把技術(shù)資源用在更多可以創(chuàng)建價(jià)值的事情上,完美主義并不適合所有公司,小公司的模式更適合從下往上的快速試錯(cuò)和快速迭代的形式。
掌握了以上“心法”,相信會(huì)讓你的團(tuán)隊(duì)事半功倍。而我總結(jié)一下,我們總結(jié)一下我們技術(shù)衍生的具體方案吧。
我們首先把我們可以用到的主流技術(shù)窮舉一下:
前端組:vuejs、ag、react
后端組:java、c#、nodejs、go、php
移動(dòng)開發(fā)(混合開發(fā)):react native、dcloud、xamarin、apicloud、deviceone、weex
前端框架,從使用人數(shù)和學(xué)習(xí)門檻的角度來分析,最理想的框架vuejs、react次之,非要排出一個(gè)的話應(yīng)該是ag;
從技術(shù)統(tǒng)一的角度來看,那么nodejs是我們最好的選擇,go次之,java、c#的學(xué)習(xí)門檻算是在這幾個(gè)里面比較高的,如果不是要求千萬級(jí)的負(fù)載,那么nodejs完全可以勝任;
移動(dòng)開發(fā),如果從性能和技術(shù)統(tǒng)一的程度,以為前端我們使用vuejs或react那么最理想的就是react native(以下簡稱rn),rn的性能是無可非議的,它有一個(gè)好爸爸facebook使用了虛擬dom重構(gòu)了它的執(zhí)行基礎(chǔ),性能是僅此于原生的,同時(shí)有主要用的了js的技術(shù),這樣就能和接口和前端都統(tǒng)一了,并且rn的技術(shù)解決方案非常成熟,各種組件都能很輕易的找到,技術(shù)解決成本也更低,使用起來更得心應(yīng)手。
所以綜合以上所述,最理想的框架:
前端:react、vuejs
后端:nodejs、go
移動(dòng)開發(fā):react native
?
以上框架都是經(jīng)過3年的嘗試,總結(jié)得出了符合中小公司整體框架的最優(yōu)方案,鄙人拙見,愿拋磚引玉,大家一起討論。
?
總結(jié)
以上是生活随笔為你收集整理的一个好的技术团队应该怎么选择开发语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典面试题SALES TAXES思路分析
- 下一篇: 阿里面试题BIO和NIO数量问题附答案和