The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

公司找不到資深前端工程師可以導入前端框架嗎?

我有很多客戶都跟我提過這個問題:「我公司想導入前端框架,不過公司內沒有人熟前端,很怕如果遇到技術問題會卡關,做不出想要的功能怎麼辦?」公司內沒有資深的前端工程師,導入前端框架確實是件痛苦的事,本篇文章將探討我對這個議題的想法與對策。

我去年 12 月到 2018 ngChina 开发者大会 演講,在第一天下午最後有場 Panel Discussion (圓桌論壇),跟當天在座 300 位與會者一同交流,其中有位來賓問了一個問題,而他的問題我在台灣也回答過好幾次。他的問題是:「在國內都找不到會寫 Angular 的工程師,請問台上的講師有什麼辦法解決?」當時我就搶了麥克風來回答,因為我太有經驗了!😆

這個問題其實我心中有好幾種答案:

  1. 你覺得用 Vue 或 React 就找的到人嗎?
  2. 不管你公司用什麼框架,你覺得應徵者說「會寫」你就敢用嗎?
  3. 前端 SPA 框架現在是非常火熱沒錯,但你知道 jQuery 的用戶還是占大多數嗎?

我記得當時的我是這樣回答的:「不是只有你招不到有經驗的 Angular 開發人員,我們也差不多,也都不好找,大家也都一樣。但相較於其他框架,Angular 在 Angular CLI 的幫助下,開發前端應用不再有極高門檻,反而是任何一個新人只要培訓個一兩天就能立即開工。所以在我們公司,經常會聘用沒有 Angular 開發經驗的前端工程師,經過短時間的訓練通常都能快速上手。而且 Angular 架構穩定,開發的一致性極高,任何人要參與維護一個開發中的 Angular 專案,通常不會差太多!所以這個問題,對我們來說困擾不大!」

我講完之後,台下掌聲響起,大家似乎頗有同感。會後跟大家交流的過程,也蠻多人說跟我有相同的見解,公司在培訓新人方面也不太會有問題。

前端框架的選擇障礙 (個人)

這幾年前端框架之間的戰火已經大致底定,Angular、Vue、React 三強鼎立之下,先不論誰強誰弱,總之都各有擁護者,喜歡的就是喜歡,不喜歡的大概也沒力氣換,這就是目前殘酷的事實。公司如果已經選用了特定框架,你就用什麼,不都是這樣嗎?

也曾經有人問過我,在外面找工作,要找 React 的工作好像不少,用 Vue 的也很多,而 Angular 的工作機會相對較少,這樣是不是不要學 Angular 比較好?

我必須說,身為一個求職者,光看求職市場的大盤是沒啥意義的,因為不是每一間公司你都想去,而你也不知道哪一間公司適合你去。我相信去學 React / Vue 的人應該也不少,但為啥我身邊有許多朋友都在抱怨找不到 React / Vue 的好手,甚至抱怨找來的人都在亂寫,Code Review 看到吐血。

事實上,學任何一門技術或框架,都應該要深入核心,掌握技術原理,更能夠舉一反三的快速解決問題,這才是確保找到好工作的不二法門。有些基本功,不管你學哪一個框架都需要花時間了解,沒有藉口。但我也相信,不是每個人都能成為資深前端工程師,不管你有幾年的工作經驗都一樣,但是解決問題的能力與態度,應該是每個人都需要具備的。

所以,話說回來,前端框架的選擇不是重點,因為這三大框架,你熟悉任何一套,都應該很容易找到不錯的工作。今天你對 Vue 有愛,再多的困難你也會想辦法解決。今天你喜歡 Angular 的設計,它每出一個新版本你都會感到興奮。我們就是在這樣的心態下不斷進步。

前端框架的選擇障礙 (組織)

前端框架的水很深,沒有人帶領,真的會學的很慢,甚至於覺得不值得投資時間在上面,乾脆繼續用 jQuery 算了。

