1. 程式人生 > >工作五年總結——以及兩年前曾提出問題的回答

工作五年總結——以及兩年前曾提出問題的回答

前言

好久沒來部落格園了,上次來部落格園還是寫這篇帖子:

那還是兩年前,當時工作經驗三年,處於人生迷茫期,人生有過多次抉擇,到如今,工作五年,距離當時已然兩載。

如今再度翻開之前部落格,體味到當時那懵懂、衝動、浮躁和迷茫的自己,心裡不由有感而發。

兩年前最後的詢問是,路在何方?

這件事,在兩年後的今天,或許我能稍微解答。

先來說說最近這兩年近況。

一、關於工作方向

現如今是程式設計師,前端、移動端工程師,技術棧IONIC2、React、React Native。
對Node感興趣,私下裡面自學一點兒nodejs。

二、兩年心路歷程

當時我處於懵懂的狀態,從發表文章的時候17年初,到17年3月份,我當時的狀態並未有多大的提升。
還是懵懂和迷茫居多,當時寫完文章或許要下定決心搞點什麼,但卻在兩三個月間一直拖拖拉拉,並沒有太大的改觀。
所以,到了17年3月中旬的時候,我突然就意識到,我不能一直都以這種狀態度日,身為技術人,最關心的應該是提升。不管是經濟上的提升還是技術上的提升,都需要如此。

紛亂的技術已經在16年過了一個遍,我當時公司的環境也並不好,周圍的人都很浮躁,因為老闆就很浮躁,最後移動端技術也束之高閣,我卻突然鬆了一口氣。
搞技術雖然要走馬觀花,但卻有時候也需要直見本質,當時公司的環境已經阻礙了我的人生髮展,再待下去心態會出問題,信心也可能會受到影響。
當時公司有人工作5年以上,在一個水平很一般的公司工作如此長的時間,他已經很怕接觸外面的公司了,也不敢尋找新的工作機會,這件事讓我感觸很深,我聯想到當時的迷茫狀態,感覺在這樣的公司繼續下去也可能最終渾渾噩噩,遂決定離職。

三、是否改變

提出離職到辦理完離職手續,已經是5月份,在離職期間,我確定了下家,也就是我現在呆的公司。
當時面試的時候和公司技術官聊的問題涉及的技術問題並不太多,更多的是從我自身出發,我陳述了我想要的東西:
1、技術能力的提升=====前端技術棧
2、技術在公司不邊緣化=====不是可有可無
3、最好是公司核心產品=====產品受公司重視

技術官確保以上條件都滿足,並且熱情地邀請我來公司。我幾乎是沒做過多思考,當天就應下這份工作,等到離職手續辦完,第二個週一,我就來公司上班。
然後我才明白,為什麼公司對我說的技術要求都滿足。因為有下面兩點。
1、公司規劃的核心產品要完全重做,有第一版,但要廢棄,新技術開始第二版。
2、當前公司移動端做此技術的只有我一個。我將會從產品的從無到有,全流程開發參與。

這份工作是一個坑還是一個提升的機會呢?我初次知道的時候,是懵逼的,一時間翻轉不過來思想和邏輯。
因為曾經一直作為小弟,在某技術帶頭人的領導和指導下去研究去開發,或者是在成熟產品基礎上寫程式碼。完全從零開始負責一個專案,對我來說是個極大的挑戰。
怎麼突然間就要從小弟晉升到大佬?

所以,當時的決定就是,我要去找個新的工作,或者逼自己一把,將公司的產品接起來?

四、如何改變

我的決定是接起來!

第一,我已經工作三年,雖然研究過angularjs,並且從零開始做過移動端專案,但是卻也離不開領導的指點和指導,所以並不算真正的把控到產品的每個角落。不過已經有了一些技術的積累。這次從零開始,完全是對自己更高層次的考驗。
第二,移動端技術日新月異,新的技術對我有著極大的吸引,那就是在IONIC2和React上進行選型。

當時並未想要利用RN來做,因為還有一種想要基於全平臺都可用的想法,所以就是用Angular2或者React做,如果要打包成不同平臺,則需要更改少許程式碼便可。

