如何雇一個牛逼的 Node.js 開發者
初創公司是我的激情所在,而我干的也是管理一群雄心壯志的開發人員。我工作在Strongloop,并且已經在很多初創公司待過。初創公司在雇傭問題上有它獨特的挑戰----預算緊,期限近。加上要使用開源框架進行開發,而且還是相對年輕的框架,如Node.js,這一切使得雇傭一個合適的團隊成為了一種巨大的挑戰。
正如所有新興并被快速采用的技術框架一樣,一開始的挑戰就是給你的技術團隊增加高效的人才資源。在快速得出關于把 Javascript 開發變成 Node.js 工廠的結論之前,讓我們先來看看關于 Node 及產品開發環境的核心問題。 簡而言之,核心問題就是:
-
Node.js 具備基于事件的編程風格
-
Web 趨向于更小的以響應器/消息為基礎的架構
-
最后,大多數我們試圖解決的問題仍然需要通過可擴展的后端架構而不是UI來提供支持。
讓我們逐個分析這些問題并揭示它們所帶來的挑戰。那就引出了我們需要招聘什么的人。
基于事件的程序設計
相對于傳統的線程模型,Node.js開發與傳統模型之間的主要區別是圍繞著事件模型。相對于傳統的線程模型,框架在基于事件的程序設計中管理的是控制流。在傳統模型里,開發者必須在控制流中仔細處理模型中的流程,主動編寫控制流向及返回的代碼,要完全了解任務執行完后應該如何繼續下面的流程。而對循環進行完全控制的事件模型則會返回到它會去的地方,而你卻只能交叉手指祈禱好運。于是挑戰就在于你如何組織邏輯,在于如何從過程模型到應用系統的輸入與響應模型理解上的轉變。這就是關鍵。
一個好候選人,能就傳統的問題通過事件的方式進行討論。他們是否能夠清楚哪種類型的應用程序更適合于Node的方式? 例如,一個I / O與CPU密集綁定的應用程序。著名的聊天服務器就是個很好的例子。問他什么樣的復雜變化需要使用這種模式放在一起的代碼。 一個好的候選人應該能夠解釋并發模型,事件循環與多線程的差異,以及它們如何影響可擴展性。
開發來自測試,二者手拉手。JavaScript是一門弱類型的動態語言,來自于Java/C#的世界,你突然失去了你的安全保障(你的“編譯器”)。此外,你寫代碼處理事件都處在模型之中,以測試驅動開發(TDD)的經驗 確實變得好用。以我的觀點來看,TDD更適合基于事件的編程。實際上最好的開發人員已經這么做了,在測試之前甚至只有一行代碼。更關鍵的是,你要確保你所想要雇傭的開發者有使用測試驅動代碼設計的思想,而不僅僅只是考慮去用。下面將會做一下介紹。
這樣,我們就有了兩個關鍵的技能點用來尋找候選者,即:編碼能力和測試驅動設計!這與我之前說的沒有太大區別,除了一些細微上的不同!
范型轉換
你可能已注意到了網頁的范型轉換: 我們正快速地從傳統的網頁加載刷新走向較小的傳感器般的信息,快速地訪問小片的實時信息。你將也注意到通過開放式API我們走向傳感器連接,器件連接,移動訪問。Node.js這種情況,這里也是開源,由小模塊API提供訪問豐富信息組成。加上有不斷成長的模塊生長生態的外在,我觀察到它驚人的成長---大約30%,從我加入Strongloop大概18個月以來。所以,你雇傭的任何Node.js開發人應該擅長在這樣的開發模型下工作: 訪問實時信息的小部分。
通常,我相信這意味著這樣的開發者:擅長互動開發,快速編碼試水,寫小的重用的代碼片段,遵循基于API開發。
基于類似Express, Connet, Async的關鍵模塊的經驗肯定都是加分的。github經驗,開源貢獻都得加高分。事實上,候選人用GitHub合作對等編碼,關注Node.js在Google群和StackOverflow的活躍社區,和他寫代碼的能力同等重要。用模塊生態系統的許多模塊,找到已有模塊,修好別人的模塊或者給別人的模塊打補丁,終歸都是關鍵的技能。我要檢查候選人GitHub的貢獻的趨勢和質量數量。他們是好的社區成員嗎?他們修好代碼嗎?他們實行干凈健康的特征分支,PR,提交嗎?
如果你確實發現有人他積極貢獻某節點核心,好,移交到附近的辦公室。
安全性,后端架構,培訓
伴隨著代碼開源,Node.js又是基于Javascript,這可能會導致你的應用存在安全隱患。開發者應當對服務器端注入比較熟悉,而且知道如何通過編碼去避免這些風險。Node.js是單線程的,所以很容易會受到拒絕服務攻擊。一名能夠考慮到這些惡意情況并且編寫出經得起良好測試的代碼,在你的Node.js組中將會非常有價值。
Node.js相比其他編程語言還是比較新的,所以找到一名理想的員工可能會是一個挑戰。在一些當地的小聚會中,你可能會找到一些黑客,也有可能找到一些經驗豐富并希望向Node.js發展的Java工程師。或者為什么不考慮將你手下的一些在大型后端架構、處理大規模問題和容錯方面有豐富經驗的Java工程師送去參加一個好的培訓呢?準備好開始了嗎?StrongLoop提供培訓和對個人或者組織的認證。
英文原文:How to Hire Great Node.js Developers
譯文鏈接:http://www.oschina.net/translate/hiring-node-js-developers