進度條

快速開發後端程式,為何Ruby on Rails工程師可以常年佔據高收入排行榜前幾名?

重視市場回饋才是現今開發的重點,慢工細活打造出(自認的)超級程式卻乏人問津的年代已經過去了。

作者: 進度條編輯群 更新日期:

此文章也有影片介紹,可以搭配影片一起學習!

01. Ruby On Rails 介紹與課程簡介 (所屬課程)


以下正式開始文章


既然大家進來看我的文章,可能就表示大家對自己的薪水不滿意。前陣子Ruby on Rails在台灣推廣的很厲害,不過今年聲音比較小了一點。我想這是進入成熟期的訊號。

(偷偷講,其實我們有開課喔,已經包含超過36小時的線上課程)

 

 

 

 

 

Ruby on Rails在國外其實一直都很夯,小編在加拿大遊玩的時候想說試試看有多夯。在當地的人力銀行放上個英文履歷,居住地定多倫多,再加上個多倫多的電話與地址。平均每個星期都會有2~3封獵人頭的信件,沒事就會有電話打來詢問面試意願。搞得小編好像突然變當紅炸子雞似的。

 

 

(加拿大求職網站Monster)

 

不過我自己說有多夯也沒什麼意思,以下就不免俗的來列一下使用Ruby on Rails建制的知名網站:

1. Github 

2. Shopify

3. Airbnb

4. Twitter (早期)

5. Sound Cloud

6. Heroku

7. Zendesk (市佔率極高的即時通訊服務)

8. Braintree (Paypal 收購後,其主力整合支付)

 

 

(Airbnb官網)

 

在Stackoverflow的2016年的薪資統計上,Ruby排在第二個級距,輸給當紅的Facebook提倡的前端架構React。與C#和Javascript排在同一個級距,遠遠甩過PHP與WordPress。

 

 

(Stack Overflow 2016 薪水排行)

 

不過其實就單純前端的狀況的話,React就是一個進階的Javascript架構。他是可以與Ruby on Rails完美共存的,而且單會React而不會後端其實沒有什麼競爭力。

(後端不用專精,但至少要會操作資料庫,暸解如何與後端溝通,不過現實上應該是沒有"專精"React卻一點後端都不會的人)。

 

(Facebook React 官方首頁)

 

 

C#也是近期相當熱門的程式語言架構,畢竟微軟換了CEO後整個氣象都變了。不過這文章是從標題開始就很偏頗的要介紹Ruby on Rails,所以就只接講一些側邊的缺點吧。C#本身是個很優秀程式語言,所以有問題的通常都會是微軟的政策。M$不是叫假的,從編輯器到Server的系統通通要錢,雲端平台Azure不知道在貴什麼,隨便按一按就爆預算。

 

 

(Microsoft Azure 價格計算機)

 

 

還有就是微軟賴以為生的中心行動原則,邊開火邊移動,好聽點就是總是在精進求新,但就實際上來看最新的跨平台程式開發平台Xamarin的可悲的文件Documentation。看起來很多,實際上你完全找不到可用的資訊,只是把類別與方法列出來而已,不曉得是不是要付錢才看得到剩下的。

 

 

(謎之聲: 自己弱還怪別人)

 

 

不過其實我還是滿愛C#的,畢竟ASP.Net與Unity 3D真的是好物。只是收費價格對於新創公司不太友善,然後容易讓公司轉嫁授權費到員工薪水上(都是成本啊 !!!)。

 

 

(Unity 3D官方首頁)

 

 

結果講壞話又拖了一大斷篇幅。希望大家還記得我們的主題是要講Ruby on Rails。

 

 

Ruby on Rails 主要分成個部分,Ruby 與 Rails。

 

Ruby是直譯式語言,由日本人松本行弘先生設計的,如果對他的事蹟有興趣可以參考Wiki

Rails則是一個使用Ruby寫出來的網站框架,是由David Heinemeier Hansson設計的,通常縮寫成DHH,丹麥的程式設計師。

 

一般來說,Rails的「運用價值」遠高於Ruby,所以很少聽到公司在徵Ruby工程師,多半是徵Ruby on Rails工程師。其框架寫得好到連前一陣子天瓏暢銷書Clean Code作者,Java大師Uncle Bob(本名Robert C, Martin) 在書中都有推薦,且想寫一個Rails的Java的版本。

 

(不過幾年前DHH主張TDD已死這件事讓他們兩個有隔空筆戰了一下,至於TDD是什麼,我們在接下來會介紹。)

((這麼多縮寫是在搞什麼,我都搞不清楚了))

(((這麼括號是怎樣,小編是有分段障礙嗎?)))

 

 

(Ruby on Rails 官方首頁)

 

 

Ruby on Rails非常容易懂,而且他有一個特性就是你不是很懂它你也可以寫出來一個很穩定的網站。不過醜話說在前面,因為Rails很好寫的原因,所以其實需要學會更多才有辦法得到Ruby on rails的職位。但是一得到,他的薪水大多會是同程度的PHP工程師1.2 ~ 1.5倍左右,可能就少求老闆加薪兩年。

 

(這邊需要先補充一下,任何的程式語言在你變成高手以後薪資都不太好比較。主要看公司需要你的程度與公司本身賺不賺錢還有產業別。不同產業別有不同的"商業邏輯",例如做遊戲產業的與做金融產業的工程師了解的就會很不一樣。這裡比較的是初級~中級工程師的薪資水平。文章後面會講到其中的邏輯思維。)

 

 

Ruby on Rails的的主張有以下兩大點:

1. 不要重復你自己

2. 慣例優先於設定

不過第一點其實沒什麼好講的,每個程式語言都有相似的主張,重複的Code容易製造出Bug,同時佔的空間也大,維護也比較麻煩。

 

 