公司當時的前端團隊(web)端已經著手開始利用react進行網頁開發,於是從公司技術棧的統一性考慮,我開始研究用react來寫移動端專案。
專案的web端初期進行的異常順利,web端後臺管理系統在任務管理的幫助下大家都完成的很快,但是移動端只有我在慢慢的從入門到開發,兩個月的時間,只作出了很粗糙的部分功能頁面。
web端5人團隊其實是從地方分公司來京支援,兩個月時間完成後端管理系統的開發之後,便離開了京城。
於是公司北京前端團隊再度剩下我一個,由於web端其實來支援做的只是後臺管理,那麼使用者端的功能其實一點兒也沒做,而我又是做的使用者端的移動App,所以他們的兩個月,也只是讓我對業務融會貫通而已。
不過所幸,業務的清晰明瞭,讓我不至於對產品做不下去,還是有許多的新的研究和實現要在接下來的研發工作中進行。

五、突破侷限

專案忽然間著急了。
作為創業公司,雖然公司有分公司,但是主分公司人加起來也是不到50人,公司也來京不久,專案要在10月份上線。
時間緊,任務忽然就重了,我初接觸react並且不是用RN來寫移動端,中間每個專案的功能可能都要去調研一下各種元件的優劣,甚至有的功能元件實現不了,還需要自己在js端寫元件自行實現。
面對各式各樣的需求自己重新開發新元件也大大的拖慢了開發節奏,按照我一個人這樣的節奏來,在10月鐵定是上不了線的。

於是,執著於追尋前端技術統一性的建議得到了商討,雖然說技術選型統一,以後再前端方面的工作可以給予很好的支援,人人可改Web或者移動端專案,但現在顯然短期內很難做到。
所以,為了快速的將產品做出,商討之後,還利用我已經具備的IONIC知識進行產品的技術變更。

IONIC1正是我給上個公司做App用的技術,因為從零開始過成熟些(賣得出去)的產品,所以對於技術變更也沒太大的抵觸,並且IONIC提供了各式各樣的元件,可以簡化我用react開發拼命尋找各種各樣元件的流程(當時react移動端框架是用的還不成熟的antdesign-mobile,現在看依舊是有些不成熟,螞蟻技術人似乎只是為了開發一個框架而開發,更多地關注還是在antdesignweb版)
如果公司的技術是用的IONIC1,那麼我來到公司緊鑼密鼓的用已經熟練掌握的技術做產品,其實成長性還是不夠的,那麼就遇到了一個問題,用IONIC1還是IONIC2。
也就是說,核心用Angularjs還是用Angular2.

公司很快意識到我一個移動端研發工程師的捉襟見肘之難,於是從分公司請來另一位hybrid研發工程師,想要在8-10這短短的兩個多月的時間將專案作出。
新來的工程師初步接觸hybrid開發的時候,便已經趕上了Angular2的打好年頭,所以他的技術方向肯定是IONIC2和Angular2。
於是我覺得技術提升的時候來了,遂和領導商定,要用IONIC2,這樣還可以對Angular2做一番研究。

其實IONIC專案已經儘量避免你去知道Angular,不過加上之前對angularjs的瞭解和對Angular2文件的瀏覽,讓我覺得從IONIC1到IONIC2並不是一個錯誤的決定。
並且我發現之前研究兩個月的react其實和Angular2大同小異,更別說聽小道訊息Angular2正是Google看到了React的實現重寫了Angular1,所以兩者都是ES6語法,從js端來說,除了jsx之外,幾乎是一套東西。

如此我用2代技術開發也能很快進入到角色,更別說新來的幫手是一名IONIC2的研發工程師。
我和幫手在一週的互相討論和研究中,我將專案中所涉及到的業務點和可能是技術難點的地方和他做了深入的探討。並且一週時間,他也將IONIC2技術大體的給我過了一遍,萬事俱備,只欠開搞!

開搞!
專案異常的順利,順利到讓人有些難以想象,IONIC2在開發效率上要比IONIC1有了一個質的提升,並且在效能上要較上一代IONIC1有了巨大的提升,雖然還比不上純RN專案,但是在手機端和Pad端逐漸配置走高的時代,這些都不是問題。
這個專案從零到有,從技術選型到技術變更,中間我都經歷了一小段時間的陣痛期,但是陣痛期過去,便是坦途。
由於業務吃透,技術確定,雙方都十分熟悉,兩個月的時間,專案也終於是成功上線,並且得到了不錯的反饋。公司和專案組都是鬆了一口氣,別的不說,我自己也感覺整體得到了提升,整個人感覺不一樣了。

