一個 32 歲「老」碼農的覆盤:初出茅廬

語言: CN / TW / HK

相信你看到標題時已經想到這是述說自己職業經歷並加以總結的文章——沒錯,正如你所想的那樣!

這是個文章系列,內容涵蓋工作經歷、工作風格、職業願景等部分。

寫這個系列的目的,主要有三:儘可能完整地覆盤下迄今為止的職業經歷,看看自己都取得了什麼成果,還有哪些不足需要改進;供同行做個參考對比,希望我身上不好的地方能夠避免,好的地方可以學習;想讓有可能跟我合作的人對我有所瞭解,好評判是否是一個可以合作的物件,節省一些打聽試探的時間,提高效率。

在之前也寫過職業或人生覆盤類的文章,如 2016 年的《一個前端的職業軌跡》和 2018 年的《上半生,息止安所。》。它們的內容與本文互為補充,都看過之後會對我的經歷與想法瞭解得更加全面些。

先說一部分結論——每個人的經歷也許會相似,但絕不會相同,無論成敗都是自己的,「成功」是可以跟他人分享的,但「失敗」只能自己含淚吞下;一個人的能力大小,與「時間」沒有必然關係,比如「年齡」、「工作經驗」,真正的影響因素是經歷的「事情」以及相關的「思考」,其實就是「知識」與「智慧」;「老」是外界根據年齡對我的刻板印象,我覺得自己還很「年輕」。

看了下簡歷,來杭州之後目前為止已經服務過 5 家公司,算上來杭之前的話就是 6 家,一直做前端開發相關工作。雖然每段經歷中都可能會有不如意的地方,但我還是對它們心存感激,因為多少都讓我有所成長,成為了「我」的一部分。

根據這幾段工作經歷在我職業生涯中所起到的作用,將其等分為三個階段,本文是其中的第一階段。

無名作坊

由於之前寫的文章中介紹過在這家公司的大體經歷,所以我直接引用過來——

通過表哥的介紹,我去了他同學所在的公司工作。這是一份真真正正與前端開發有關的工作,正式開始了我的職業生涯。

要做前端開發,HTML、CSS 和 JS 是必會的三個技能。雖說不是爐火純青,但在之前自己折騰部落格時已經給 HTML 與 CSS 加了很多技能點,可 JS 我是一點兒都不會。為了能夠順利通過面試,前幾天到書店買了兩本 JS 相關的書惡補:一本 JS 基礎的,一本 jQuery 的。

面試時我很是緊張,回答問題磕磕巴巴吞吞吐吐的,都急得出了一身汗……本來已經不抱期望了,可沒想到竟然過了!應該是因為我是被介紹來的,並且那裡是間小作坊。

當時這家公司在做的是一個自助建站平臺。可能是看我沒有什麼複雜 web 應用的開發經驗,剛去時是讓我做測試相關工作。做了沒一個月,實在是無法繼續忍受做這種沒有一點興趣的事情,於是找老闆商量讓我做本職工作。

雖然我如願開始做前端開發相關的工作了,但還是沒分一些複雜點的功能給我,都是些沒啥挑戰性的邊邊角角。

在那裡工作還沒到一年時,我辭職了。原因無外乎那麼兩個:錢給不到位;成長空間小。

說起來,至今為止我有三段工作經歷與「視覺化搭建」多多少少沾了邊,這家算是第一家。因為當時我是個剛入行的小白,對這類系統的價值和意義完全不懂……

記得這家公司真正的老闆應該是個朝鮮族人,在日本有一家公司,而我上面所說的「老闆」實際是我在的公司的負責人;我所在的公司主要業務就是給那家在日本的公司做東西,有時也會接點別的活。

人員構成除了「老闆」之外,有日語翻譯、財務、美工、後端開發、測試各一名,算上我前端開發共三名。「老闆」也是寫後端程式碼,所以總共兩名後端開發。前端用 jQuery,後端用 .NET。

這裡的開發方式有點奇特,記得好像是沒有用程式碼版本管理工具,而是通過遠端桌面還是什麼登陸到 Windows Server 上,具體記不太清了。

由於不分派給我複雜點、有挑戰些的功能,完成後總是還有些剩餘時間,我就利用那些時間去網上繼續學習 HTML、CSS 和 JS,然後拿自己的部落格練手。