由於我這些年都在各大企業擔任講師與顧問 (有顧問需求可以點這裡),協助企業導入 Angular 前端開發框架,我發現大部分企業都有以下狀況:

  1. 企業中大多是後端開發者,懂一點 JS 與 jQuery 前端開發。
  2. 後端開發者大多熟悉 物件導向程式語言 (OOP),並以 C# 與 Java 為大宗。
  3. 許多老舊的後端框架維護不易,新人都不會舊式框架,訓練成本高,人才又不容易留住。
  4. 有許多後端框架混和前端(jQuery)的 Web 應用,程式碼複雜度過高,不容易理解與修改。
  5. 公司內大多沒有資深前端工程師,想導入前端框架卻不得其門而入,也會非常擔心卡關,寧願繼續使用現有架構。
  6. 許多企業的 Web 應用又多又雜,不像是官方網站那樣單純,都是功能多、表單欄位複雜、有些操作互動也相當繁瑣。

會找我去授課或顧問的企業,通常已經經過深思熟慮,知道自己為什麼要選擇 Angular 當作他們的主要前端框架。我老實說,Angular 在框架完整性、穩定性、執行效率、開發工具支援、開發風格的一致性、版本升級容易等多方考量的因素之下,是最能全面兼顧的框架,我並不是說 Angular 是三套裡面最簡單的,但是對於企業與團隊開發者來說,是最適合不過的選擇了!

但是,最近我也聽到了一些聲音,他們提到 Angular 很難懂 (沒人帶),React 好難學 (Redux),但 Vue 好像比較有趣 (簡單好理解)。這個現象很有趣,因為在前端界,你什麼聲音都聽的到,有人覺得難,就有人覺得簡單,為什麼會這樣呢?因為前端的水太深了!每個框架都有各自的特性、用法、習慣,不是每個人都適合。

有些剛入行的前端開發者並非科班出身,沒有學習過任何計算機概論、程式設計原理、資料庫系統、作業系統、演算法等知識。有些人甚至完全沒有任何 OOP (物件導向程式設計) 觀念,沒寫過任何後端程式,入行才剛學 HTML 與 CSS 語法,人生第一個程式語言就是 JavaScript,只用過 jQuery 或 jQuery Plugins 等函式庫。這時,我又要推薦我先前寫的文章【我要成為前端工程師!給 JavaScript 新手的建議與學習資源整理】,建議大家可以再看一次!

對於 Vue 與 React 來說,開發風格較不受限,你想用什麼風格開發都可以,一開始只要有範例程式可參考,很快就可以上手。但這件事一體兩面,風格不受限制的背後可能會帶來許多維護性的問題,程式碼的品質難以控管,需要有前輩定義風格,甚至於找到適當的工具來限制開發者的寫作方式。

但對 Angular 來說,開發風格較偏物件導向架構(OOP),所有的元件都是 class (類別),只用到少許的 function (函式),對於後端工程師來說容易上手。且在 Angular CLI 與 Visual Studio Code 的幫助下,開發架構會趨於一致,而且內建 TSLint 可以限制程式碼的寫作風格。就整體架構來說,對於不擅長 OOP 的開發者來說,確實有不小的學習門檻,需要有前輩帶領比較容易上手。但如果只是跟著現有架構寫 Code,完全沒有問題,而且通常可以維持一定程度的品質!(凡事總有例外)

公司需不需要有個資深前端坐鎮?

選用前端框架,有個很重要的目的:能快速的解決各種 Web 開發需求!

如果你沒有這種需求,建議你還是不要這麼快做決定,繼續使用現有的框架,或許是不錯的選擇。

任何一套 Web 應用程式,都有可能會越寫越多、越寫越複雜,例如:HR 系統、ERP 系統、HIS 系統等等。就算你做電子商務,除了購物網站外,後台的內容管理、訂單管理、客服管理、帳務管理... 隨著時間累積,複雜度也會越來越可怕。

所以我在談前端框架的時候,基本上是不太考慮「簡單需求」的情境,因為任何一個簡單的系統,發展到最後都會很複雜,並不存在現在架構很簡單,以後也會很簡單的情況。如果我可以預想到未來不會很複雜,那麼我也可以說,選擇任何一套框架,或是不選擇任何一套框架,都是正確的選擇!

在前端界,有多少人敢說自己資深?新技術每隔兩三年就會出現一個大的,然後換掉幾個式微的,開發工具每年也都推陳出新,哪可能有人全部都會!比較合理的徵才方式,應該是找到有學習能力,見多識廣的前端工程師,他可以迅速理解前端技術,能夠找出適當的工具輔助開發,能幫助同事不斷進步。這種人,不一定要資深

