轉行程式設計師深漂的這三年 #4

營養磨牙餅發表於2019-02-28

轉載至我的個人部落格:LOVCHUN.COM

我對程式設計很感興趣,想當一名程式設計師。

每個人可能會有很多興趣:音樂、美食、遊戲、程式設計等等,這些興趣都可以指向某個行業,為什麼最後你要選“程式設計”這個興趣?程式設計並沒有想象中的那麼酷,大概在你工作一兩年,做過數個專案後,你會開始覺得它和傳統行業也有很多共同點:若你專職於後端,業務上重複的增刪改查;若你專職於前端,業務的互動邏輯、各種 UI 的實現、各大 PC 瀏覽器或移動端瀏覽器等相容問題,這些都會是你長期的日常開發工作。

溝通方面,若你在一家小公司並且開發自己公司的產品,可能老闆一句話就能定下需求,如果老闆不太專注業務實現的方式,只關心業務實現的結果,你可以很容易就快速完成一個功能,然後上線;若你在一家大公司,有比較完備的 UI、產品等崗位的同事,一個功能需求,甚至是一個頁面上的文案可能就會磨蹭許久,最終才能上線。要是這家公司的開發流程不嚴格,可能你還在寫某個功能,產品又想把這個功能再變個樣子,你會來來回回反覆修改,一個原本兩三天就能結束的功能,可能需要幾倍的時間來完成。

可以參閱《人月神話》這本書,裡面提及了一些對軟體開發過程的幾個重要關鍵點,見解很獨到,是軟體工程的經典著作。

我今年 XX 歲了,轉行算遲嘛?

每次看到類似這種提問,都非常慶幸自己在 2014 年作出轉行的決定!在《轉行程式設計師深漂的這三年 #3》中,我敘述了自己在 2015 年,如何拿著兩個靜態頁面 DEMO,投簡歷,就能收到諸多面試邀請,並一步步找到工作的過程。試想一下,如果我不是在 2015 找工作,而是在 2017 年呢!我想,應該不會收到面試邀請吧?

2015 年,在招聘的崗位職責上:熟悉 CSS 預處理語言(LESS、SASS等)之一、熟悉 MVVM(React、Angular、Vue 等)框架之一、熟悉常用自動化工具(Webpack、Gulp 等)之一、有移動端網頁及 Hybrid App 經驗優先、熟悉 Node.js 優先等這類的就職要求很少見,有的甚至沒有,大部分還是 jQuery、Require.js、Backbone.js,常見的還是 PC 端上的 WEB 開發。

而現在呢?微信公眾號、Hybrid App,移動端上的瀏覽器、諸多的 CSS 框架、CSS3、HTML5、ESC6、版本控制工具等等,2015 – 2017,就這短短兩年,衍生出許多新的工具、框架、開發模式等等,每年的崗位需求也會和這些新技術牢牢匹配。IT 這一行,不論哪種崗位,哪種語言,技術棧每年都會發生日新月異的變化。

你每晚一年開始,便需要多學習和了解這一年的新事務,才能跟上當年的腳步!

工具是為了提高開發效率,不要過於依賴它!

就拿 CSS 還說,現在有很多框架,你只需要使用它們,照著官方文件就能輕鬆寫出響應式強,相容性好的 Web App,但是框架、工具等的出現是為了提高開發效率,如果你 CSS 還沒有熟練,不知道 float 怎麼用,不清楚 position 的概念,不明白 display 幾種佈局的方式,過於依賴它們,你可能做完一整個專案,CSS 熟練度提升為零。

網路上經常會看見一些新人的提問,大部分會類似“這個框架/工具沒有實現這個功能,我該怎麼實現”?

假如現在需要讓某張圖片自適應,等比縮放以匹配不同的客戶端,依賴 Bootstrap ,可能只需要在標籤上加一個類名, “class=img-responsive”,那不用 Bootstrap 呢? 假如現在還需要一個自定義的模態框,你真的有了解過一個帶遮罩模態框的 HTML 結構嗎?遮罩層、內容層的 z-index 又該怎樣定義?遮罩層又怎樣才能撐滿整個視口?內容層又如何相對遮罩層居中?

