新入碼農這一行,歷數我在公司內外犯過這些錯誤
英文原文:Mistakes I’ve made as a junior developer — and how you can avoid them.
編者按:當你初涉職場,一切都是未知,你會遇到各種各樣的挑戰,摸著石頭過河應該最能形容你這個階段的感受。本文作者 Jack Finlay 是一名軟件開發人員,他在本文中總結了自己進入軟件開發領域工作以來在早期所犯的錯誤以及自己的所思所想。想進入軟件開發領域的新人可以以此為鑒,規避這些錯誤,讓自己少走彎路。
當你最開始進入軟件開發工作領域時,一切都是未知,一切看上去似乎都令人望而生畏。離開大學校園,進入現實工作環境是一個很大的轉變,在你找到自己的節奏并且塑造起充足的自信心之前,你可能會在這條路上經歷很多的磕磕碰碰。也有可能你已經對自己的能力很有信心了,那我想問你一個問題,“你在這之前犯過多少錯誤?”
進入軟件開發職業生涯,也是讓你掌握一門技藝的開始。它同其他任何的職業領域一樣,你會發現在這里你也會遇到各種挑戰,會有機會糾正自己,并且有些時候你會發現所作所為自己完全就是錯的。本文是我對自己在軟件開發職業生涯早期所犯錯誤的一次反省,另外我也根據自己的體會給出了如何規避這些錯誤的建議。
找工作過程中
走出大學校門,找到***份工作并不是一件容易的事,一定要確保這份工作適合你。這家公司必須適合你,并且會帶你去到你想要去到的職業發展方向。
找到你的價值所在
在這方面我犯過兩次錯誤。我是在大二那年找到了***份軟件開發工作,因為當時我的財務狀況捉襟見肘,所以對于***份工作邀約,我就欣然接受了。當時我的想法是我應該接受這份工作,因為這份工作的工資待遇同我那微薄的學生福利相比已經算很高了。當時,我根本就不知道這份工作的待遇,結合這一職位以及公司所處地域來說,其實遠低于當時的市場薪酬標準。
正如我先前所說,我犯過兩次錯誤。另一次就是畢業之后,當時我設法在別處找到了一份工作,這份工作的薪資待遇水平比我當時的工作要高 25%。但其實即便這樣,按照市場標準來看,這一新工作的薪資待遇仍然處于低端水平。我的價值被嚴重壓低,但當時的我毫不知情,很高興的接受了這份工作。那時的我根本就沒有意識到,其實并不是所有的權力都掌握在雇主手中。
你也可以對自己的薪資待遇提出要求。如果我事先花時間進行一番市場薪資水平研究,那我會發現自己真正應該享受怎樣的薪資待遇。我建議你可以參考 PayScale 這樣的網站來獲取這方面的信息,在進行薪資談判時,你甚至可以直接引用一些類似網站的數據。
瀏覽員工評價
Glassdoor 就是一處很好的資源,公司內部員工會非常認真的給出自己對于公司的評價。一般說來,就員工在這家公司的工作體驗是好還是壞這一方面,評論內容可能會出現兩極分化現象。你需要搜索積極以及消極評價,并找到其中的中間地帶。如果我之前就了解過這些評價內容,那在面試以及接下來的工作過程中,我應該就可以規避一些糟糕的經歷。
要知道你的實際工作內容是什么
在我職業生涯的早期階段,我非常想去一家企業工作(因為我的朋友在那里工作,他很享受這份工作),我是如此熱切的想去到那里工作以至于我都忘了問一下去到之后我實際會做的是什么樣的工作。事實證明,我跟朋友并不在同一個部門,雖然同處一座大樓,但不在一個辦公區,甚至不在一個樓層。當時,我甚至都沒提前去考慮這份工作是否真的適合我這個問題。
此外,我也沒有充分詢問關于接受這份工作軟件開發環境、使用的工具以及語言等方面的信息,這又是一個錯誤。所以,在那之后接下來的職業生涯中,在接受一份新工作之前我都會確保自己先了解以下幾個問題:
1、版本控制策略和工具
符合行業標準嗎?是 Git、TFS、SVN 還是 Mercurial?如果你之前有聽過,那就應該沒什么問題。
2、CI / CD 工具和環境是否到位?
部署應盡可能自動化,這會讓你的生活變得更加輕松。
3、部署頻率如何?
4、我將在什么框架/語言中工作?
5、你們使用的是什么工具?哪個 IDE?
Visual Studio、Rider 或 IntelliJ 都是一些不錯的選擇。
6、我會從事些什么樣的項目?
7、公司下一步計劃采用哪種技術?這些變化主要是為了怎樣的發展前景?大約還有多久才能將這些技術付諸于公司日常使用之中?
工作過程中
一旦你開始工作之后,挑戰就會源源不斷的出現。你會發現自己每一天,都需要應對一些新的挑戰。
代碼永遠不會實現自注釋
“我的代碼是自注釋的,因此我不需要再加注釋。”在我***開始專業編程的時候,我就是這么想的。但我絕不會再犯這樣的錯誤了。對于任何語言來說,注釋都是一項***大的功能,它可以傳達你當時的想法,你需要在注釋中體現這一點。
我看過無數的代碼段,我發現一條簡單的注釋往往就能讓復雜的代碼和算法變得更容易理解,也更容易更新。
但是如果代碼段被過度注釋,那比沒有注釋還糟糕。當你處于深入探索模式,試圖弄清楚某樣東西的運作原理時,你會發現那些過度注釋的代碼只會增加你的探索難度。如果你對一行代碼注釋過度,那下一個看到這行代碼的人可能就會感覺不知所云,不明白你為什么會這樣做。
所以,一定要謹慎處理你的注釋,優質的注釋內容不僅可以降低認知負擔,還可以幫你發現錯誤所在。如果它看上去與注釋不符,那很有可能是錯誤的,或者這會讓你有機會將以下部分付諸實踐。
及早提出問題
不要等到掉進兔子洞、錯誤已經鑄成時再想起尋求幫助。不及時尋求幫助可能會導致你得出錯誤的結論,或者更糟糕的一種可能是,你會破壞一些東西。及早提問,即便是對于那種只需要一次 Google 搜索就能快速解決的問題也是這樣。也許雖然你需要提出問題,但你不想問,因為你害怕自己會看上去像笨蛋一樣,那最終結果很有可能是你做出的東西根本就是錯誤的。
提出問題有助于讓你學到新東西,并且快速參與到項目中來。如果在需要的時候你沒有提出問題,那你可能會做出一些錯誤的假設。
不要做出任何假設
在你開展某一項目時,假設是決定你需要構建什么東西的一個重要組成部分。在你設計一套解決方案時,并非每一件事情都必須迎合你之前所做出的假設。只有正確的假設才有助于引導你找到正確的解決方案。
我有過耗費幾個小時的時間去編程,但***出來的東西卻是錯誤的這樣一個經歷,并且我之所以構建的是錯誤的東西只是因為我做出了錯誤的假設。通常情況下,從商業分析師那里拿過來的任務都非常具體,但其中往往也會有缺失。除非提前說明或者是你問過他們,否則不要做任何假設。
在家工作
你可以每隔一段時間就要求在家工作,不要害怕提出這一請求。有時候,這是擺脫辦公室環境壓力與諸多分心因素,讓自己獲得專注力的一個好方法。有些企業,整個員工團隊采用的都是遠程工作模式,顯然這種模式是行得通的。
當然,也有一些企業堅決反對遠程工作模式。我之前在澳大利亞的一家企業工作了一年多的時間,辦公地點在新西蘭。無論是團隊間協作還是與客戶的合作其實都通過網絡形式來進行,無論是電子郵件、即時聊天還是傳統的電話形式,距離都不再是你與他人共事的阻礙。也就是說,無論我是在辦公室工作,還是在家辦公,其實沒有實際的區別。但不管怎樣,公司就是不允許遠程辦公模式的存在。
所以,你可以留意那些合適的工作崗位,那些能夠讓你有機會在家或者除辦公室之外的地方辦公的工作。
實際編程時間
不幸的是,你不可能是將一周全部的工作時間都用在編程上。雖然,你可能對這種狀況感到苦惱,但這其實并不全是壞事。畢竟,編程并非 100% 的時間都是用在寫代碼身上。
其中,你的一大部分時間會用在會議事項上,而這些會議通常是為了減少你需要用在具體編程上的時間。這也是確保你可以通過編寫盡可能少的代碼來設計出***解決方案的一條有效途徑。
工作之外
有些人可能會說這并不重要,但也有觀點認為你在工作之外的所作所為與你在工作中的所作所為一樣重要。
利用自己的業余時間培養更多編程技能
一旦我意識到當前工作所用的專有工具和語言非常糟糕,真是令人沮喪,我就會開始研究那些我知道可以讓我去到另一家公司的技能。
如果你發現自己也深陷同樣類型的工作環境之中,那了解一些更加主流的技術信息有助于幫你自己找到一條新的出路。雖然就這一方面觀點呈現出兩極分化趨勢,但我相信,利用自己的業余時間來培養專業技能,絕對能夠讓你抓住未來更多的機遇。
讀書
現在我自己也讀過了一些書,我多希望自己先前讀的書能更多一些。因為從書本中我們可以學到無盡的知識。在你的休息時間或者工作日的閑暇片刻,你都可以拿幾本書看一看。大部分人都是坐車上下班,這個時間就可以用來看書。
寫作
寫作是進一步拓展你的職業生涯的一個好辦法,這也是我現在正努力所嘗試的事情。這不僅僅是一條建議,也是我自己的反思成果。將自己遇到過的困難或者某個問題記錄到博客之中,在你以后再次遇到類似問題時,這篇博客就會對你起到幫助作用。
一開始這樣做看上去可能有些奇怪,但將這些事情記錄下來確實是讓自己減壓、釋放情緒的一個好方法。我的大部分作品都是直接面向公眾開放,但你不需要這么做。
鍛煉
在我剛參加工作的前兩年,我并沒有經常鍛煉,結果身體很快就開始吃不消。我們都知道,作為一名程序員大部分時間都是坐在電腦前,一動不動,盯著眼前的屏幕。當然,你不可能一整天的時間都在編程,但是起身去會議室開會這種運動量顯然不夠。所以,我的建議是一定要盡量讓自己多鍛煉。
休假
盡管讓自己在工作場合隨叫隨到是很重要的一個品質,但你要知道時不時的讓自己休個假也很重要。如果你沒辦法為自己調休出一個長假期,那你可以將調休時間與周末連到一起,或者時不時的休息幾天。公司對于休假以及調休都有不同的福利政策,確保自己盡可能利用到這些福利。
我之前犯得一個錯誤就是,讓自己積攢了很久的休假時間,但最終卻沒能派上用場。從經濟層面來說這是好事,節省開支,但對于我的身心健康來說顯然不是這樣。