當前位置:
首頁 > 科技 > 小馬過河——Angular 學起來難嗎?

小馬過河——Angular 學起來難嗎?

Angular 學起來難嗎?

答案是:不知道。準確的說應該是 "因人而異"。我曾經說過:任何賣包治百病的大力丸的都是騙子,任何逢人就說一項技術很簡單的也是騙子 —— 你連對方的技術背景都不問就敢說很簡單,這跟醫生不診斷就開藥有什麼區別?不過是莆田系的那一套罷了。

對純而又純的萌新……

對於那些沒有任何技術背景(無論前後端還是App)的萌新來講,Angular 是很難的。Angular 的設計目標是讓你寫 "好" 代碼,而不是寫 "出" 代碼。所以對於萌新來講,要寫好 Angular,不但要學會關於 Angular 的概念、知識,更重要的是得學會 "寫程序" 。後者才是最難的。

對於萌新來說,從 Angular 學起就像是綁著沙袋練長跑,開始確實會比較累,但是到了學成的那一天,你會發現自己身輕如燕。重要的是,它會送給你業界在多年的實踐中總結出來的一些經驗和教訓。

如果一個萌新是在一個有高手帶隊的團隊中學習,那麼你是一個幸運兒 —— 你只要假裝綁著沙袋跑步就行了,其最終效果卻和真的綁著沙袋時差別不大。

總之,對於純而又純的萌新來說,學習 Angular 的關鍵是:多想、多練、高手帶,等你摘下沙袋的那一天,你才會發現這世界是多麼的美好。

對有其它技術背景的萌新……

如果你只是個前端萌新,但已經是一個Java高手、.NET高手或 iOS / Android高手,那麼恭喜你,你將有機會 "平移" 到 Angular 中。當然,除非你在一個團隊中,否則仍然要面臨很多的挑戰,但這種挑戰主要不是來自 Angular 本身,而是來自 Web 生態。

事實上,我認為任何一位開發人員想要成為高等級的架構師,都至少需要掌握一門後端技術和一門前端技術,否則你怎麼能設計好跨前後端的架構呢?以我為例,四年前我還是一個純而又純的後端,然後利用對後端技術的理解在兩周內平移到了 AngularJS 中,而今年我又利用對 Angular 的理解在兩周內平移到了後端的 Spring Cloud 技術體系中。我相信每一個人都有機會做到這種平移。

略顯尷尬的是中級水平的前端萌新。

中級萌新對原本的技術還沒有用到融會貫通的程度,而學 Angular 時視野又不夠高,看不出這些技術之間的相通之處,這時候就可能遇到瓶頸。

這是挑戰,也是機遇。

那些你在原有技術體系下沒能理解透的技術,到了新的技術體系下,可能會看到它被活學活用的例子,這也許就是你的靈犀一指。當然,刻苦努力是必不可少的,我始終相信《一萬小時天才》理論才是正道,天才固然有,但我自己不會是那個幸運兒。

對團隊領袖……

Angular 做出了很多技術選擇。這些選擇都傾向於進行更有效的團隊協作、長期演化時更好的可維護性以及需求頻繁變化時更高的可擴展性。這些選擇都不能讓你短期內寫程序更快,但可以更好。所以,如果是一個或幾個萌新組成的短線項目,沒有高手坐鎮,成果也沒有計劃使用超過一年,那麼,我不建議你們使用 Angular —— 除非你就是想把它當做 Angular 的學習項目。

反之,如果你要實現一個長線項目,並且對代碼質量的要求比較高,那麼我會推薦你使用 Angular。

通常,只要一個 Angular 高手就可以帶起一個高效的團隊:

Angular 有完善的 AOP 機制,可以統一處理公共需求,比如登錄、日誌等等,而這些只需要一個高手就能搞定,萌新只要根據業務需求實現功能就可以了,而不必關心那些複雜的全局性功能,輕鬆加愉快。

Angular 有著開箱即用的路由和表單,這些都是在多年的實踐中總結出來的,不用你去評估篩選第三方庫,也不用擔心第三方庫的質量。

Angular 使用 TypeScript 作為主語言,它既有動態語言的靈活,也有靜態語言的嚴謹,萌新在 IDE 中就可以直接發現很多種錯誤,而不用等運行起來甚至發布給用戶之後才發現。也許,你再也不用擔心半夜被老闆叫起來改 BUG 了。

總而言之,對同等資歷的團隊而言,Angular 勝在代碼質量高、長線成本低,這是它得以成為 Google 的 AdWord(這是 Google 的主要收入來源) 等系統的前端框架的重要因素之一。

呃…… HR 的因素

有時候,技術選型還需要考慮公司的 HR 策略。

有些公司的人員流動性很強,這時候選擇 Angular 有利有弊。

好的一面是不管誰來都得老老實實照著規範寫,不照著寫你都編譯不過去,因此可以用技術手段強制保障代碼的質量基線。同時,Angular 本身的難度也會替你篩掉一批混子,省下一些面試成本(我就曾面試低端程序員面到昏天黑地、懷疑社會,對此我深有體會)。

壞的一面是你的平均用人成本會比較高,因為沒有幾個培訓班敢拍著胸脯說一個月就能把純而又純的萌新給培訓成有生產力的 Angular 程序員。同時,你的這些工作可能不容易外包出去,因為普通的外包公司是不會投入資源去培養 Angular 程序員的(也許少量骨幹除外?)。所以,對於一些短期的、周邊的系統,用 Angular 往往弊大於利。

然而……

然而,難不難其實是個偽命題。就像本文的標題所暗示的那樣:小馬過河,自己試。不要聽老牛說淺就覺得淺,也不要聽松鼠說深就覺得深,這又不是什麼人命關天的大事,自己靜下心來花一天試試不就知道了?記住,所有號稱中立卻不問你的技術背景和意願的對比、評測,都是騙子。別被忽悠,這是我在十九年的碼農生涯中總結出的最重要的經驗教訓之一。

總之

紙上得來終覺淺,絕知此事要躬行。

我一直認為,對於一個程序員來說,決定他前途的不是已有的知識甚至天賦,而是勇氣和眼光。你是否願意嘗試新事物?你是否會因為別人說難而放棄?你是否會願意僅僅為了滿足好奇心而去探索一門新知識?在這個日新月異的時代,這些品質決定了你的深度與高度,也決定了在十年後你到底是把一年的經驗重複了十次,還是真的有了十年經驗,決定了你是否能有能力跳出技術的限制,看到日新月異的技術背後,那些不變的思想內核。

這些,正是我希望在中國的 Angular 社區中好好培養的性格與文化。

關於本文

作者:@汪志成


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 前端早讀課 的精彩文章:

小馬過河——前後端是怎麼分家的?
【視頻】Machines must suffer
小馬過河——給萌新的 Angular 系列教程
每個程序員第一份工作前應該知道的10件事
前端數據管理與前端框架選擇

TAG:前端早讀課 |