1. 程式人生 > >“寒冬”已至,如何砥礪前行?

“寒冬”已至,如何砥礪前行?

這篇文章寫於去年年底,為了參加公司內部的一個徵稿活動。原本只是想在部落格中做一個備份,並未想過發表,但是今年網際網路形式依舊嚴峻,再次爆發幾次大規模裁員潮。時隔一年,我決定把這篇文章分享出來幫助那些對前途感到迷茫的朋友。

夜已深,提交完最後一個 commit,終於可以安心睡下。

在獵頭的眼裡,我不是根正苗紅的程式設計師。何為根正苗紅?計算機專業畢業,從畢業起就從事特定方向的開發工作,這才是獵頭眼中的香餑餑。

我是設計出身,如果不說出來,幾乎沒有人知道我這段黑歷史。我是一氣之下逃離了設計行業,之後在徘徊和猶豫中選擇了前端。畢業之後做三維設計的那段歲月,可以用悲慘形容,每當和人提起,我總會有點自嘲的說“睡過凌晨一點的辦公室,吃過凌晨三點的便利店,做過凌晨五點的首班車”。但是回頭想想,我卻要感謝那不堪的經歷,讓我找到了適合自己的方向。

作為技術人員,我一直有個疑問,什麼是你引以為傲的資本?面對已經來臨的資本寒冬,應該何去何從?

大學期間,我每年都會給自己總結一個詞語。回首做技術的這幾年,我同樣給自己總結了幾個關鍵詞。希望大家可以從中受益。

選擇

在現在這個浮躁而又拜金的社會,我相信很多人做技術並非出於熱愛,只是被網際網路的高薪吸引,畢竟技術崗位非常枯燥,不僅要面對奇奇怪怪的需求,還要不停的充實自己避免被淘汰。所以想要吃好技術這碗飯並不容易。

雖然我在大學選擇了設計,但我不是一個感性的人,註定無法突破設計工作的瓶頸,所以從剛開始工作,我就對自己的職業發展感到迷茫。在做三維設計的過程中,我喜歡上了引數化設計,漸漸的找到了自信,最終促使我轉戰技術崗位,也算是從小學習理科的歸宿。我一直在思考,我喜歡什麼,我適合什麼,我應該從事什麼崗位。我的前同事東哥和我境遇相似,只是他比我畢業早了差不多十年,畢業之後讀了在職碩士,有近三年沒有休過週末,這一點我很佩服。

選擇的重要性不言而喻,如果方向錯了,再努力也是徒勞。回首走過的這幾年,我自認為我在關鍵的節點做出了還算正確的選擇。我身邊有很多對職業發展迷茫的朋友,並不是每個人都有那麼好的運氣和毅力,很多人依然是在抱怨中繼續做著不喜歡的工作。

在我後來做面試官的時候,我接觸過很多開發者。有自學轉行,也有培訓之後轉行,但是大多都是盲目選擇,並不知道自己真正適合什麼,所以工作幾年,依然沒有太多的亮點。

自律

自律對技術人員的成長很重要。每個技術人員都要知道在什麼時間該做什麼事情,該看書的時候看書,該放手的時候放手。正如前文提到的,當你選擇了技術行業,那麼毫無疑問你必須約束自己,我們的時間是有限的,所以不可能有太多的時間去打王者,或者去刷抖音。

前段時間,我的一個發小向我吐露心事,畢業兩年,依然渾渾噩噩,看不到未來,打算學習技術。我告訴他,先把基礎書籍刷一遍,如果能堅持看下去,那麼找一份技術相關的崗位並不難,如果看不進去,那還是算了吧,即使僥倖找到工作,天花板也是有限的。最近,我的這位發小告訴我他已經放棄了。

我一直覺得自己在大學並沒學多少東西,只是學會了忍耐,磨練了意志力。在無聊煩躁的時候可以看看書。

在學生時代,我強迫自己每個假期讀兩本名著以及堅持繪畫。現在,我強迫自己每月寫一篇文章或者翻譯一篇文章。

堅持

任何行業都必須堅持才會有所收穫,比如我們常常談論的三萬小時定律。然而技術人員應該堅持什麼?這取決於你的興趣。堅持寫部落格,堅持讀技術書籍,堅持做開源專案,堅持答疑解惑等等,可以堅持的東西很多,我們不知道結果如何,但過程本身就足以令人興奮。堅持的前提是自律,如果無法約束自己,堅持也無從談起。

剛做技術的時候,我也很迷茫,只是針對性的看一些教程,彌補自己的弱點。那時候我還不知道作為技術人員引以為傲的資本是什麼,如果只是按部就班的做業務,難免讓人感覺無聊。大學時,我也曾為夢想堅持過,可惜一切都成為泡影,於是我明白了夢想和現實的差別。