第二點就比較有意思了

 

如果有實戰經驗後,或是工作了一段時間,會發現人來來去去,很多專案經手的人很多,將來也有很多人可能會經手。如果有碰到交接這個動作的話,文件幾乎都會掉一半。或是拿到文件但是不知道代表什麼意思。大概交接到第三次,就沒人知道裡面的Code在幹嘛,只會聽到這是以前"很厲害"的某某某寫的。這時就會希望如果有個統一的格式就好了,所謂統一的格式就是"慣例"。

 

 

所以對新手額言,學習Rails有一個很大的好處就是寫出來的code會符合"慣例"。因此很自然地排除掉了不好的寫Code習慣。尤其是現在不管是什麼語言都提倡Rest API架構。Ruby on rails幾乎是100%的符合Rest 架構以及常常一起提到的CRUD。所謂的 CRUD 就是對應四個資料庫的基本操作,Create(新增)、Read(讀取)、Update(更新)、Delete(刪除)。Rest則是依據CRUD來創建url的一個架構模式。Rest架構現在已經非常普遍了,並不是只有使用在Ruby on Rails網站。

 

 

(優秀且方便的官方API查詢網站)

 

 

Ruby on rails 的MVC分層十分的漂亮,這也是適合新手學習的原因。

 

 

MVC是一個設計理念,將程式架構分層三個層級M、V與C,現在不管是手機程式還是網站都是使用這個理念。

 

其中"M"代表的是Model層,跟資料庫相關。"V"代表的是View,跟最後呈現給使用者的介面相關,如果是手機就是可觸控元件,網站就是HTML/CSS/Javascript。

 

"C"代表的是Controller,與程式的商業或運作邏輯有關。 就算是到熟手,其實滿多工程師會把Controller與Model層搞混,View跟Controller層搞混。

 

所以從Ruby on rails開始學起可以很自然的建立起MVC的觀念。就算以後要寫手機程式開發也不用重新學起。(學寫Apple的iOS手機程式,也是很快就會碰到MVC架構)

 

 

再來就是最重要的資料庫,學習後台程式就是要處理資料庫,不然玩前端就好了。

 

 

Ruby on Rails有很優秀的實體資料庫概念的模型(Model)。所以在一開始的時候操作資料庫甚至不會碰到資料庫的SQL語法。又因為Ruby on rails有遵照Rest架構以及CRUD。所以新手可以在無痛的情況下學習如何操作資料庫。

 

 

可是醜話說在前面,要成為一個稱職的後端工程師, 熟悉SQL語法是跑不掉的。但對於新手而言還是有很大的益處,有多少人就是死在SQL語法過不去而放棄後端程式語言的。

 

 

(MySQL官方首頁)

 

其他還有上面提到的TDD,Test Driven Development,測試驅動開發。主要就是一個先寫出規格與測試,再寫程式的一個不符合一般人思維的開發模式。他有很大的好處,可以讓你的程式有機會接近傳說中沒有bug的程式。(實務上是不可能沒有Bug,因為光作業系統就不是你寫的,未知的因素太多了)

 

不過對於新手來說不太實際,適合有經驗的開發者。因為一開始TDD就要你要寫"單元測試",寫單元測試的必要條件是要能拆解功能,讓每個功能盡量獨立。可是每個優秀的工程師都是有過去的。誰沒有寫過又臭又長的橫跨兩頁的超巨大Function呢?

 

Rails還有很多優秀的特點,但礙於篇幅的關係本篇就無法一一介紹。最後就來講說本文標題的答案。為何Ruby on Rails工程師可以常年佔據高收入排行榜前幾名?因為“不要重復你自己”與“慣例優先於設定”這兩大主題讓開發合作容易。加上很優秀的框架都把輪子造好了(不要重複發明輪子WIKI)所以很快的時間內網站就可以上線測試。

 

再搭配微軟的理念,邊開火邊移動,很快的得到顧客的回饋再去修正。公司很快就會有盈餘,前期投資就不需要這麼多,自然就回饋到工程師上面了。

所以工程師的薪水取決於:

1. 市場需求度

2. "幫老闆賺多少錢"或"多快幫老闆賺到錢"

其實跟其他的行業也沒什麼差別

 

 

(搭配下文,Linode 2017 VPS價格)

 

 

所以從這個角度來看Ruby on Rails的劣勢時又額外的諷刺。一般來說Rails被攻擊的點都是執行效能與記憶體佔用量。但是這是可以靠錢(硬體)來解決的。

 

因為Ruby on Rails是跨平台,而且一般搭配的又是免費的Mysql, PostgreSql 或 MongoDB資料庫。所以只需要購買雲端虛擬主機VPS就可以了。就算極端點的比喻Rails的效能差別人到一個層級。也才值10塊~20塊美金一個月,一年最多240塊美金 = 7200台幣。但因為他好寫,快速開發,整個工程師團隊可以少掉一個人。隨便個最鳥的工程師也要30~40K/月,相比之下雲端虛擬主機升級的錢實在是太少了。

 

不曉得你是否喜歡小編的理由呢?無論喜歡或不喜歡這僅僅是小編個人的意見,但希望可以藉此讓你提起興趣來嘗試這小編很喜歡的後台框架喔!

 

 

最後老闆提醒說一定要一再的的提醒各位觀眾我們同時也有Ruby On Rails的課程這件事,不嫌棄的話可以看一下我們的介紹影片喔!順便看一下我們的連結,拜託!



下一篇

Mac使用者:
[Ruby on Rails] 02. [Mac] 如何在Mac底下安裝Ruby On Rails 開發環境

Windows使用者:

[Ruby on Rails] 04. [Windows] 如何在Windows底下安裝Ruby On Rails 開發環境


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