這個部落格在我的定位中是純技術取向,但這篇應該會是唯一一篇非關技術的文章。

文長。

我在確定得到新工作的那一天,在ptt soft_job以及web_design版發表了那段時間的面試心得,內容是有關前端工程師的工作面試經歷。(文章在http://www.ptt.cc/bbs/Soft_Job/M.1335873183.A.F23.html)因為那篇文章我收到很多回應,也很感謝所有來信的人的鼓勵。就在明天我將要離開現在的公司然後到新公司報到,我想在這邊簡單寫下一個平凡的網頁工程師一路走來的心路歷程。一些細碎片段構成的過往。

0

我是一個普通的大學畢業生,大學混了六年才畢業。相當然爾在就業市場上只能任人魚肉,剛退伍時進入了一間要做嵌入式系統的公司。而我幾乎什麼也不會,就只有一個在學歷上跌倒的經驗而已。

1

如前文所講,沒寫過網頁之前我很看不起寫網頁的人。現在呢?真的覺得WEB很有意思。技術發展很快又很廣,隨便找一項鑽研都能玩很久。每天睜開眼都有新的東西產生。你永遠不會覺得無聊

大家都知道新人就是要打雜,而寫網頁這件事本身在某些公司就是一種雜務。不幸的是在公司某些部門內,網頁都會丟給新人負責,新人來了再給新人。裡面充滿着陳舊不堪參疵不齊的程式碼,那個年代jQuery剛崛起,會看到js檔內有部分jQuery寫法,有部分是javascript原生寫法。而我第一個案子就是接手這樣的網頁開發新功能。結束之後仍然不知道自己會了什麼。

第二個案子是作一個很龐大的web application,而這個案子一拖就是快兩年,也是我初嘗開發網頁快樂與痛苦的來源。

2

題外話,你們知道嗎,IPAD上有一款app叫zite,它會根據你看文章的喜好來決定要給你什麼material。唯一的缺點是不支援中文,文章source都是英文,不過英文資源本來就多於中文。所以當你看完一篇在寫css hack的文章,旁邊就有選項問你喜不喜歡,順便列出跟css相關的tag給你toggle。你會收到越來越多你想要的相關知識。我有一陣子睡前會躺在床上抱著ipad看新技術文章看到睡著。

即使是最漫長的那段日子也是一樣。

3

我認為部落格的蓬勃發展很大的促進了技術分享這件事。當你遇到問題的時候你會google,而解決你的問題的通常是來自某個熱血的開發者的部落格的某篇獨門心得。我一開始只把這些部落格當成解決問題的手段,平常沒事不會去看。

但後來有天我突然覺得沒有他們日子會很難過,而這時候我也確定自己想走web這一塊。我開始注意每個web developer的部落格,其中提到非技術的部分。很大一部分在說自己對於這一塊的熱情與期望。
檯面上的技術心得文,檯面下往往是要十倍百倍於文字量的熱情支撐。

比如熱血的前Y!前端工程師Josephj(我從他的部落格知道F2E這個字的意義。)

比如版上很熱心的TonyQ大大在版上的每篇熱心文章。

比如我剛進前公司時發現公司裡面有個好人前輩有在經營部落格分享自己在open source的知識跟經驗,那時候就很想認識他但覺得自己不是個咖所以沒膽去搭訕認識。

比如這個中國人寫的部落格:酷殼,作者是Amazon中國研發經理,
裡面的文章不一定全都跟Web相關,我第一次讀是從這篇開始:哥是玩程序的。但後來我發現更有價值的東西不只是javascript相關的有趣文章,而是他的工作思想,是他提倡將工作提升到事業層次這個想法,
如:程序員因為女孩而美麗!做個環保主義的程序員三個事與三個問題

然後我也開始自己寫部落格,是因為有天看到某篇文章說,現在工程師面試需要的是:自己經營的技術部落格,github上的帳號等等。然後我就這麼做了,申請github帳號,先用自己的NAS架wordpress,後來覺得很難用,看到XDite等前輩在推octopress,剛好github也可以玩,就轉到github pages發展了。

以上這些跟我的工作其實都沒有直接關係,都是利用下班的空閒時間做的。

4

有人問我這是什麼?最後一個下班者拿走鑰匙的簽名。被跳過的平常日期是:沒回家。

然後就是那個一直被傳頌的故事。

我不知道是不是每一間公司都有保全系統。我們公司跟中X保全簽約,每一天必須關門的時間是半夜12點。這半年來我每一天幾乎都超過12點下班,今年初變本加厲到凌晨3,4,5,6,7,8點,然後隔天依然九點半上班。我每天晚上都會打電話給中x保全說我要加班,請延長保全時間。到後來他們都知道了,只要我們公司過了半夜兩點還沒設定保全,他們會直接打電話到我私人手機問我在不在公司。

而我通常都在。

嗯,我知道你要問為什麼?

前公司並不是很重視WEB技術,但這個專案的規格跟複雜度遠遠超出他們的輕蔑。對當時的我來說,我覺得以自己當時的知識完全不足以開發出那個大型Web Application,但也只能硬著頭皮幹。隨著專案時間越拉越長,無止盡的會議,UI上的功能需求越改越多,越來越複雜,到我離開的時候整個網站介面翻掉了七次之多。就像OSDC中那個需求變更的lighting talk講的好,權威人士握有對你的東西的最高指導權。而你毫無反應,只是個底層的前端工程師。連Interface Designer都可以決定你的生死(畫一個很難實現的按鈕/對話框/視窗你就準備寫CSS寫到爽了)。到最後其實案子已經有點失控,所以我就跳出來說:「好吧,如果沒人想寫下並定好這些規格那我來寫。」

這是去年十月的事情,而,這是地獄的開端。

每天白天跟作風非常強勢的QA用電話討論UI spec細節,晚上利用空檔寫functional spec,一邊改網頁到符合spec。這段時間平均下班時間是11點~1點,直到某天公司總務發群體信說中X保全抱怨我們超過時間,我才知道原來要加班要先打電話給保全。寫了兩個月終於完成spec第一版,圖文並茂六萬字word。但是根本沒有時間去補足那千餘個功能,因為只有我一個人在做WEB。然後有趣的是上頭很急著進測,他們認為spec寫完就是完成了一切,當然不是。進測結果很糟糕,大部分是未完成功能與ui文字拼寫等UI bug。

我在這段期間還一邊接觸了一些新的技術,因為我想利用MVC框架來解決那些我在這個web application上遇到的種種奇特困難。案子被QA退回後,上頭重新檢討認為是spec不夠詳細嚴謹,於是兩位主管級跳下來接手spec重寫。我自己利用這段時間拼命研究各種網路上的資源。

5

我選擇的技術叫JavascriptMVC,是一個total solution client side MVC framework。與它相似的東西是Backbone.js,而最近這段期間我也體悟到其實backbone比較多人在用。也很多人問我為什麼當時不用backbone? 我的答案很簡單,當時花了兩天熬夜做不出一個簡單的起始範例,backbone的文件實在令我費解,就放棄了,

我並沒有太多時間。

當然不只backbone跟jmvc,為了解決問題我也看了YUI, extJS, 甚至zk。我還花時間研究extJS的對話框是怎樣用div拼出來的,那噁心的東西。還有我順便買了一台Synology的NAS回家研究他們怎麼做出那麼漂亮的東西。

6

選定JMVC之後一切就順利了嘛?當然不是。這東西在台灣甚至大陸根本沒人在用,網路上清一色都是用backbone。連英文資源也不多。我遇到問題只能到官方forum用破爛英文問作者這功能是什麼?還被嫌棄過我寫的字句他看不懂:D

斷斷續續利用工作空檔時間看jmvc doc兩三個月之後我終於動手對那個改不動的噁心網頁做了refactor。整個砍掉重寫。這次花了三個月的時間寫了五萬行code。重點是,主管並不支持我做重構這件事。而我認為不重構的話某些該死的複雜功能根本無以實現。

我們的想法有衝突,而我只是個想把這件事情做好的死心眼的傢伙。我就在幾乎得不到任何support的情況下開始了進階版的地獄:平均下班時間延長到凌晨兩三點。有段時間每個禮拜會有一天通宵然後隔天不請假繼續上班。

支持我的信念只是相信自己辦的到。但,我曾有很多次在凌晨四五點回到家,洗澡的時候跌坐在地上任熱水沖淋,問自己「這一切到底有何意義?」即使是現在,我也不認為自己是因為那段時間的拼命而獲得一份好的工作,你知道的,努力跟回報從來都不是成正比。但當你真心愛某件事,過程才是重點。

7

  • 最痛苦的事情不是每天加班,而是你的主管在這段期間不但沒幫你,還處於某種狀況之下導致常常對自己發動言語精神攻擊。
  • 畢竟我只是個人微言輕的小工程師,沒有拿出成果之前,一切都是白搭,不管你多有熱情,對其他人來說「做不到」他們要的東西,你講話就不會有分量。
  • 「孤立無援」是一句成語,可以用來造句。對我來說是殘酷的現實。因為最後實做的人是你,不管你有什麼困難,都是你家的事。不管你rhino debugger多難用Makefile多難寫dir-based namespace pattern多難改resize event delegation在IE8出了什麼問題收不到對話框多難刻用js模擬dbus請求多難搞同時採用不同來源data model並行多難做多重ActiveX callback多難整按鈕不同尺寸css sprite多難寫,別人只看得到UI最後的模樣,你做不出來就是你無能,你說做得出來就是「不管我壓什麼時間都做得出來」。

    「你到底有沒有珍惜這份工作?」某天晚上七點主管把我叫進會議室檢討。他不滿意我的進度,給了我很爛的評價。
    你知道眼前坐在椅子上不發一語的我,昨天趕你要的東西沒睡覺嗎?
    我就算不是你最強的員工,也是你最拼命的員工,你該珍惜的不是別人給你的案子的評價,而是身為你員工的我。

8

然後我趕上了不可能的deadline,終於覺得累了, release的隔天我便打開104更新履歷然後放著。

9

原本只是想換一間重視技術也重視web的公司待,沒有預期自己一定會去哪。收到Mozilla的面試邀約,我很驚訝他們有要找Frontend,當然被他們錄取我更suprise。直到現在我依然不得不壓抑自己內心的激動,畢竟,那可是Mozilla。身為一個F2E Newbie,竟然可以在那邊跟全世界的高手們cowork,並且有機會見到一些此領域的大師級人物(jQuery的創始者John Resig曾經待過Mozilla)。

而Mozilla本身想要做某些事情來改變網際網路的未來讓網路變得更好,而,改變網路就幾乎等於著手改變這個世界的未來。

有幸參與這個過程,怎能叫人不興奮?

但,你知道的,激情並不是能永久持續的狀態。我現在必須努力把這份激動壓抑下來,然後希望自己永遠莫忘初衷。


以上是一個剛起步的小小前端工程師的一段經歷,希望對讀到這篇文章的人有幫助。

Alive Kuo@20120530

Q&A

  1. 有人問第4段的那張手寫日期表是什麼?最後一個下班者拿走公司鑰匙的簽名。被我懶得寫跳過的平常日期是:沒回家。假日來公司:不會記。

Comments

comments powered by Disqus