如何僱一個牛逼的 Node.js 開發者

oschina發表於2014-08-01

  初創公司是我的激情所在,而我乾的也是管理一群雄心壯志的開發人員。我工作在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提供培訓和對個人或者組織的認證

  原文地址:http://strongloop.com/strongblog/hiring-node-js-developers/

相關文章