身為前端工程師,對你來說,你認為最重要的是什麼?

好友 Kuro 公開問了這個問題,嘗試挑戰一下。不過主要也只是整理了一下我從身邊的前端同事及社群朋友們上看到的一些特質,畢竟比起我來,他們在前端領域打滾得更久。當然這些特質應該是適用大部份工程師 (不論哪一端) ,但我還是認為前端工程師平時要更著重這些特質。

註:其他領域或許也有「前端」這個術語,但一般人認知的「前端」是泛指「 Web 前端」。

這些特質包含:

  • 厚實的基礎能力
  • 擅長找出問題點
  • 擁有靈活的思維
  • 時常保持好奇心

厚實的基礎能力

現代很多剛接觸前端的開發者都誤以為只要學好框架、會套版面、最後發佈網站就是他們全部的工作了;雖然不得不說這是很多公司找人的目的,讓很多自稱前端工程師的朋友也只能在人後默默流淚。

但如果想讓自己成為一個優秀的前端開發者,不能只做這些宛如打雜的表面工作,而是要深深地打好基礎。基本上,前端大部份的工作成果都得靠瀏覽器呈現,而其中要理解的基礎大致上可以分成幾個重點:

  • 瀏覽器要呈現的內容從哪來?
  • 瀏覽器背後到底做了些什麼?
  • 怎麼讓瀏覽器正確呈現內容?

剛好有一篇《在瀏覽器輸入網址並送出後,到底發生了什麼事?》把這些要點介紹得很清楚,而文章中的各個環節就是前端開發者所該具備的基礎。

那該怎麼開始打好這些基礎呢?你可以在 Google 上搜尋一下「 2018 前端技能樹」,大概會蹦出不少有用的參考資源,以下羅列幾個:

註:你可能會問為什麼不是找 2019 年的技能樹?拜託,現在才一月耶,去年的繼續用就好。

當然並不是說上面列的全部技能都是基礎,但至少瀏覽器相關及網頁三巨頭 HTML/CSS/JavaScript 背後的知識都是前端工程師日常工作中必備的基礎技能。有句話我記得好像是這麼說的:

大師只是把基礎功練得比別人更極致而已。

所以厚實的基礎能力是前端工程師很重要的特質,有些前端工程師基礎好到只要是可以用 JavaScript 做出來放到瀏覽器上跑的東西,他們都會去做,更何況這世界上每個東西看起來都像 JavaScript 。

擅長找出問題點

大多數前端工程師平常不只是在開發新功能而已,他們還需要面臨使用者在瀏覽器操作上的各種問題,還有開發工具帶來的各種問題,以及為了解決問題所開發的工具所帶來的新問題。有厚實的基礎能力還有 Stack Overflow 作為後盾,他們就能在看到這些問題時,可以很快分析出問題點。

所以知道如何用瀏覽器提供的開發者工具來偵錯或是查看效能瓶頸,熟悉各種瀏覽器之間不一致的實作等等,這些都是前端開發者在尋找問題點時很重要的技能。今天如果是我面試前端工程師時,我第一個問題大概會問:「你知道主流瀏覽器開啟開發者工具的快速鍵嗎?」

擁有靈活的思維

「技術領域裡不會只有一種解決需求的方式。」這句話的威力在前端開發中特別顯著。前端開發者的強大不在於他們學會多少工具,而是會不會用手邊既有的工具來處理需求或是解決問題。你以為我要說「龍五手上只要有槍,誰都殺不了他。」嗎?對,我已經說了。

在我所知道的前端開發者裡,有一個思維靈活到極致的男人叫 Martin Kleppe ,他常用的帳號是 @aemkei 。他對 JavaScript 的惡搞研究很難有人可以相提並論,我曾經在 JSConf 裡看過他的演講,那時我才知道自己在 JavaScript 上思維有多僵硬,大概跟我的肝一樣硬。

來看看他的簡報和議程錄影:

時常保持好奇心

就跟貓一樣,你大概很難阻止前端開發者的好奇心。常會看到前端同事或社群朋友在網路上逛一逛後就撿到一些有趣的 JavaScript 或 CSS 寫法,接著就會分享出來討論它們是用了哪些技巧。然而好奇心會殺死貓,也會殺死前端工程師;他們除了喜歡去探究那些新奇的玩意是怎麼做到之外,也可能會在看到一個效果後,就日以繼夜,自己從頭摸索來做出同樣的效果。

當然他們也不會僅滿足於做到別人已經做出的成果,還會自己去研究 W3C 制定的規格或是其它技術的理論,進一步打造出前所未見、令人驚豔的成品;所以你可以說好奇心就是前端工程師進步的原動力,否則到今天我們可能還是在「首頁製作百寶箱」裡找程式碼複製貼上。不過現在有進步一點,大多數前端工程師都學會在 CodePen 或是 JS Bin 找程式碼了。

結論

好啦,我還是要掛個免戰牌 (你看我連評論都不給你寫了) ,希望各位別認為這些特質就是全部或是絕對;更好的方式是直接去觀察各位身邊的優秀前端工程師,看看他們平時在玩些什麼遊戲,不對,是有什麼樣的特質才會如此受人尊敬。