從我踏足技術崗之後,我開始寫部落格,主要記錄遇到的問題。我喜歡翻譯,中途加入了伯樂線上的翻譯組,這段經歷收穫很大。不得不說,作為技術人員,如果英語不好,技術積累將非常困難。我喜歡閱讀並翻譯 csstricks,scotchio 上的文章。至於為什麼喜歡翻譯,有兩方面原因吧:一方面,翻譯文章有利於提升自己的英語水平;另一方面,國外的技術文章質量很高,翻譯的同時可以學到很多新技術,國內很多優秀的博文也是基於國外文章翻譯而來。在積累的過程中,文章逐漸得到大家的認可,嚐到了一些甜頭,這也成為我前進的最大動力。

現在,我堅持做開源專案,從無所下手到給開源社群做貢獻需要不屑的努力和思考。作為前端工程師,選擇的方向有很多,可以從優化體驗入手,不經意之間可能就會誕生不錯的專案。現在,看到自己的小專案得到大家的認可和喜愛,內心多了一份責任感。

忘我

我不知道究竟什麼狀態才算忘我,或許我也沒有經歷過。忘我不是不吃不喝,而是對工作的熱愛,比如問題不解決就輾轉難眠。程式設計師被認為是遠離燈紅酒綠的工作狂,大多數時候都與孤獨為伴,從前年開始,我變得特別宅,幾乎放棄了社交和娛樂活動。

之前做開源專案的時候曾有過一段時間的瘋狂。因業務繁重,每晚差不多十點到家,為了能更快的完成專案的第一版,回家之後還要繼續工作,凌晨一兩點睡覺成為常態,那段時間真的是有點麻木,筋疲力盡。其實做設計的時候也很瘋狂,那也是被逼無奈,但是最終並沒有換回自己應得的一切。

很多時候我不知道這樣做會換回什麼,可能依然是一無所有,但是有所堅持總比無所事事要好一些。正如羅曼·羅蘭說過的,“生活最大的煩惱不是工作,而是無聊”。

冷靜

如果問一個面試官最看重應聘者的哪一方面,我想一定是解決問題的能力。

解決問題需要一種心境,沉著冷靜是解決問題的前提。我發現很多人在遇到問題時,立刻就在 QQ 群或者論壇提問,其實都是一些比較基礎的問題,這不是一個好習慣。技術人員必須學會獨立思考,畢竟大多數情況下只有自己可以拯救自己。不管遇到多難的問題,首先要冷靜,然後慢慢分析問題的原因。說一些我常用的解決問題的方法。

一、睡前思考。 躺在床上閉上雙眼,回顧一遍遇到的問題,非常管用。記得上初中那會兒,我喜歡在睡覺之前或者上學的路上解幾何題,有趣的是,往往都能得到答案。剛工作時,我還有個怪癖,喜歡在解決問題之後大吼一聲甚至手舞足蹈,想要釋放一種壓力。所以每次遇到問題,我總是告訴自己,明天這個時候我就會大吼一聲,真是有點好笑。
二、學會放鬆。 說一件自豪的事情,大學期間,我幾乎玩遍了塞班手遊,總結出很多道理,其中之一是,任何難闖的關卡在休息一晚之後都可以輕鬆完成,技術問題往往也是如此。

以上說的都是比較虛的方法,實際點的比如瀏覽 stack overflow,翻一翻 GitHub issues。

關於這一話題的故事有很多。千禧年之際,谷歌的核心繫統(抓取網頁然後構建“索引”)停止運轉,一切都變得非常糟糕,幾乎威脅到整個公司的命運。多名工程師奮戰四天四夜依然無果。他們檢查了所有程式碼的邏輯也沒有發現 bug。第五天,Jeff 和 Sanjay 開始懷疑問題可能不在於邏輯,而存在於物理層面。最終,他們將索引檔案轉換成了二進位制程式碼,用最原始的方式確認是機器的儲存晶片被破壞了。Jeff 和 Sanjay 是谷歌唯二的高階技術專家。

追求

作為技術人員必須有所追求,比如程式碼潔癖。林納斯對不規範的程式碼總是直言不諱,“你的程式碼是一坨狗屎”。不知道從什麼時候開始,我也有了一點強迫症,DOM 層級,CSS 屬性順序,變數命名,末尾分號,空行等等,差一點就感覺不舒服。

除此之外,不要把工作侷限在需求之內,在前東家的時候,技術經理一直強調做點工作之外的事情,申請一些專利,雖然有些面子工程的意思,不過我贊成這種觀點。作為前端工程師肯定不能只是寫頁面,而後端工程師也不應該只是做 CRUD 的工作。

很多人不知道應該追求什麼,正如前文提到的,這要看你自己的定位與興趣,畢竟作為程式設計師,愛好應該非常廣泛。如果你把工作作為興趣,我覺得也無可厚非,把工作做到極致也是一種追求。

後記

如果現在回答文章開頭的問題,我想只要認真做一件事情並堅持下去,或許就會成為引以為傲的資本,即使資本市場再寒冷,我們依然可以從容應對。

曹丕的《典論·論文》有句非常經典的論述:“蓋文章經國之大業,不朽之盛事。年壽有時而盡,榮樂止乎其身。二者必至之常期,未若文章之無窮”。這是我記得很熟的一段話,主要是講文章的功能性,文章是超越生死的載體,通過文章,作者可以聲名遠播,流芳百世。同樣地,技術人員的著述以及開源專案就是實現自我價值最好的體現。