做者:Sihui Huang程序員
譯者:承香墨影面試
我想每一個開發者在學習成長的過程當中,在面臨技術難題的時候,都有經歷過自我懷疑的過程,可是有時候這並非你的錯,你們都經歷過如此的過程。咱們做爲一個開發者,在成長的過程當中,總有一些小的勝利和小的沮喪,學着爲本身喝彩吧。算法
如下任何一個,是否是聽起來都很熟悉?編程
你常常擔憂本身不夠好。c#
看看你周圍的開發者們,他們彷佛擁有一切。他們的代碼比你的更簡潔,他們 Debug 的速度比你更快,他們只須要在編碼以前閱讀文檔就能夠很順利的繼續編碼。他們看起來頗有信心,也對編碼富有熱情。設計模式
可是,你很擔憂。你擔憂你對框架和所使用的語言不夠了解,你擔憂會引入新的錯誤;你擔憂趕不上最熱門的技術;你擔憂你沒有足夠的才能,來天然而言的獲得這一切。你在想:「也許我不想成爲一個開發者!」數據結構
若是任何這些自我懷疑的想法,你聽起來都很熟悉。那麼實際上,你並不孤單。Google 搜索 「self-doubt developers」(自我懷疑的開發者),你會在不到一秒鐘內獲得超過 200w 的結果。框架
有一段時間,我也經歷了強烈的自我懷疑。這是在大學時期,我正在複習和準備面試的時候發生的。這些算法問題天天都讓我感受到完全的被戰勝了。我和如今的你同樣擔憂本身不夠好。數據結構和算法
最終,我經過實踐獲得了回報,我收到了來自知名科技公司的多份 offer 。一路走來,我學到了兩個重要的課程,改變了對我編程的見解,消除了我自我懷疑的想法。post
我如今和你分享,但願它們也能幫助到你。
爲了學習如何踢球,你須要去球場上踢球;爲了鍛煉出更強壯的肌肉,你須要去健身房舉重;想要學習編程,你須要坐下來編寫代碼。
舉重後,次日你會感到痠痛和疲憊。而當遇到編程難題的時候,這會是很是燒腦的,你將會感到沮喪。
你不會由於疼痛而放棄鍛鍊,你知道這是鍛鍊過程的一部分。可是當你在編程的時候卡住的時候,你可能會懷疑本身,想知道本身是否足夠聰明。
由於:
也許沒有人告訴過你,但在編程期間卡住是絕對正常的,它甚至發生在高級開發者身上。編程的很大一部分是要弄清楚爲何你預期發生的事情沒有發生。若是你以爲,孩子第一次站起來的時候可以走路是荒謬的,爲何你會但願你的代碼的第一稿可以完美運行而沒有任何錯誤?
我記得當我被卡住了很長時間的時候,我想把個人頭撞在牆上。我知道這很難過和使人沮喪(特別是在處理與開發環境有關的問題時)。可是就是掛在了這裏。深刻研究這個問題、藉助 Google、問一些朋友、散步。你最終會解決它,並繼續前進。並且隨着你得到更多的經驗,你會慢慢地陷入困境。
假以下一次你又被卡住了,別再浪費時間自我懷疑了。你應該提醒本身,這不是你的錯。這是正常的。這只是過程的一部分。
若是你是初學者,花費數天時間來創建開發環境是很是廣泛的,這些時刻可能會粉碎你的靈魂。你嘗試按照文檔一步一步向下執行,但隨機的錯誤不斷出如今每個步驟中。文檔看起來很簡單,但事實並不是如此。這不是你的錯。閱讀該教程的人中有 99.99% 卡住了。其他的 0.01% 是幸運的,剛好與編寫文檔的人具備徹底相同的操做系統環境配置。
不幸的是,學習編程的第一步也是最使人沮喪和心靈破碎的部分。當你看到你沒法理解的錯誤時,只需將確切的錯誤日誌複製並 Google 搜索便可。(把錯誤日誌加上引號或只搜索錯誤日誌的前半部分可能會有幫助。)嘗試不一樣的解決方案,直到找到可用的解決方案,而後繼續下一步。
請原諒我再次強調:在這個階段卡住不是你的錯。你們都這樣作。我保證,一旦你經歷了這個階段,編程將會變得更加有趣。
在大學的最後一個學期,個人朋友們對我在《高級數據結構和算法》課上的表現感到驚訝。當他們很辛苦的學習時,我看起來絕不費力。
他們不知道的是,在課前幾個月,爲了準備面試,我花了數小時練習編碼挑戰,涵蓋了與課程徹底相同的課題:動態編程,深度優先算法,廣度優先算法等。它彷佛絕不費力,只是由於我已經經歷過這些努力的過程。
當我第一次自學這些概念的時候,我會花上好幾個小時的時間來盯着一個問題,並且沒法弄清楚它。當我放棄並在網上查找解決方案時,我努力去理解它們。當我終於作到的時候,我感到更加沮喪,由於我懷疑本身是否足夠聰明,爲何本身想不出這樣的解決方案。
有時甚至當我再次遇到一樣的問題時,我可能仍然不知道如何解決它。我會這麼強調,我不得不採起長時間的熱水淋浴來讓本身冷靜下來。
因此,當我說我知道本身懷疑本身,擔憂本身作不到的時候,相信我。我之前也是這樣。我能夠向你保證,你並不孤單,許多偉大的開發者也經歷過一樣的事情。
下一次當你身邊的人表現出衆的時候,而你正在辛苦掙扎,不要覺得是你沒有足夠的才能。極可能,他們只是比你更早地接觸到這個主題或相似的主題。他們的大腦已經創建了「肌肉」來處理這種類型的問題。在經歷了目前的掙扎以後,你也會顯得聰明而輕鬆。
這和咱們的常識同樣。
你經過鍛鍊來鍛鍊肌肉。你投入的努力越多,訓練的時間越長,你的能力就越強。學習編程有徹底相同的過程。你花費的時間越多,你就會越熟練。種瓜得瓜,種豆得豆。
不要想着你是一個多麼優秀或者多麼差勁的程序員。若是你處於隊伍的最後 5%,你想變得更好。若是你有幸進入前 5%,你仍然想變得更好。不管你有多好或多壞,總有人在你面前,同時在你背後也有人。那麼爲何浪費時間思考這個問題呢?
相反,專一於你的技術能力。別再問你有多好、問你的代碼有多好。你應該思考,如何使它更好,更快,更可讀?長期關注那些讓你欽佩的工程師,閱讀他們的代碼,看看和你的有什麼不一樣?他們最近又正在研究什麼新玩意兒?
若是您已是一名軟件工程師,則有人會付錢給您編寫代碼。你應該停下來反思一下,由於這意味着不少:有人要麼相信你的編碼技巧,要麼看到你的潛力。要作到這一點,惟一的辦法就是把注意力集中在你的技術能力上,不斷地改進。
你最後一次被卡住了,不肯定本身是否能解決問題。而最終,你是如何解決的?
打開一個新的 Google 文檔並將它記錄下來。
下一次你懷疑本身的時候,看看這個文檔,並提醒你本身:若是你能解決上次的問題,你也將解決這個問題。
使用該文檔來記錄你克服的挑戰性問題的過程以及你從中學到的東西,老是慶祝這些小勝利,用這些小勝利來激勵本身!
若是你看完這篇文字,留下評論,分享上次被卡住的時刻,提醒那些正在掙扎的人,他們並不孤單。
原文地址:
https://medium.freecodecamp.o...
今天在 承香墨影公衆號的後臺,回覆『 成長』。我會送你一些我整理的學習資料,包含:Android反編譯、算法、設計模式、虛擬機、Linux、Kotlin、Python、爬蟲、Web項目源碼。
推薦閱讀: