怎樣才是全能的程式設計師?
期望一個凡人掌握開發過程中各個方面的知識,合理嗎?也許不合理,但是Facebook正是要尋找這樣的人。在一個OSCON會議上,一名Facebook的工程師告訴我的,他們只聘請“全能(Full stack)”的程式設計師。那麼,全能是什麼意思呢?
對於我,一個全能的程式設計師應該熟悉每一個層面的技術知識,如果不是全部掌握,也要對所有的軟體技術有真正的興趣。
熟悉整個技術體系的程式設計師,可以使得周圍的人的生活更加容易。這就是為什麼我反對在工作場合的技術鴻溝。當然,大公司裡的政治和溝通的問題往往會影響他們的發展。我想Facebook招聘策略的目的就在於,如果聰明的人身心俱到,一個好的產品可以在更短的時間內釋出。
技術知識體系的分層:
1. 伺服器,網路和主機環境
- 這包括理解什麼會當機,為什麼會,沒有任何資源是理所當然的。
- 合理使用檔案系統,雲端儲存,網路資源,理解資料冗餘和可用性。
- 在硬體受限的情況下,如何擴充套件應用。
- 那麼關於多執行緒和競爭呢?你猜怎麼著,你在你的開發機器上看不到,但是在現實中卻經常發生。
- 全能程式設計師可以與DevOps協同工作。系統應該提供有效的錯誤資訊和日誌能力。DevOps會在你之前看到這些資訊,使它們有意義。
2. 資料建模
- 如果資料模型存在缺陷,那麼業務邏輯和更高的層次將要用奇怪、醜陋的程式碼來彌補那些模型沒有覆蓋到的邊界場景。
- 全能程式設計師知道如何構建合理規範化的關係模型,包括外來鍵、索引、檢視、查詢表等。
- 全能程式設計師熟悉非關係資料儲存的概念,理解其比關係型資料儲存的優點。
3. 業務邏輯
- 明白應用程式提供的核心商業價值。
- 需要紮實的物件導向知識。
- 需要理解框架。
4. API層面/Action層面/MVC
- 理解外部如何與業務邏輯和資料模型進行互動。
- 框架在這裡會用得很多。
- 全能的程式設計師有能力寫出清晰,一致,簡單易用的介面。一些API的複雜得使我感到厭煩。
5. 使用者介面
- 全能程式設計師a)知道如何建立可讀的佈局,或者b)明白自己需要幫助藝術和圖形設計師。無論哪一種,實現好的視覺設計是關鍵。
- 掌握HTML5/CSS3。
- Javascript在將來會是非常重要的一門語言,很多令人興奮的作品都是用Javascript完成的。(node, backbone, knockout……)
6. 使用者體驗
- 全能程式設計師明白,使用者只是想讓產品可以正常工作。
- 一個好的系統不會使得使用者患上腕管綜合徵和眼痛病。一個全能程式設計師會將一個需要8次點選3個步驟的工序,修改為1次點選。
- 全能程式設計師會新增有用的錯誤資訊。如果有什麼出錯了,要向使用者道歉。有時程式設計師漫不經心寫的錯誤資訊會讓使用者覺得很傻。
7. 理解使用者和業務的需求
- 現在我們模糊的進行的架構設計,但這會遠離了真正的需求。
- 全能程式設計師會預先看看當使用者在使用軟體的時候,會發生什麼。同時,他們也會關注業務部分。
其他問題:
- 能夠編寫質量單元測試。順便說說,Javascript現在也可以進行單元測試了。
- 理解持續自動化整合,包括構建應用,測試,編寫文件和部署擴充套件。
- 安全意識也非常重要,因為每一個層面都會有其易受攻擊的地方。
總結:
將程式碼緊緊的綁到一個特定的環境(庫,作業系統,硬體等等),是非常糟糕的實踐來的。全能程式設計師理解所有的知識體系,不意味著他們可以走捷徑。然而,他們確實會這樣做,如果只是建立一個原型的話。
技術型創業公司需要全能程式設計師的多才多藝。但是,一個成熟的公司,需要更多的是專注的技術。
我不確定在你使用多種語言,使用多個平臺,甚至為多個行業工作之前,你是否可以自稱為全能程式設計師。全能程式設計師要在“高階程式設計師”之上,因為他們與通曉多語言的程式設計師在同一線上,但是對各個模組的關係更有全域性的意識。注意我剛剛的列表,只有3-5項包含了編寫程式碼。
英文原文:[What is a Full Stack developer?]
譯文:http://www.cnblogs.com/wilsonwen/archive/2013/06/03/3115998.html
相關文章
- 怎樣才是理想的程式設計師程式設計師
- java程式設計師怎樣面試?Java程式設計師面試
- 遊戲程式設計師的工作是怎樣的?遊戲程式設計師
- 怎樣尊重一個程式設計師程式設計師
- 什麼才是程式設計師的最高境界程式設計師
- 程式設計師來做設計,世界會怎樣?程式設計師
- 怎樣才算得上合格的程式設計師程式設計師
- 盲人程式設計師是怎樣煉成的程式設計師
- 怎樣才能叫高階程式設計師?程式設計師
- 程式設計師喜歡怎樣的職位描述?程式設計師
- 程式設計師的樣子程式設計師
- 完了!Windows弱爆了!它才是程式設計師的首選!程式設計師:真的好用!Windows程式設計師
- 在國企做程式設計師怎麼樣?程式設計師
- 學會怎樣尊重一個程式設計師程式設計師
- 什麼才是程式設計師的核心競爭力?程式設計師
- 程式設計師是怎樣把女朋友聊沒的?程式設計師
- 看看阿里程式設計師是怎樣講限流的阿里程式設計師
- 程式設計師怎樣找到自己的核心競爭力程式設計師
- 怎麼樣才算是程式設計師的思維方式?程式設計師
- DevOps:全能開發是如何扼殺程式設計師的?dev程式設計師
- 程式設計師是怎樣一群人程式設計師
- 程式設計師怎樣新學一門技術程式設計師
- 程式設計師的奮鬥史(五)——謙遜才是王道程式設計師
- 程式設計師才是真正的“老司機”,30個IT術語這樣解釋,新手秒懂程式設計師
- 科技愛好者週刊(第 174 期):全能程式設計師 vs 特長程式設計師程式設計師
- 做大廠程式設計師是一種怎樣的體驗?程式設計師
- 在國企做程式設計師是怎樣的體驗?程式設計師
- 資料說話:怎樣的程式設計師最搶手?程式設計師
- 《程式碼大全》程式設計師們怎樣花費自己的時間程式設計師
- 身為程式設計師碰到最奇葩的需求是怎樣的?程式設計師
- 美女就是生產力!程式設計師鼓勵師是怎樣的存在?程式設計師
- 史上最無聊的程式設計師是怎樣註釋程式碼的程式設計師
- 漫談程式設計師系列:程式設計師的生活就這樣嗎程式設計師
- 程式設計師應該怎樣和領導相處?程式設計師
- 怎樣才能讓程式設計師老公回家多看看我程式設計師
- 程式設計師創業:我應該怎樣活著?程式設計師創業
- 完了!Windows弱爆了!它才是程式設計師的首選!Windows程式設計師
- 10年之後,程式設計師的收入可能會怎麼樣?程式設計師