[譯]作為一名新手開發,我是如何克服焦慮的?
在Twitter上看了一篇文章,覺得寫得很好,一些事例跟自己當初學習程式設計時心情特別像,想著專案也沒啥事,就試著翻譯一下,貼出來,與君共勉!
關於掙扎與焦慮
提到程式碼,我相信很多人會想到"掙扎",如果你是一名新手或初級開發者,這份“掙扎”可能會更加突出。學習程式設計就是:找正確的資源、理解並整合、找份實習或者開發的工作,然後開始上手正式的專案-每一步都可能充滿著掙扎與迷茫。
掙扎帶來的好處在於,你可以學習,走出自己的舒適區來體驗新事物、實踐自己新穎的想法,不斷地打磨自己,讓自己變得越來越好。
在教育界,很多成功人物的例子都有過掙扎。表面看起來一切都是那麼的迷人和燦爛。 這種感受對於初級開發者尤甚,因為他們的同事:中級的、經驗豐富的人是總能用自己了不起的邏輯思維、精彩的編碼手段驚訝到他們。
但是當我們走進他們並弄清事實,才意識到每個人都有必須面對的困難或挑戰,每個人都會被bug、錯誤所困擾。相比我們,他們面對的是高難度的、複雜的bug而已。
我分享一下讓我學到很多的,也是最喜歡的兩篇推文。這些推文總能讓我開心並推動著我前行。讓我感到也許我們在同一艘船上,有著同樣視角,奔向同一個目標。
第一篇推文
大意是:沒有人能做到足夠好,因為 足夠好是一個永遠無法抵達的目標當我艱難掙扎在學習JavaScript的路上時,生命我看到這篇推文,這對幾個月前的我來說是一個震驚的觀點。 10個月的時間學習、探索、實踐之後,我終於得到了一個遠端的、帶薪的實習機會。
在學習過程中,我總是尋求一些欣賞或承認,讓我認為自己會成為一名好的程式設計師。我想知道自己是否適合程式設計。以及自己能否像其他程式設計師一樣寫 出好的邏輯和程式碼。
在小的問題上折騰、不能很快地修復問題常常讓我變的沮喪。 看到一些頂尖的程式設計界名人向自己的關注者坦承他們也非完美,我又找回了自信。
第二篇推文
來自 《你不知道的JavaScript》系列的作者Kyle Simpson 20多年經驗,8本書(10萬銷量)作者、4k多場演講的他一樣對寫程式碼感到困惑。哈哈,感覺好點了吧。 我不知道你感覺如何,反正好幾次都讓我倍感輕鬆。
我最近開始了在某公司的遠端實習,我意識到隨著學習和體會,我的擔憂和不安全感會慢慢改善。這篇文章記錄了初期的幾周內我面對的擔憂和挑戰
我希望幫助那些努力並適應工作的新手和初級開發者,讓他們明白每個人都會有掙扎,這對於學習是必要的。
開始實習
在Mozilla開始工作的前天晚上我做好了準備,很開心也很緊張。一件意想不到的事發生了:我的工位持續了8個小時的斷電。
我無法跟有經驗的人交流也沒法開展工作。
慶幸的是,下午5點終於來電了,公司舉行了歡迎儀式,見了其他同事和來自Mozilla的技術人員。
很有趣也很新穎,就像會見來自世界各地的人們一樣,交談了幾乎一個小時,見了我的技術領導Armen 和Dustin,感覺很好。
感覺跟他們通過郵箱、簡訊溝通留給我的印象不太一樣。
我的導師在github上列了一些issues,它們有著不同的複雜性。第二天我就開始認領這些issuses並著手修復工作。
從這時候起,我發現正式的號角才剛剛開始,上一次掙扎僅僅是一個小前奏。
我的發現
一切都是為了理解程式碼
我在開始工作時的感受與當初申請實習時的感受大相徑庭,工作中的擔心是自己做的不夠好或失去這份工作。
當我卡在第一個Issue:根據需要實現graphJS工具提示的自定義化,這也太難了。
最初我以為自己很很快就搞定它,事實證明確實花費了不少的時間和精力。 我想了2天也沒找到合適的方案。 我問了導師好幾個問題,並試著給出自己的見解,有一段時間,我覺得自己可能無法搞定因為過程太令人沮喪了。
當時,導師並沒有給我施壓,相反他們幫我樹立信心,告訴我面對一個新專案的程式碼時困惑是很正常的事。 有時,理解事物和別人寫的程式碼真的需要時間,我們不必過於苛求自己。我們需要做的在時間消耗中get到新的東西。
從那之後,我掙扎於程式碼中——上百個函式和檔案。我的導師跟我介紹了橡皮鴨技術。然後讓我把程式碼解釋給“橡皮鴨”。 這種方式幫助我更好地理解程式碼以及內部執行機制。
“It is okay to get stuck, we all get stuck with issues and errors. With the years of experience we get stuck less, but we still get stuck.”—Armen Zambrano
知道從何處開始意味著勝利了一半
大多數時候,你知道答案,也許是邏輯,然後如何應用它。但是你不知道從哪裡開始? 有很多的程式碼檔案和函式,你困惑於吧這個方案放到哪裡才能正常工作? 我的導師建議我根據註釋來理解程式碼和函式,還有我自己的方法(console.log,永遠有效)
在第一個issuses以後,事情變得順利點了,但依然充滿挑戰。 我又被一個相對複雜的issuses絆倒了,花了幾天才解決。 但是幸運的是,我的導師和開源人展示了足夠的善意,讓我們這些初學者面對困擾的心情至於太糟糕。 我們需要類似的樂於幫助或指導的人,他們給初學者提供了最好的資源,而不是讓人精疲力盡。
程式碼合併很棘手
哈,如果你不熟悉開源或是個新手,那麼關於程式碼合併我得提醒你幾點。 如果你不好好對待這件事,結果可能是:你花費了幾個小時查詢並解決了問題,結果你在合併程式碼中丟失了這段程式碼。
我的程式碼有幾次衝突,我直接 通過 git commits 清理掉了。 這很煩人也很恐怖。但是如果沒有這些事情發生,我也不會學到關於git合併 、提交、解決衝突的新概念 感謝導師幫助我突破了程式碼衝突的陷阱。
"理解自己的程式碼"也是一種掙扎
這適用於幾乎所有人,幾天後我們被這些自己親手寫的程式碼所困惑是件有趣的事情。解決一個bug後,我試著解決了一個類似的bug , 一個接一個。 我就像是... 我怎麼會寫這樣的程式碼 ? 這他媽的竟然也能正常執行?
能工作的程式碼跟不能工作的程式碼一樣令人費解。根據經驗,能工作的程式碼會給我們製造更多的麻煩。在翻看老程式碼是,你重新思考並發現了一個更好的解決方案。 所以你就不必去擔心或者鬱悶 這些程式碼是之前自己或別人寫的了,因為你可能已經學到了新東西。
導師或Mozilla牛人的意見
不要太在意一些事情,專注於學習
當一箇中級開發者或導師對我們的工作做出改正或提出意見,很難不去在意這個事或感到沮喪, 這種情緒在開源專案或公共平臺上可能會更加難以平衡。
但是我建議專注於特定的層面,擁抱一個學習的態度。 只有懷著虛心學習的態度,你才能學到新的概念和好的編碼實踐。 拋開自我,專注於經驗的學習或其他人的知識的學習。
儘可能大量地吸收資訊,面對新事物要多問 對於資訊保持一種開放、吸收的姿態,對待學習如飢似渴。 不要害怕嘗試舒適區之外的新的或陌生的東西。 有時候我們習慣了自己的程式碼書寫方式,而不去關注那些好的實踐或設計模式。 儘可能試著去學習。這也是第一條推文所倡導的建議。
問問題之前,先做好功課
問問題是個好的注意,尤其是當你被困住時。 先做好功課和一些努力的嘗試絕對是個好的做法,有助於提出有效的問題或可能的答案。
然後你就能得到一個來自導師或中級工程師的回饋。 有助於找到自己的做事模式,你的導師也會覺得你有自己的思考。 開源專案的人或有經驗的人一把都樂意、願意幫助你,前提是你提出了一個有效的問題。
不要拿自己跟別人比
不要一直跟別人比,這會影響自己的表現,也會失去自信。 記住,任何一個管理者都是從新手開始的。 他們瞭解這種痛苦和挑戰。羅馬不是一天建成的--這是每個人都必須跨越的過程。 在那個屬於自己時代到來之前,保持努力的姿勢。
記住,每個新手都處於你的位置,你不是例外。 學校所學跟真實生活中的有著很大的差異,我們必須不斷學習才能勝任一個領域的開發任務。 每個新手都曾處在你的位置,對你的痛苦感同身受。你只需要專注擁有一個學習的態度保持不斷學習不斷成長。
本文完,儘量貼近原文,本著文章流暢的必要性,有所刪減,結構也做了些調整,更適合讀者閱讀。