支援的同事離開公司,專案後期的工作我來維護和開發,雖然再度移動端只剩下一人的情況下,但做維護來說也是遊刃有餘。更別說,專案還只是涉及到iPad端的實現,單專案維護對我來說不是問題,畢竟在上個公司就負責並且維護過一個手機端專案。
起初,對於沒有利用React來做專案或者用RN來做專案還會感覺有些遺憾,畢竟React概念大火特火,前端工程師不搞這個,貌似都不好意思說自己是前端。
不過等到專案完成,加上兩個月對於React的瞭解和作出一版粗糙產品涉及到的痛苦學習和實現流程,讓我並沒有感覺到太多失落。
並且我也明白了一個私人認為技術人看待問題的一個該有的態度:
技術並不重要,重要的是用技術去得到最優的實現。
在當時情況下,毫無疑問,作出一個合格線以上的產品才是第一需求。

六、一家之言

其實前端技術說到底還是js,不管是React、Angular、TypeScript還是CoffeeScript亦或者VUE,其實都是js。
在我理解下,為什麼會有這些新興的感覺和技術,就是因為前端的不確定性和開放性,以及大公司的競爭性。
毫無疑問,當Angularjs剛出道的時候,Facebook不可能沒紅過眼,總不能總讓Google搶佔技術領域,自己也要發聲才是,於是推出了react。
有了ionic,於是FB又推出了RN,沒辦法,就是剛。
從技術上我給予更優秀的實現來達到籠絡技術人的目的。

任何一種新技術的誕生和發展,都是因為有的人覺得現今的某種技術不酷,或者不欣賞,想要自己搞事情搞出來的。

前端更是如此。

所以,對於前端工程師來講,最本質要掌握的還是老三樣的發展,HTML、CSS、JS。其他的前端技術,其實都是在js的基礎上老瓶裝新舊而已,掌握了最根本的東西,不管技術如何變,始終都不會失去核心競爭力。

從我職業生涯到這個專案完畢,我幾乎是從桌面前端技術到移動端技術都接觸了一遍。
WinForm、WPF、jsp、React、Angular,私下裡對比React和Angular的時候我還研究了一下Vue,還真有吾等宅男閱片一千便啥都一樣的感覺。

從離職到新公司的發展,是在我期待之內,更別說接下來的一年,也就是從去年十月到如今十月,公司除了維護專案之外,也有野心在手機端佔領業務領域,我相繼又是參與到了Web端業務前端的React專案和手機端RN為主導的手機端專案的開發之中。
一年時間,已然是一個前端老鳥,雖然美感並不好,但是根據原型和產品設計做出來的東西也並不太差,React和RN也歸納成為了我技術棧的一部分,我私下裡也在看一些Node相關的知識,為公司的專案寫過幾個nodejs的小工具,前端技術算是開花結果。
前端技術,沒有優劣,不管是JQuery時代還是如今的React時代,其實對於當時的技術發展來說,都是有推動作用,都有優秀的東西在其中。就算現如今JQuery看起來並不流行,但是我們在生活中還是時常用到。
這些框架的設計給予了前端一種新的活力,大家更欣賞的還是日新月異的新型設計和實現所代表的思想變更,只有在前端思潮變更中,抓住前端變更的本質,並且保持對前端的熱情和持續學習的能力,那麼,你永遠都不會過時。

時至如今,再回到開頭的話題。
兩年前路在何方,到如今也不用多說,道路自然已經確定,沒有迴避做技術的現實,沒有做程式設計師死路一條的悲觀觀念,要有的,只是對自我的提升的一種追求。
路在何方?提升自己,豐富人生,便是一條永遠適用的康莊大道。

七、答案

那麼這兩年我明白了什麼?
新公司一年多,感觸頗深,但是卻沒有了兩年前的浮躁和不沉穩,也懂得活在當下,學在當下,並且計劃在當下的重要,迷茫和彷徨或許是必經的職場之路的一個階段,但是迷茫和彷徨之後,是為了讓我們變得更好。
如果你變得更差了?或許是迷茫之後的選擇並不正確,或許你依舊停留在不思進取的氛圍中,請逃避這樣的自己,積極的面對新的改變,或許才能真正的找到人生的真諦。

以上一家之言,是對兩年前那篇文章的解讀,如果能幫到您,感激不盡,如果有什麼有失偏駁和欠妥的地方,還請指出,探討交流您的看法。
總之,放棄傲慢和偏見、摒棄浮躁和恍惚、堅定信念和追求,奮鬥吧!