先感謝 JSDC 團隊邀請,這次的直播企劃真的是超快閃,週一晚上接到邀請,週二花了一個小時喬 rundown,然後週三晚上就直接上了,幾乎是沒什麼準備的機會,超刺激。還好直播中沒有什麼太大的意外,也謝謝來自各方的觀眾願意來聽我這個大叔練肖威。

這次直播主要就是做個簡單的訪談,跟大家聊聊出社會這些年來是怎麼踏入前端領域的過程。 順便宣傳一下我今年在 JSDC 分享的議程主題這樣。

JSDC 報名傳送門: https://jsdc-tw.kktix.cc/events/jsdc2017

可能中間有些胡言亂語的部分,就請大家多包涵。 這裏就透過這篇文章簡單做個紀錄,也補充在直播沒提到的東西。

一整個鬧到不行的宣傳圖

那些在直播裡面「加油好嗎」的屁話我就不在這邊紀錄了 XD

直播實錄


什麼樣的契機讓你開始寫程式

我其實從小學還在 Dos 時代就開始接觸電腦了,早期其實也不知道程式什麼的,都是為了打電動,頂多就是改改 autoexec.bat / config.sys 之類的設定檔,一直到五、六年級的 windows 95 時期才首次接觸網頁。 印象中那個時候很流行「烘培雞」 (HomePage) 什麼的,老師都喜歡教你 <h1> 就是標題, <center> 就是置中,還有一大堆的 <font> 標籤,以及從「網頁建置百寶箱」裡面的各種神秘代碼貼來的特效。

那個時期別說 CSS,連 JavaScript 是什麼都沒聽過。 XD

真正開始寫程式的時候,反而是高中時期參加電研社才首次接觸 C 語言、 VB 之類的。 印象很深刻的是當時還用 Turbo C 寫了一個貪食蛇的小遊戲,現在都忘光了其實 XD

到了高二,雖然讀的是文組,仍因緣際會加入了某個神秘組織「成功高中校園網路策進會」 (CKSHCNCA),一直沒脫離電資領域。 那時幾乎天天中午都在玩 FreeBSD (打混的時候其實都在玩 BBS XD),也是從那個時候開始接觸了 windows 以外的作業系統,來到另一個世界。

真正開始寫網頁系統,反而是在大學時期學 PHP、ASP.NET C# WebForm 等等,也靠寫網頁賺了一點錢,當然畢業後也就繼續相關的工作。


一直以來都是做前端工作的嗎

在我剛畢業出來工作的時候,那時業界根本沒有像現在這樣分什麼前端後端的,工作對外都是戲稱「寫網頁的」。 在成為專職的前端工程師以前,早期都是以 ASP、PHP 等後端語言為我工作上的主要技能。

第一份工作是網站開發,當年任職的是人數不多的小公司,沒有細分前後端的編制,所以所有東西都得一條龍自己硬上。 那時候所謂的網頁開發,也就只是寫 HTML 標籤,CSS 還不太會,反正 table 排版無敵,要改顏色、字型就加 font 屬性... JavaScript ? 喔,那是拿來寫表單驗証、浮動廣告的,網路上範例抄一下頂多加個 alert 就很迷人了。

什麼 JavaScript 啊,CSS 的也是從出來工作之後才自己惡補,也差不多是從那時候才開始接觸 jQuery、Dojo 這樣的前端函式庫工具,距離現在應該也快十年了。

真正知道「前端工程」這個詞,其實是在 2010 年的事了。

時間來到了 2010 年的 OSDC 前夕。

得知 Douglas Crockford (JavaScript: The Good Parts 作者,JSON 的老爸) 受邀來台演講,透過關係知道他在 Yahoo 有內部分享,於是就很厚臉皮地當了一日訪客進去聽演講,順便參觀當時還在古亭的 Yahoo 奇摩。 坦白說,當天印象讓我最深刻的其實不是 Douglas 的演講內容。

除了整場分享以全英語交談,能聽懂的部分有限是原因之一以外,讓我最驚訝的是,原來在網頁開發中,前端工程的領域比我原先的認知還要來得複雜許多。而當時 Yahoo 奇摩甚至有數十位工程師專門負責前端的部分。 當下聽著他們的熱烈討論,除了顛覆我原本對網頁開發的錯誤觀念外,更引爆了我潛藏已久的前端魂,原來網頁前端技術是如此深奧且迷人,然後就此展開了我的大前端之路... XD

不愧人家說天下武功出少林,天下前端出雅虎。同時也差不多是從那開始才積極參加社群,技能點開始往前端的方向走去。


工作職涯方向

