最近在知乎上看到了一個問題,問“Ruby和Ruby on Rails在2017年還有前途嗎翘贮?”我覺得這個問題很有意思赊窥,因為其實Ruby圈子里不少很資深的朋友,都轉(zhuǎn)行去做別的了狸页,有做前端的锨能,有做Go,還有像我開始做Nodejs了芍耘。給人的感覺就是Ruby不行了址遇,圈子也不夠活躍了,
下面我來分析一下Ruby/Rails為什么最近聲音小了斋竞。
首先看大公司為什么很少用rails倔约,據(jù)我所知有
1. rails的性能和內(nèi)存占用不理想,規(guī)模效益不高
2. ruby作為動態(tài)語言在大團隊開發(fā)上存在劣勢坝初,不能像java有接口和靜態(tài)類型檢查浸剩,能夠幫助大團隊在開發(fā)期減少Bug。
3. 小眾語言鳄袍,招人(相對)困難
4. rails本身是單塊設(shè)計绢要,而且很多地方并不OO,不適合大公司拆分畦木、細化袖扛、優(yōu)化的訴求
而rails更多是創(chuàng)業(yè)小公司在用,我的經(jīng)驗包括:
1. 全検框架蛆封,有自己的前端邏輯
2. 完善的生態(tài)
3. 開發(fā)速度快,對人員數(shù)量要求少
4. 學(xué)習(xí)曲線很線性勾栗,容易培養(yǎng)(全棧的)開發(fā)人員
對于小公司來說惨篱,本身資金有限,人力成本又占主要部分围俘,產(chǎn)品不確定性大砸讳,所以選擇走小團隊,快速開發(fā)的模式是很自然的事情界牡。而大公司簿寂,往往有完善的體制——招聘、培訓(xùn)宿亡、管理常遂,等等——支持,所以往往是希望能通過增加人手來擴大生產(chǎn)規(guī)模以及完成更多的產(chǎn)出挽荠,這就要求開發(fā)工具有足夠的“工程性”克胳。這跟Rails的理念就是相違背的平绩,而Ruby的工程性也不如Java之類的好。
大家再回想一下這幾年中國經(jīng)濟形勢如何漠另?實體凋敝捏雌,房價暴漲,很多人都覺得創(chuàng)業(yè)還不如買幾套房子笆搓。這樣創(chuàng)業(yè)公司少了性湿,用Ruby/Rails的自然也少了。
再看這幾年的技術(shù)發(fā)展趨勢满败,一個是經(jīng)過多年的發(fā)展窘奏,當(dāng)初Ruby/Rails的很多先進思想也都被其他語言和工具吸收了,開發(fā)效率上的領(lǐng)先已經(jīng)達不到最早那種數(shù)量級的差異葫录。
同時很多開發(fā)者已經(jīng)熟悉了自己的一套框架和工具鏈,如果實現(xiàn)相同功能领猾,沒有十足的必要學(xué)習(xí)另外一種新的技術(shù)米同。
而只有前端不一樣,瀏覽器只支持JavaScript摔竿,整個前端的生態(tài)又順理成章建立在了nodejs之上面粮。加上手機客戶端又適逢新興的移動互聯(lián)網(wǎng)浪潮,需求量突飛猛進继低。前端熬苍、客戶端之前的積累也比較少,加上需求的推動袁翁,有很大的空間來造輪子柴底。
所以Ruby/Rails近幾年聲音變小也是正常現(xiàn)象粱胜,即使我認(rèn)為目前在開發(fā)體驗上還沒有能超過Rails的全棻ぃ框架。
從產(chǎn)品角度來看焙压,早年開發(fā)產(chǎn)品拼技術(shù)鸿脓,主要看你東西能不能做出來。后來開始拼產(chǎn)品設(shè)計涯曲,又講究快速開發(fā)和快速試錯野哭。以前在Web時代,Rails在這些方面都有優(yōu)勢幻件。而到了移動時代拨黔,產(chǎn)品設(shè)計和快速迭代的主要部分從后端移到前端,讓后端開發(fā)變成了一個配角傲武,尤其是后端開發(fā)在早期階段的重要程度也降低了蓉驹。
然而事到如今城榛,各端入口都被占據(jù),流量态兴、用戶基本被巨頭們瓜分干凈狠持,各種現(xiàn)成的平臺服務(wù)也層出不窮,又進一步讓技術(shù)的重要程度又降低了瞻润。想想做一個公眾號喘垂,用現(xiàn)成的平臺,經(jīng)營好粉絲就能拉投資撈錢绍撞;或者在現(xiàn)有平臺上開個微店來做生意≌眨現(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)肮疗,那它依然是一個很棒的選擇戚扳。