最近在知乎上看到了一個(gè)問題,問“Ruby和Ruby on Rails在2017年還有前途嗎?”我覺得這個(gè)問題很有意思,因?yàn)槠鋵?shí)Ruby圈子里不少很資深的朋友,都轉(zhuǎn)行去做別的了,有做前端的,有做Go,還有像我開始做Nodejs了。給人的感覺就是Ruby不行了,圈子也不夠活躍了,
下面我來分析一下Ruby/Rails為什么最近聲音小了。
首先看大公司為什么很少用rails,據(jù)我所知有
1. rails的性能和內(nèi)存占用不理想,規(guī)模效益不高
2. ruby作為動(dòng)態(tài)語言在大團(tuán)隊(duì)開發(fā)上存在劣勢,不能像java有接口和靜態(tài)類型檢查,能夠幫助大團(tuán)隊(duì)在開發(fā)期減少Bug。
3. 小眾語言,招人(相對(duì))困難
4. rails本身是單塊設(shè)計(jì),而且很多地方并不OO,不適合大公司拆分、細(xì)化、優(yōu)化的訴求
而rails更多是創(chuàng)業(yè)小公司在用,我的經(jīng)驗(yàn)包括:
1. 全棧框架,有自己的前端邏輯
2. 完善的生態(tài)
3. 開發(fā)速度快,對(duì)人員數(shù)量要求少
4. 學(xué)習(xí)曲線很線性,容易培養(yǎng)(全棧的)開發(fā)人員
對(duì)于小公司來說,本身資金有限,人力成本又占主要部分,產(chǎn)品不確定性大,所以選擇走小團(tuán)隊(duì),快速開發(fā)的模式是很自然的事情。而大公司,往往有完善的體制——招聘、培訓(xùn)、管理,等等——支持,所以往往是希望能通過增加人手來擴(kuò)大生產(chǎn)規(guī)模以及完成更多的產(chǎn)出,這就要求開發(fā)工具有足夠的“工程性”。這跟Rails的理念就是相違背的,而Ruby的工程性也不如Java之類的好。
大家再回想一下這幾年中國經(jīng)濟(jì)形勢如何?實(shí)體凋敝,房價(jià)暴漲,很多人都覺得創(chuàng)業(yè)還不如買幾套房子。這樣創(chuàng)業(yè)公司少了,用Ruby/Rails的自然也少了。
再看這幾年的技術(shù)發(fā)展趨勢,一個(gè)是經(jīng)過多年的發(fā)展,當(dāng)初Ruby/Rails的很多先進(jìn)思想也都被其他語言和工具吸收了,開發(fā)效率上的領(lǐng)先已經(jīng)達(dá)不到最早那種數(shù)量級(jí)的差異。
同時(shí)很多開發(fā)者已經(jīng)熟悉了自己的一套框架和工具鏈,如果實(shí)現(xiàn)相同功能,沒有十足的必要學(xué)習(xí)另外一種新的技術(shù)。
而只有前端不一樣,瀏覽器只支持JavaScript,整個(gè)前端的生態(tài)又順理成章建立在了nodejs之上。加上手機(jī)客戶端又適逢新興的移動(dòng)互聯(lián)網(wǎng)浪潮,需求量突飛猛進(jìn)。前端、客戶端之前的積累也比較少,加上需求的推動(dòng),有很大的空間來造輪子。
所以Ruby/Rails近幾年聲音變小也是正常現(xiàn)象,即使我認(rèn)為目前在開發(fā)體驗(yàn)上還沒有能超過Rails的全棧框架。
從產(chǎn)品角度來看,早年開發(fā)產(chǎn)品拼技術(shù),主要看你東西能不能做出來。后來開始拼產(chǎn)品設(shè)計(jì),又講究快速開發(fā)和快速試錯(cuò)。以前在Web時(shí)代,Rails在這些方面都有優(yōu)勢。而到了移動(dòng)時(shí)代,產(chǎn)品設(shè)計(jì)和快速迭代的主要部分從后端移到前端,讓后端開發(fā)變成了一個(gè)配角,尤其是后端開發(fā)在早期階段的重要程度也降低了。
然而事到如今,各端入口都被占據(jù),流量、用戶基本被巨頭們瓜分干凈,各種現(xiàn)成的平臺(tái)服務(wù)也層出不窮,又進(jìn)一步讓技術(shù)的重要程度又降低了。想想做一個(gè)公眾號(hào),用現(xiàn)成的平臺(tái),經(jīng)營好粉絲就能拉投資撈錢;或者在現(xiàn)有平臺(tái)上開個(gè)微店來做生意。現(xiàn)在很多創(chuàng)業(yè)門檻完全不在技術(shù)方面,技術(shù)的重要程度被大大降低。
而往后看,VR、人工智能、大數(shù)據(jù)、IOT等等也都不是Ruby所擅長的領(lǐng)域。
種種加起來,可以看到Ruby/Rails幾乎不可能再掀起新的浪潮。總結(jié)了這么多,就是,Rails本身所擅長的領(lǐng)域在現(xiàn)在已經(jīng)變得很狹窄也不那么重要了,所以才聲音小了。任何技術(shù)也都有他的生命周期,Ruby/Rails是非常優(yōu)秀的技術(shù)和工具,如果你要做的事情符合他的目標(biāo),那它依然是一個(gè)很棒的選擇。