當前位置:
首頁 > 知識 > 高級碼農反思錄:我當菜鳥時不懂的七件事

高級碼農反思錄:我當菜鳥時不懂的七件事

選自freecodecamp

作者:Chris Blakely

機器之心編譯

參與:李詩萌、張倩

在職業生涯初期,開發者們總是會犯一些普遍的錯誤,如急於求成、代碼花哨、不會向社區尋求幫助等。本文作者也經歷過這些過程。在進階為高級碼農之後,他回顧了自己的「naive」階段,詳述了自己作為初級碼農時遇到的 7 大問題,並給出了解決方案。

開發者職業生涯初始你可能會覺得有點害怕。你將面臨許多未知的挑戰、要學習很多東西,還要做出很多艱難的抉擇。有時我們可能會選錯。這是很正常的,當我們面對這種情況時不要自責。

我們應該從中吸取教訓。在成為高級開發人員的過程中,我犯過許多錯誤。本文講述了當我還是初級開發人員時犯過的 7 個嚴重錯誤,以及如何避免這些錯誤。

第一份工作中的坑

如果你一直在自學代碼,或者即將結束學生生活,那麼你的首要目標就是找到第一份工作。這是漆黑隧道盡頭的一束光。

但找工作並不容易。初級開發人員越來越多。你要寫一份一擊必中的簡歷,並經過幾輪面試,這個過程也可能會一直循環下去。

簡歷撰寫指南:https://www.chrisblakely.dev/how-to-write-an-awesome-junior-developer-resume-in-a-few-simple-steps/

這也是你覺得自己抓住的任何工作都極其誘人的原因。

但這種行為可能並不明智。無論是從學習還是享受工作的角度而言,我的第一份工作都遠遠談不上理想。開發人員抱著「呃,有態度就行」的想法,對待工作並不認真。這樣就會產生一種責備文化,我常常為了滿足緊迫的截止期限而被要求縮減內容。最糟糕的是我沒能從這份工作中學會任何東西。

我在面試中忽略了這些警告信號,因為得到工作機會蒙蔽了我的雙眼。當我收到報酬還不錯的 offer 時,我將我所有的擔憂都拋到了腦後。

真是大錯特錯。

你的第一份工作非常重要。它讓你體驗到成為一名真正的開發人員的感受,你從這份工作中獲得的經驗和指導也將為你之後的職業生涯奠定基礎。這就是為什麼在接受任何工作前,你都要對你的職位以及這家公司進行全面調查。你一定非常不想從中獲得糟糕的經驗或糟糕的領導!

所以,在申請或接受任何工作之前,你要:

研究這家公司

在 Glassdoor 和互聯網上搜索這家公司、登錄他們的網站,找一些關於這家公司的評論。如果這家公司符合你的目標和需求,那你會得到很不錯的體驗。

詢問你認識的人

如果你的關係網中有人曾在這裡工作,或者他認識這裡的員工的話,你可以和他們聊聊。了解一下他們對這家公司的褒貶評價以及他們的經歷。

在面試中問適當的問題

面試是你了解一家公司的絕佳機會,面試前要確保你已經準備好要提的問題了。你可以問:

開發過程(他們用的是什麼方法?他們有代碼審核嗎?他們的分支管理策略是什麼樣的?);

測試相關的問題(他們用什麼樣的方法進行測試?他們有專門做測試的工程師嗎?);

公司文化(這家公司的氛圍輕鬆嗎?有什麼針對初級開發人員的支持嗎?)。

什麼都想學,結果什麼都沒學好

毫無疑問,成為成熟開發人員的道路充滿困惑。有很多可用的語言、框架和工具。我最開始犯的一個錯誤是什麼都想學。有趣的是,我最後什麼都沒學好。

一會學 Java,一會學 JQery,一會學 C#,一會學 C ……

我沒有專註於一種語言,而是根據那天的心情在不同語言間跳躍。相信我,這絕對是一種非常低效的學習方式。

如果在一條路上走下去或深入學習一門技術,那我本能得到更好的結果,並晉陞得更快。例如,如果你想在前端發展,那可以學習 JavaScript、CSS 和 HTML,還要選擇一個框架。如果你想在後端發展,那就選一種語言並好好學。你不需要了解 Python、Java 和 C#!

集中注意力、選擇自己要走的路、制定計劃,並成為你選擇的領域的專家(這張圖可以幫助你制定計劃:https://www.chrisblakely.dev/the-10-minute-road-map-to-becoming-a-junior-full-stack-web-developer/)

寫代碼的時候太「花哨」

假設你在準備一個項目,這個項目可能是給面試官看的,也可能是你找到第一份工作後的第一個項目。你想給別人留下深刻的印象。最好的方法是做什麼呢?用你學過的極其花哨的編碼技術來完成項目,對嗎?

不對。

這是我犯過的一個主要錯誤,也是初級開發人員常犯的錯誤。初級開發人員常會做無用功,還會用非常複雜的解決方案來給人留下深刻印象。

最好的方法是參照 K.I.S.S(keep it simple, stupid)原則寫代碼(越簡單越好)。讓一切都儘可能簡單,你就可以寫出可讀性高、可維護性高的代碼,這會帶來很多好處(在你之後繼任的開發人員會很欣賞這樣的代碼!)。

不會平衡生活和工作

我早期還有一個壞習慣:沒有學會在生活和工作中切換。我會在一天工作結束後還把電腦帶回家,坐好幾個小時來解決可以留到第二天的任務或錯誤。不出所料,這樣的習慣讓我精疲力盡。

我這樣做的部分原因是我覺得要儘快完成所有的事情。但實際上,我本該意識到工作是一個持續的過程,它往往可以在下一個工作日再繼續進行。重要的是要記得生命中還有別的需要關注的事情——朋友、家庭以及興趣愛好。當然,如果你想夜以繼日地寫代碼,那當然可以!但如果不怎麼享受這個過程,那你可以考慮停下來做一些其他事。

明日何其多!

不敢說「我不知道」

在你要完成的問題或任務上遇到困難是很常見的,它會經常發生,即便你成為高級開發人員也是如此。作初級開發人員時我犯的錯誤是:我不願意承認「我不知道」。如果管理人員問了一個我不太清楚的問題,我會糊弄一個答案,而不是直接說「我不知道」。

我覺得如果說「我不知道」,人們就會覺得我不知道自己在做什麼。但事實並非如此。沒有什麼都知道的人。所以如果有人問了你不知道答案的問題,直說就好。這樣做的好處是:

你表現了你的坦誠,而且不會誤導提問的人;

如果有人向你解釋的話,你也會學到新的東西。

你直說自己不懂這個問題的話,會得到別人的尊重。不是每個人都敢承認自己的無知。

心急吃不了熱豆腐

我相信你一定聽過「在學會跑之前你要先學會走」。沒有什麼領域比 web 開發更貼合這句話了。當你以初級開發人員的身份獲得第一份工作時,你會急於產出,馬上著手處理大型編碼任務。你甚至想到了如何快速晉陞到下一級。

雖然有雄心壯志是很好的事,但事實是很多事情不會立即發生在初級開發人員身上。當你剛開啟自己的職業生涯時,你可能要處理相對更小、更簡單的任務和錯誤。這可能不是什麼令人興奮的工作,但卻是必須經歷的過程。這個過程可以讓你一隻腳邁進代碼庫並熟悉這個過程。其次,這個過程可以讓你的團隊和你的上級更好地評估你作為團隊一員的工作範圍,以及你的技能在團隊中處於什麼樣的位置。

我當時犯的錯誤是對處理小任務感到沮喪,而且這種沮喪的感覺影響了我的工作。耐心點,盡你所能完成你要處理的每一個任務,激動人心的工作隨後就來!

沒有加入任何社區,也沒有建立任何關係網路

開發社區很棒。社區中總有人願意提供幫助、反饋,甚至是動力。成為開發人員是很難的,有時候可能會付出一些代價。你加入社區越早,就越容易渡過初級開發人員的艱難時期。

參與也是一種很好的學習方式。你可以為開源項目做出貢獻,看別人是怎麼寫代碼的,還可以看到開發人員是如何協作完成一個項目的。這些技能你都可以應用在日常工作中,而且從長遠角度看,這會讓你成為更好的開發人員。

找到並加入你感興趣的社區——freeCodeCamp、CodeNewbies、100DaysOfCode 都不錯!你還可以參加一些你所在城市的線下聚會。詳情見 meetup.com。

這也可以讓你建立關係網。這個網路基本是由你所在行業認識的一群人組成的。為什麼關係網很重要?假設你想跳槽。通過網路,別人可能會推薦特定的職位給你,甚至可能向一些公司推薦你。這讓你在面試中有了堅實的優勢,因為有人為你擔保,這樣你就不再只是「一疊簡歷中的一個名字」。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

從虛擬到現實,北大等提出基於強化學習的端到端主動目標跟蹤方法

TAG:機器之心 |