近段時間,996成為了技術社群的熱門話題。工作壓力大、作息不規律,甚至脫髮、禿頭,是碼農經常要面臨的問題,甚至已經變成常態。那麼面臨持續高壓的工作,碼農應該如何自我減壓呢?一位軟體工程師給出了自己的建議。
選自Medium,作者:Julia Haigh,機器之心編譯。
開發者的世界總是忙碌的。無論你是個完全的新手還是經驗豐富的專家,總有事情在找你,你彷彿永遠都忙不完。下面,作者給出了一些建議來幫助開發者更好地工作。它主要分為四部分:心態、學習、社會壓力和工具集四部分。
心態
心態是一切的開始。感覺壓力大是因為要同時處理太多工,受到太多的刺激。你需要重新調整注意力,把任務按照優先順序進行排序。
理解問題
理解問題是解決問題的第一步。你為什麼會感到壓力山大呢?根本原因在哪裡?有太多東西需要學、需要跟進嗎?工作中的責任太大?來自同齡人、同事的壓力太大?對自己期望過高?
坐下來,拿一張紙、一支筆,把你的問題寫出來,它能幫助你找到自己最大的問題所在,這樣你就能知道自己最需要學習什麼。
你不能一個人完成所有任務
每個人都不是全能的——所以我們需要團隊。你不可能是所有方面的專家。工程裡的每個領域本身都是一個完整的課題,從 AI 到 DevOps,再到 CSS。類似的,寫教程、開原始碼、編外專案都需要花時間。每件事都需要花時間。
沒有所謂「正確」的方法
現實生活中的做事方式有好有壞,但並沒有所謂「對」的方式,只有最適合的方式,程式設計尤其如此。
找到自己的目標
你真正想要達到的目標是什麼?你是想成為世界上首屈一指的專家,還是做好自己的工作然後回家陪伴家人?還是想找一份合適的工作?你不必按照別人的標準去生活,知道自己真正想要什麼可以幫助你劃定自己的界限,專注於自己的目標並篩選出那些與你無關的事物。
學習
作為開發者,大部分知識需要自學-但對於我們中的很多人來說,這是一種相當新的學習方法。這種方法與正規教育不同,最重要的是,你不需要記住所有東西。理解主題範圍以及知道哪裡可以獲得正確資訊更為重要。熟能生巧嘛!
建立自己的學習架構
自學的其中一項阻礙是瞭解自己學習什麼-從哪裡開始、哪些是重點內容以及需要覆蓋哪些知識點。沒有人為你設定相關課程,所以重要的是明確自己的學習架構。把所有要學的東西明確列出來會減輕你的認知負擔,同時促使你在今後的學習中堅持下去。做一些探索性研究有助於你把握住所有事情,你可以嘗試下列方法:
開發者學習路線圖,像 Kamran Ahmed 的一樣。這可以為你提供一些視覺化結構,並將所有知識置於上下文背景中。記住,沒有人能夠完全瞭解它。
把自己不瞭解的知識列個清單,並將每次聽到的不熟悉的知識新增進去。
看網路課程和課程大綱-即使你不是一位初學者。你不必上這些課程,但依然可以從涵蓋的主題中學到一些東西。
教科書。教科書內容也許過時了,但你依然可以對主題範圍有所瞭解。
瀏覽招聘廣告,看看你中意的工作需要什麼知識和技能。這樣一來,你會了解什麼是實際需要的,並確保自己沿著正確的職業道路發展。
建立自己的核心資源
我們可以獲得的內容有很多,但並不是所有的都是有用和準確的。要知道發表一篇文章太容易了。只有當你發現自己需要某些文章並且這些文章可以解決自己的問題時,它們才最有價值。除此之外,一個好的方法是找到自己的核心資源——那些你可以反覆依賴的關鍵網站和專家。下面提供幾種主要型別:
文件。即使文件的可讀性不強,但它們通常是最準確和最新的資訊。
參考文獻和學習資源。這些網站儘可能以最實用和有用的格式展示現實中最佳的實踐資訊。
專家。這些人和部落格從頭到尾都知道自己的位置,他們會寫一些關於更好地做事方式的文章來幫助你。這些人並不難找,因為他們的名字會反覆出現。
一旦你找到了自己最喜歡的資源,你就很少會去看其它的了。當然,偶爾走出去看看其它資源也是很好的,但前提是你把已有的東西都掌握好了。
安排學習時間
每週留點時間去探索和學習。也不一定要學習多大的專案,僅僅熟悉一下清單上的幾個專案也行。一個小時的學習就能改變很多哦。
用 Pocket 儲存文章以供以後閱讀,而不是把它們放在書籤中,或者工作中途閱讀它們。你可以用喜歡的方式標記它們,這樣有助於以後集中閱讀。
有時候,僅僅查詢一些東西並找出其定義就很有用,有助於你聯想腦海中記的一些事情。有時候有些看起來很重要的事情其實很簡單。
一次集中於一件事。不要嘗試一次解決多件事情,可以花半小時研究一個特定的主題,並正確理解它。
檢視你的核心資源。可能你使用的一個框架需要更新,或者你發現了一些自己不知道的有用功能。
嘗試新事物。不是要你做一門課程或者使用工作中的一些東西來獲得其要點,就做一些好玩或者感興趣的事。比如,如果你沒用過 NoSQL 工作,可以克隆 MongoDB/Mongoose 種子專案玩一下。
定期做某件事能讓事情變得令人期待。通勤時間可以用來閱讀,周天晚上可以做實驗。另外,你還能從成就中獲得多巴胺的提升。
社會壓力
外界總是充實著各種噪音,尤其是網上,這很容易讓你感覺自己做什麼都是錯的。其實你沒有錯,你只是需要更多角度。
許多人寫的程式碼很蹩腳
正如世界上有很多蹩腳的作家、歌手,就連谷歌也有人會寫出糟糕的程式碼。我們能做的就是持續練習,不斷學習。
人們只會展示自己做得好的地方
沒有人會告訴你自己修復一個簡單的小 bug 修到夜裡 2 點,也沒有人會告訴你他們的日常工作都是在處理一些遺留程式碼。他們展示的都是自己的編外專案以及自己近期的得意之作。社交媒體讓人覺得每個人似乎都在做自己夢想的工作,但其實許多人只是在不眠不休地趕上 deadline,直到深夜才離開辦公室。
優先順序劃分因人而異
一些人將開發視為自己的主業,有些人有其他的優先事項。有些人為最新技術而生,有些人為自己的副業拼命,還有些人只是想在社交媒體上出名。你不必花時間去追趕那些把每一分鐘的空閒時間都用在閱讀最新部落格上的人。讓他們幫你做總結就可以了。
想法因人而異
一邊有個人站出來宣稱某個框架或方法將大有可為,另一邊卻有人宣稱該框架或方法已死。人們對同一個事物總是抱有不同的看法,因為他們的視角、經歷、用法都不相同。也許他們都是對的,也許他們都不對。最有可能的情況是,他們都有部分意見是對的。如何評估這些意見取決於你自己。你要有自己的看法。
文章都是騙人的
人們總喜歡寫一些關於可能性,而不是慣例的文章。多數文章你在日常工作中都用不到。看起來很酷、很吸引眼球並不代表有用,也不表示你需要掌握。
招聘廣告誇大其詞
招聘廣告上的要求似乎無窮無盡,但這些通常都是為理想的候選人寫的。上面有些技能要求是你需要滿足的,但剩下的只是吹毛求疵。有些東西你會在工作中學到,而有些東西他們雖然想用但沒有付諸實踐,有些是五年規劃的一部分。還有一些只是關鍵詞堆砌,用一套大概的技能來吸引候選人:如果你瞭解 LESS,你就能輕鬆地學會 Sass。
確保專案經理被通知到位
有時候專案經理不知道你在做的事情難度如何。可能他們不是技術人員,也可能他們的技能過時了。比如,解決某個問題並不是「新增一個下拉選單」就可以做到的,實際上,這是一個具有自動完成功能的定製選擇元件,它需要兩個新的 API 路徑。
工具集
編碼只是其中的一部分,有一套好用的工具將幫助你更好地工作以及管理工作負載。
把時間花在核心技能上
像解決問題、批判性思考和測試這樣的技能對開發人員來說非常重要。花點時間學習如何有條不紊、系統地解決問題可以幫你節約很多時間。而且它對生活的各個方面都有幫助。
使用適當的專案管理工具
規劃你的專案,管理任務,追蹤 bug。使用 git 進行版本控制。這些工具的存在就是為了幫助你追蹤所有正在進行的東西。不要把所有的東西都記在腦子裡,那樣太累。
最大限度減少重複工作
有些事情需要你花費很多精力去做,而有些事情你可以刪減一下讓它變得更簡單。
好用的程式碼編輯器。像自動完成和工具提示定義這樣的功能可以幫助你集中精力編寫程式碼,而不必總檢視程式碼庫。
使用程式碼片段。好用的程式碼編輯器可以讓你用快捷方式設定程式碼片段,但有時候把程式碼片段放置在檔案中以便複製貼上也很好。比如你發現自己總是搜尋一樣的東西,你可以把它放在程式碼片段檔案中並新增註釋,這樣你下次要用的時候就能輕鬆地找到它了。
記錄緣由。通常你會發現自己總在通過一些程式碼來弄清楚自己為什麼這樣設計。這樣子重複地去嘗試和理解同樣的東西實在太費腦子了。所以,好好記錄程式碼將有助於你節省時間和精力。
呼吸新鮮空氣、去鍛鍊、去交談
直直地坐在螢幕前盯著電腦看 10 個小時是不健康的。你可能會被想象中的問題搞得焦頭爛額,從而忽略大局。擺脫這種狀態,保持大腦和身體健康很重要。去外面呼吸,遛遛狗什麼的。讓你的眼睛放鬆一下。和那些不懂什麼是 HTML 的人聊聊天。
尋求幫助
你社群的人會支援你的。所以他們會寫文章幫助大家,構建開源專案,並詢問你想要什麼。針對你的工作負載,尋找好的資源、建議或支援。通常他們都會樂意幫忙。
希望這些建議中至少有一條能讓你感覺生活沒那麼艱難。但我還有一個建議:
何不關上電腦?