對企業來說,只要能快速解決問題的技術,就是好技術,因為市場不等人,沒時間給你慢慢學。今天會想要選用前端框架的企業,肯定面臨許多痛苦,並且力求改變,不然不會這麼困擾,硬要去學一門自己不熟的技術。

這裡我列出兩種可能的情境:

  1. 公司可以找到資深前端開發者

    如果你是新創公司,有著大好前景與股票分紅的吸引下,很有可能找到不錯的人才。有許多的新創團隊,老闆自己本身就是技術人員,撰寫程式不假他人之手,這當然沒啥問題。但如果創辦人不是技術背景,又沒有好的技術合夥人可以擔當技術後盾,那真的就非常辛苦了,如何每項都是難點。

    我從朋友圈中觀察得知,大多能找到資深前端開發者的公司,都是大的、賺錢的 (或拿很多錢的)、有前瞻性的公司居多,像是遊戲業(博弈)、新創公司、網路公司、外商、區塊鏈公司、人工智慧相關公司等等。這些公司賺錢,肯給薪水 (砍人也不手軟),有能力的人通常會趨之若鶩。

    我最常聽到的例子,就是大家都說美國矽谷有超過 80% 的公司都用 React 前端框架,幾乎大部分世界最前沿的公司都用 React 打造自家的 Web 應用。採用 React 不是問題,問題是他們選擇用 React 的理由,是基於 React 的彈性、效能與自由度,任何人都可以利用 React 打造出最適合自己的 Web 技術框架,每間公司都在打造自己的框架。我必須老實說,這個優點,可能不適用你公司,甚至不適用於大部分的台灣企業,因為大部分企業不需要打造自己的 前端技術架構 (Frontend Technology Stacks)!

    許多初學者並不清楚 React 只是一個函式庫,並不是一套完整的前端框架。而從一個函式庫發展到一個最適合自己公司用的技術架構,是需要眾多資深前端開發者共同創造出來的,一般中小企業或傳統中大型企業,並沒有這樣的養分、文化,可以自己打造技術框架。而且打造技術框架需要大量人力、時間、成本,沒有足夠的市場,企業本身沒有很賺錢,其實沒有必要走這條路。

  2. 公司無法找到資深前端開發者

    一般中小企業想找到資深的前端,簡直難上加難,可以說幾乎不可能。

    以我公司為例,我們公司是一間技術導向的軟體公司,專門為客戶打造量身訂製的 Web 應用程式,公司不過二十多人,是個十足的小型企業。但我們採用的技術相對新穎,公司有強大的學習文化,每個人在我們公司都會有意識的不斷成長,相對一般中小企業來說,我們比較有機會找到資深前端,但是比例還是相當低。我們的替代性作法,就是找到資質好的前端人 (但不資深),並讓每個人都有機會快速進步,在短時間內變成資深前端工程師。我這樣實行了很多年,效果相當不錯!

    如果你是中大型企業,有個數十人的 IT 團隊,自己有能力開發系統,但是前端還不上手的話,如果能找到厲害的前端好手加入,那就真的如虎添翼。若選用 Angular 或 Vue,厲害的人不用太多,一兩位就夠了,透過老司機帶路,團隊很容易短期獲得效益。不過,老公司的企業文化改變不易,要能吸引到資深的前端好手是相當不容易的,這時找顧問協助導入前端框架,是最好不過的選擇!

    在我這幾年的顧問生涯中,我幫助許多企業開發者認識 Angular 開發框架,用既有的 OOP 觀念來理解,只要幾天的訓練課程,一下子就能快速上手,有效率的開發 Web 應用程式。接下來的幾個月,只要透過顧問定時的 Review 開發架構、程式撰寫風格、工具的選用,很快就可以進步到自給自足的地步。我個人認為這樣的投資非常具有經濟效益,一來不用擔心找不到人,二來可以讓現有員工能在短時間內生產力快速提升!

所以我們回到原本的問題:公司需不需要有個資深前端坐鎮?

我的答案是:有最好,因為前端水很深,有經驗的好手可以帶領團隊提升戰鬥力!如果沒有的話,強烈建議可以找專業顧問幫忙導入,畢竟時間就是金錢,與其讓大家慢慢碰壁,倒不如直接請老師來教,降低學習成本,減少犯錯的機會!

相關連結

留言評論