當時網路上的資源豐富程度與現在完全沒法比,記憶中就是去 指令碼之家藍色理想CSS森林張鑫旭的部落格 等地方;再不就是在 CSS、JS 的 QQ 群裡潛水,默默地看各路大神「華山論劍」。那時候連知乎都沒有(或許是我不知道?我好像是 2011 年左右註冊的),更別說思否(SegmentFault)和掘金了。

知乎

在這家公司裡,大家之間基本沒有技術交流,並且實在是沒啥歷練,幹了幾個月我就跑路了……聽說那裡在我走之後沒多久就倒閉了……不算「老闆」,另外三個開發人員,一個去了北京,一個去了無錫,另一個轉行了。

回過頭來看,這家公司對我來說的意義,一是讓剛經歷糟糕境遇的我得到慰藉,二是使我初步瞭解了真正從事軟體開發的人的狀態是什麼樣和如何協作。

安恆資訊

2011 年的愚人節,我入職了一家安全領域的杭州公司,它的業務範圍包括 web 安全、應用安全、資料庫安全等,客戶群體是電信行業、政府機關等。瞭解的人可能會知道,2008 年北京奧運會、2016 年杭州 G20 峰會等重大活動中都有它的身影——安恆資訊。

這家公司的工作時間是早 8 點半到晚 5 點半,與在老家那個小作坊工作時每天 6 點左右就要起來相比好多了。巧的是,我剛體驗沒幾天 5 點半下班,就開始每天晚上 9、10 點鐘下班了,因為接了一箇中國移動的專案。

當時所在的專案組就我一個前端,是拿他們之前做過的一個專案讓我熟悉,並參考著做新的那個專案;一些功能都是跟我搭配的後端開發進行講解的,說起來他也應該算我上司。這個專案除了我們兩個,還有一個測試。

我們做的專案是一個 B/S 架構的 web 漏洞掃描應用,叫「 明鑑®WEB應用弱點掃描器 」,提供了 web 漏洞、網頁木馬及網頁篡改等弱點掃描模組,使使用者能夠全方位地實時檢測網站的安全情況。掃描結果中會展示出弱點名稱、等級、分類等資訊,還有詳細的修復建議幫助使用者避免再次出現相同漏洞。網站地址可以選擇所屬行業及分類等,使用者可以更加快速地管理及查詢網站地址。

明鑑®WEB應用弱點掃描器

在這個專案中,前端用 jQuery,後端是 Java,更底層的是另外一個組用 C++ 開發的漏洞掃描引擎。原來已經有 C/S 架構的版本,我們做的是 web 版的。具體長啥樣,以及互動是怎樣的,可以對照著那些安全衛士、防毒軟體進行腦補。

這裡的程式碼版本管理用的是 SVN,要提交程式碼好像還得跟管理員申請許可權,與 Git 相比真是難用得一批……之後工作的公司裡用的都是 Git,也許對程式碼版本管理工具的選擇是跟公司所處行業有關?

經過一個月左右的加班奮戰,終於熬過去了……在那之前一直不知道做這行會如此加班,給我上了深刻的一課。在那期間,精神一直緊繃著,生怕不能按時交付,心理壓力很大;還好結果還不錯,之後過了一段 5 點半正常下班的日子。雖然每天加班到很晚,但雙休還是保證了,對比現在杭州的大環境,也算還好了。

從入職起的半年左右時間裡,都是在做那個 web 應用弱點掃描器,只不過前一個月左右是為了中國移動那個專案而做,算是定製的;後來以那個版本為基礎改造成了比較通用的版本,並強化了一些功能,變得更穩定。

2011 年年末,為了防範快速發展的網際網路所帶來的新的安全威脅,公司決定開發新的產品—— 明鑑®網站安全監測平臺

這是一套軟、硬體一體化監測平臺,是「明鑑®WEB應用弱點掃描器」的升級版。採用遠端監測技術對 web 應用提供 7 × 24 小時實時安全監測服務。具有 web 漏洞、網頁木馬、網頁篡改、網站可用性及網頁關鍵字等監測模組。使用者通過 web 頁面進行新建、修改任務等操作,將資料傳到服務端之後,再將指令下發到底層引擎,從而進行對指定網站的週期性檢測。

由於這個專案是從零開始,並且缺少互動設計師,產品的原型設計就落到了我的肩上,讓我體驗了一次開發之外的角色,使我對生產流程中各個環節有了更深的瞭解。後來專案組又來了兩個 Java 開發,而前端依然是我一個……

記得大概是 2012 年年末,公司又接了中國移動的專案,我們也又開始了持續一個月左右的加班到晚上 9、10 點的日子。因為已經有過這種經歷,心態上相對來說好了些,畢竟人的適應能力是很強的。