工具會過時,框架也會被替代,熟練你的基本工,知其然而知其所以然,才能在下一個新框架、新工具出來時,快速熟悉它們,跟上當前的節奏。

每天都是重複的增刪改查,都是重複的互動編碼,我該怎麼提升?

可能一兩年,或者做多幾個專案後,你會慢慢覺得工作很枯燥。是啊,每天都在重複的寫著互動、增刪改查等等,除了更加熟悉框架、介面,編碼更快,Debug 更準,好像沒有什麼其他提升,我該怎麼辦?你所寫的業務,它們都是你的經驗,都是你的提升!

有一段時間,我在做微信商城相關的專案,每天反覆寫著增刪改查的業務邏輯:獲取 OPENID,查出商品資料,渲染商品詳情檢視,使用者點選購買,服務端校驗金額,喚起微信支付,支付成功,服務端查詢訂單支付狀態,更新訂單表狀態等等。為什麼要在最開始獲取 OPENID?為什麼要在服務端校驗金額?為什麼微信 JSSDK 返回支付成功,還需要服務端去查詢?為什麼一個“使用者下單”流程要分解成這麼多步驟?這些就是業務!

和傳統行業一樣,一個服裝廠,有專職生產衣服的車工(開發),也有專職設計衣服樣板的師傅(架構)。那些師傅之所以可以做樣板,不就是因為他們對整個衣服的製作流程(業務)熟悉嗎?他們知道如何把衣服切分成不同部位,不同碼數對應不同大小,車工小組便可更好的分工,更高效的完成一件衣服的製作。

當你迷茫,不知道怎麼提升時,沉澱一下自己在當前公司所寫過的業務,假如你和我一樣做過一段時間商城相關專案:

一個最基礎的商城,需要哪些表?如何處理檔案上傳?涉及到金額,為什麼欄位型別要用 decimal ?為什麼微信支付 API 裡的金額是 int,單位是分,而不是元?商品多規格,多庫存怎麼處理,等等… …

程式碼量可以提升編碼的效率,業務的積累才是你提升的成果。

由量變到質變。

我記得第一次開始寫 Vuejs 的時候,難到我的並不是 Vuejs 的 API 或者一些概念,而是 Webpack,它配置非常靈活,還有豐富的 Plugins、Loaders 等等,我始終不能很好的理解以及運用它。大部分時候,我都是用 vue-cli 去直接生成一個專案,於是我每天都會花幾個小時,搭配看 Webpack 官方文件,去琢磨 vue-cli 所生成專案的目錄結構、configs 檔案等等,然後自己一步一步,從 npm init 開始,從 webpack-simple 開始,從頭搭建一個專案,直到一兩個月的某一天,我突然就會了。

事實上,學習到掌握一門新的技術,我一直認為自己的學習能力是很普通的,我掌握它們的唯一方法就是反覆去嘗試搭建,反覆去嘗試使用,反覆看文件。

這 3 年的時光,我有很多類似這種學習 Webpack 的經歷,如 Laravel、Vue、Django、React,可能 1 個月,也可能是 3 個月,甚至更久,對某個工具、框架無法理解,突然的某一天,就頓悟了。

“讀書百遍,其義自見”,我想,應該就是這個道理吧。反覆去琢磨一件事物,其中你免不了去查閱各種資料,日積月累,由量變到質變。當你下定決心,準備掌握一門新技術的時候,做好“準備”,做好“反覆”,等待“由量變到質變”的那一天,享受“頓悟”的那一刻!

保持住你的激情!

如果你準備轉行 IT,你必須面對一個事實,它並不是一個越老越吃香的行業,反而是一個在不斷前進,不斷更新的行業。你需要長期保持自己對新事物的激情、學習的激情,否則就會失去你的競爭力。

我的 2015 – 2017

第一個 100+ Star

相關文章