工程師的職涯方向可以有很多不同的發展,不管是走管理的、往技術繼續鑽研的都可以是目標,甚至有技術背景的 PM 也都會是很搶手的選項。 隨著工作經驗的成長,看技術的眼光也會有所不同。 從早期只要完成交辦工作為主要目標,到幾年後,你也許會經歷到需要在各種技術中做選擇,這時候你會有開始有權力可以挑選你想要的工具、技術了,但記得權力伴隨著責任,挑選技術的時候,你要考慮到產品與技術是否適合的場景、學習的成本、維護的成本等等。 甚至是產品的整體系統架構,你所選擇的技術棧 (technology stack) 是不是可以再優化,然後增加產品的轉換率等等的。

這些其實對工程師來說都是很棒的挑戰,也是未來可以思考的方向。


有沒有想要跟後輩說什麼,讓他們少走一些冤枉路

看到這個問題,如果是年輕一輩的朋友,其實我認為沒有冤枉路,反而很贊成多繞點路,未來的選擇更多。 很多人其實不知道自己適合什麼,也許他看到前端產業好像很夯,就一窩蜂想進入這個行業,但搞不好更適合後端也不一定。 從另一個角度來看,有了後端經驗的前端工程師,比起設計轉職的前端,更能明白後端的困境,以及相同的溝通水準,不會有各說各話的感覺。

我認為保持開放的心,有時候多繞一下對人生職涯來說,也許還反而是件好事。

但如果有心往前端領域走的話,好好把 HTML / CSS / JavaScript 的基本功練好不會吃虧的。 即使是 oo.js / xx.js 它的本質也還是 JavaScript 啊,把基本功練好,未來遇到新技術新工具的時候,至少你不會慌。


避免惰性的好方法

TDD: Talk-Driven Development

我認為人都有惰性,我也有 XD

今天當你剛學會一門新技術,想辦法練到可以去跟別人分享甚至協助解決他人的問題的程度時候,你就可以算是掌握了這門技術。 最好的方式就是去投稿吧,去分享吧,屢試不爽。 而且有了時間的死線之後,你就會開始逼自己去整理,去內化這些資訊,好處多多。

而且不要怕講錯,講錯頂多被人糾正,但你卻因此得到了正確的資訊,學到東西就是你的。


對於畢業新鮮人/轉換跑道有沒有什麼建議

履歷的累積最重要,剛畢業的時候你還能靠學歷,但過幾年之後根本不會有人在意你是哪個學校畢業的。 去找個你覺得可以學到東西的地方,或是有機會碰到新技術的地方,然後好好累積工作經歷。

有個自我檢視的重點是,當你今天在這份工作無法為你的履歷多寫些什麼的時候,就是可以考慮轉職的時候了。 當你繼續在某個地方工作,改變的只是工作的年份,而不是寫下你參與了某某專案,或是導入了什麼技術、為了公司完成了什麼任務的時候,再繼續待下去都是浪費人生。 因為這份工作的經歷無法為你的未來加分,只會繼續消耗人生,這很現實。


跟 JSDC 之間淵源

一切都是為了「搶票」。 XD 印象還很清楚,當年 2012 首屆 JSDC 票價還很便宜的時候,那時候的研討會幾乎是一開放報名就會秒殺的程度。 主辦單位為了鼓勵大家投稿,就說「投稿者無論有無選上,都有優先購票權」

然後我就投稿了。然後我就上了。 不僅不用搶票,連買票都可以省下來。

怎麼都想不到人生中的第一場上台分享就在中研院,2012 年。 緊張到靠北。

但也因此認識了很多社群前輩,以及 TDD (Talk-Driven Development) 學習法,可以說是利大於弊,哈。


為什麼想要講今年這個主題

終於回到 JSDC 2017 主題本身了,經過上面的訪談其實可以知道,在這短短幾年內,前端技術領域的發展可以說是一日千里, 而我最近持續在推廣的 VueJS 在這一兩年也有著持續地成長。

凡是存在必有它的意義。 從早期的 jQuery 到後來 Backbone、Angular JS (ng1)、React、 ng2 到我將為各位分享的 VueJS 等工具,其實可以發現某個語言、工具為什麼會受歡迎,很大的原因是它在那個時間點,解決了大多數人遇到的問題,或是在這個領域帶來了什麼新的概念,新的觀點,讓更多人得到啟發。

回到主題。 VueJS 從早期發展至今,也經歷多許多變革與更新。這次我在 JSDC 的分享,主要會由 VueJS 出發,除了針對 VueJS 新特性的介紹外,也簡單分析現代前端框架與前端開發生態圈的變化與演進。 :)

最後再次感謝 JSDC 團隊邀請,讓我有機會擔任一日 seafood 網紅,感謝今天活動主持人 Ali,果然有正妹加持就是收視保證,也感謝只有聲音沒有人影的藏鏡人 Caesar 協助。

最後,也歡迎對 JavaScript 領域的朋友可以持續關注 JSDC 的各項活動,沒報名的朋友現在還來得及報名歐 XD

傳送門: https://jsdc-tw.kktix.cc/events/jsdc2017

期待今年的 JSDC 可以與各位朋友、前輩有交流的機會囉,我們 JSDC 見 :)