然而,在驗收時中國移動的對接人總反覆——說有的功能做得不對,按照他們說的改了之後還說不對,反反覆覆不知改了多少遍,感覺就像是在故意找茬兒一樣。本來每天加班趕工心理壓力就大,再加上客戶像是在玩兒我們一樣,心態有些崩了。可能是工作太過勞累及心情問題,那段時間胸部有點痛,就跟專案組的負責人開玩笑似地說:「我這算工傷嗎?」

在這家公司雖然比上家做了很多事情,但也沒啥具有挑戰性的;再加上公司的性質,長時間集中式高強度地加班與那種難搞的客戶,我頂不住了;另外,雖說算上別的專案組的前端總共有 5 人左右,但除了在群裡偶爾說說話,也沒啥交流,基本沒有分享和培訓。最終,在 2013 年工作快兩年的時候,我撤了。

在這裡工作期間,唯一稍微有那麼一丟丟挑戰的,就是檢視監測資料報表時如何傳參的問題,這還屬於我自己給自己找事兒幹——

在工作的開發過程中有個檢視報表的需求——從某個頁面點選按鈕開啟報表頁面(該頁面為新建視窗)。進入報表頁面的入口不是固定的頁面,也不是固定的按鈕,因此不同種類的報表傳遞的引數不同,並且各組引數之間沒什麼共同性。原本的實現方式是通過 URL 的 queryString 將引數傳遞到報表頁面,正如前面所說, 不同種類的報表傳遞的引數不同 ,於是報表頁面就會出現以下一些問題:

  • URL 過長,看起來很不美觀;
  • 需要對 queryString 進行解析與判斷來判別是什麼型別的報表;
  • 如果未來多加一些型別的報表的話,判斷也會隨之增多,這樣不僅程式碼量增加,維護起來也有點困難,還影響效能;
  • 安全性欠佳,通過 queryString 找到規律的話,通過瀏覽器位址列隨便地輸入一個符合規律的 URL 就能獲得想要看的資料。

鑑於以上幾點,我利用父子頁面能夠互相訪問對方 window 物件的特性,想了一個「 頁面間隱式傳遞引數 」的方式。

安恆帶給我的成長是:讓我體會到了什麼叫做「工作壓力」,鍛鍊了應對高強度加班時的心理素質;增加了除了測試、開發之外的工種體驗;使我 jQuery 用得很熟練了。

說實在的,回過頭來看這家公司福利方面還是可以的:五險一金、法定年假、每年體檢、年節禮品、週年旅遊、部門活動、雙休保障等。

參加的第一次年會上,被評為「優秀新人員工」,得到一個獎盃(實際是一個好像是銅做的圓盤)和一塊 Swatch 手錶,所在團隊獲得專案獎。總裁 Frank 在講話時還很激動地說:「我們要有自己的寫字樓!」過了幾年,真的實現了!

安恆大樓

可能是由於總裁是美國海歸,公司裡的每個人入職都要取個英文名字,有時同事之間就是用英文名來稱呼。我的當然是跟在 TwitterGitHub 等外國網站上一樣,叫「Ourai」。

我現在才突然意識到,職業生涯中的前兩家公司可以說都完全是專案交付型(不等於外包)的!這種型別的公司最大的特點就是,deadline 基本是死的,不能延後的。做專案時無論如何都要盡全力嚴防死守,得在 deadline 之前順利交付完成。

由於這種公司是靠不斷接專案來養活的,所以如果沒啥專案接的話,員工是輕鬆了,但公司就要掛了;若是專案接到手軟,公司就活得滋潤了,可員工就要忙得不可開交,基本天天加班,鴨梨山大。

忽然想到曾經誰問過我一個問題:「你是願意做專案?還是願意做產品?」——哦~原來如此。

總結

這個階段,是我開始瞭解「前端工程師」是什麼以及行業狀態的階段。由於公司業務單調,或者沒被分配複雜需求的原因,讓我覺得這兩家公司所做的事情都沒啥挑戰,並且同事之間沒什麼技術交流,讓自己成長受限。

非工作的業餘時間主要用來做三件事:在網上找技術學習資料,看看知乎上的技術問題,利用自己的部落格來練練手;去日語學校跟外教學習,有時課程安排在工作日,就得下班直接趕過去;看看動漫,玩玩遊戲。

這段期間還參加了一些線下活動,有第六屆、第七屆 D2 論壇,還有中國國際動漫節與同人展會。