在Twitter上看了一篇文章,以爲寫得很好,一些事例跟本身當初學習編程時心情特別像,想着項目也沒啥事,就試着翻譯一下,貼出來,與君共勉!git
提到代碼,我相信不少人會想到"掙扎",若是你是一名新手或初級開發者,這份「掙扎」可能會更加突出。學習編程就是:找正確的資源、理解並整合、找份實習或者開發的工做,而後開始上手正式的項目-每一步均可能充滿着掙扎與迷茫。程序員
掙扎帶來的好處在於,你能夠學習,走出本身的溫馨區來體驗新事物、實踐本身新穎的想法,不斷地打磨本身,讓本身變得愈來愈好。github
在教育界,不少成功人物的例子都有過掙扎。表面看起來一切都是那麼的迷人和燦爛。 這種感覺對於初級開發者尤甚,由於他們的同事:中級的、經驗豐富的人是總能用本身了不得的邏輯思惟、精彩的編碼手段驚訝到他們。編程
可是當咱們走進他們並弄清事實,才意識到每一個人都有必須面對的困難或挑戰,每一個人都會被bug、錯誤所困擾。相比咱們,他們面對的是高難度的、複雜的bug而已。設計模式
我分享一下讓我學到不少的,也是最喜歡的兩篇推文。這些推文總能讓我開心並推進着我前行。讓我感到也許咱們在同一艘船上,有着一樣視角,奔向同一個目標。安全
當我艱難掙扎在學習JavaScript的路上時,生命我看到這篇推文,這對幾個月前的我來講是一個震驚的觀點。 10個月的時間學習、探索、實踐以後,我終於獲得了一個遠程的、帶薪的實習機會。併發
在學習過程當中,我老是尋求一些欣賞或認可,讓我認爲本身會成爲一名好的程序員。我想知道本身是否適合編程。以及本身可否像其餘程序員同樣寫 出好的邏輯和代碼。less
在小的問題上折騰、不能很快地修復問題經常讓我變的沮喪。 看到一些頂尖的編程界名人向本身的關注者坦承他們也非完美,我又找回了自信。函數
哈哈,感受好點了吧。 我不知道你感受如何,反正好幾回都讓我倍感輕鬆。工具
我最近開始了在某公司的遠程實習,我意識到隨着學習和體會,個人擔心和不安全感會慢慢改善。這篇文章記錄了初期的幾周內我面對的擔心和挑戰
我但願幫助那些努力並適應工做的新手和初級開發者,讓他們明白每一個人都會有掙扎,這對於學習是必要的。
在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 , 一個接一個。 我就像是... 我怎麼會寫這樣的代碼 ? 這他媽的居然也能正常運行?
能工做的代碼跟不能工做的代碼同樣使人費解。根據經驗,能工做的代碼會給咱們製造更多的麻煩。在翻看老代碼是,你從新思考並發現了一個更好的解決方案。 因此你就沒必要去擔憂或者鬱悶 這些代碼是以前本身或別人寫的了,由於你可能已經學到了新東西。
當一箇中級開發者或導師對咱們的工做作出改正或提出意見,很難不去在乎這個事或感到沮喪, 這種情緒在開源項目或公共平臺上可能會更加難以平衡。
可是我建議專一於特定的層面,擁抱一個學習的態度。 只有懷着虛心學習的態度,你才能學到新的概念和好的編碼實踐。 拋開自我,專一於經驗的學習或其餘人的知識的學習。
儘量大量地吸取信息,面對新事物要多問 對於信息保持一種開放、吸取的姿態,對待學習如飢似渴。 不要懼怕嘗試溫馨區以外的新的或陌生的東西。 有時候咱們習慣了本身的代碼書寫方式,而不去關注那些好的實踐或設計模式。 儘量試着去學習。這也是第一條推文所倡導的建議。
問問題是個好的注意,尤爲是當你被困住時。 先作好功課和一些努力的嘗試絕對是個好的作法,有助於提出有效的問題或可能的答案。
而後你就能獲得一個來自導師或中級工程師的回饋。 有助於找到本身的作事模式,你的導師也會以爲你有本身的思考。 開源項目的人或有經驗的人一把都樂意、願意幫助你,前提是你提出了一個有效的問題。
不要一直跟別人比,這會影響本身的表現,也會失去自信。 記住,任何一個管理者都是重新手開始的。 他們瞭解這種痛苦和挑戰。羅馬不是一天建成的--這是每一個人都必須跨越的過程。 在那個屬於本身時代到來以前,保持努力的姿式。
記住,每一個新手都處於你的位置,你不是例外。 學校所學跟真實生活中的有着很大的差別,咱們必須不斷學習才能勝任一個領域的開發任務。 每一個新手都曾處在你的位置,對你的痛苦感同身受。你只須要專一擁有一個學習的態度保持不斷學習不斷成長。
本文完,儘可能貼近原文,本着文章流暢的必要性,有所刪減,結構也作了些調整,更適合讀者閱讀。