討論一下職場(chǎng)的開(kāi)發(fā)者如何自我提升

如果你正在閱讀這篇文章,你可能剛剛開(kāi)始做第一份工作——祝賀你,獲得第一份工作是你在技術(shù)路上遇到的最為困難的事情之一,你一定為此付出了很多努力。
或許你還沒(méi)有工作,但是你想了解可以從第一份工作中期待些什么。
不管怎么樣,在這篇文章中我將闡述一些常見(jiàn)的擔(dān)憂和問(wèn)題,比如在工作中應(yīng)該期待什么,以及怎樣在事業(yè)上成為一名成功的開(kāi)發(fā)者。
以下是我們將要講的內(nèi)容:
在工作中可以期望什么(前幾天/幾周) 你的短期到中期計(jì)劃 成功的心態(tài) 如何成為一名優(yōu)秀的初級(jí)開(kāi)發(fā)者
在工作中可以期待什么
這一天終于到來(lái)了,你第一次作為一名新的開(kāi)發(fā)者走進(jìn)辦公室(或者參加早會(huì))。即使你很緊張,也要記住和適應(yīng)你的第一天。這是非常激動(dòng)人心的時(shí)刻!
你工作的第一天很可能做流程上的事情:配置電腦,適應(yīng)和培訓(xùn),和一些人力資源方面的事情(如銀行信息,保險(xiǎn)等)。
讓新開(kāi)發(fā)者在第一天就向產(chǎn)品中 push 一個(gè)小實(shí)踐是一種常見(jiàn)的做法。通常是一些小的任務(wù),比如在公司網(wǎng)頁(yè)上添加自己的名字和照片,或者修復(fù)網(wǎng)頁(yè)中的一個(gè)錯(cuò)字。這會(huì)測(cè)試你的計(jì)算機(jī)環(huán)境是否配備良好,給你一點(diǎn)成就感,以及讓你參與到開(kāi)發(fā)團(tuán)隊(duì)中。
你的公司希望你成功
對(duì)于一名新入職的開(kāi)發(fā)者,錄用你的公司知道你目前的知識(shí)和技能的局限,他們知道為了你的成長(zhǎng),他們需要投入大量的時(shí)間去教你和訓(xùn)練你。
記住,公司想要你成長(zhǎng)!他們站在你這邊,會(huì)投入大量的精力來(lái)發(fā)現(xiàn)、面試、錄用你。對(duì)公司來(lái)講,無(wú)論是在時(shí)間和金錢上都是一個(gè)昂貴的過(guò)程。他們不會(huì)把你晾到一邊——那將是他們投資你的一種糟糕的方式。有些技能你一開(kāi)始就能掌握,但是有些技能在專業(yè)環(huán)境之外獲取是非常困難的(也不是不可能)。
既然這是你的第一份工作,可能你從來(lái)沒(méi)有與使用源代碼管理工具或者維護(hù)生產(chǎn)應(yīng)用程序的大團(tuán)隊(duì)合作過(guò)——沒(méi)有關(guān)系!這些技能在生產(chǎn)環(huán)境中是很容易學(xué)到的。
你的第一天/周
當(dāng)你的電腦設(shè)置好了,你可以使用所有你所需要的工具。你的第一個(gè)任務(wù)可能是改進(jìn)一個(gè)小功能或者處理一個(gè)小 bug,這些只是讓你在不同的項(xiàng)目中試水。
除了純粹的技術(shù)知識(shí)之外,每個(gè)公司都有你需要掌握的領(lǐng)域知識(shí)或者“業(yè)務(wù)邏輯”(公司做什么產(chǎn)品或服務(wù),以及是如何做的)。
如果公司有多種產(chǎn)品,他們可能會(huì)在每個(gè)源代碼中給你一些小任務(wù)讓你去探索這些產(chǎn)品。可能他們會(huì)在團(tuán)隊(duì)中給你分配一個(gè)帶你或者至少在前幾周為你解答問(wèn)題的導(dǎo)師。
在最初的幾周里,你只有一個(gè)目標(biāo):學(xué)習(xí),學(xué)習(xí),再學(xué)習(xí)。
學(xué)習(xí)你正在使用的技術(shù),學(xué)習(xí)公司是如何運(yùn)轉(zhuǎn)的,學(xué)習(xí)怎樣和你團(tuán)隊(duì)的成員協(xié)作。在這一階段你的工作產(chǎn)出不重要,重要的是你的成長(zhǎng)速度。
接觸生產(chǎn)源代碼
當(dāng)你開(kāi)始接觸公司的代碼庫(kù),你可能會(huì)覺(jué)得非常困難。這是非常正常的——寫代碼比讀代碼容易得多。
生產(chǎn)代碼跟你學(xué)過(guò)的教程或者練手的項(xiàng)目有很大不同。
首先,生產(chǎn)代碼可能存在了數(shù)年,期間由不同的人進(jìn)行開(kāi)發(fā),他們有自己的編程風(fēng)格并且犯過(guò)不同的錯(cuò)誤。
此外,軟件依賴或者插件可能比你以前遇到的更多,你可能需要處理一些教程文檔中沒(méi)有講過(guò)的不常發(fā)生的事例(比如錯(cuò)誤處理)——這是一個(gè)真正的應(yīng)用程序。
一開(kāi)始你可能會(huì)不知所措,但是閱讀別人的代碼是你必須提升的技能,你會(huì)在你的整個(gè)職業(yè)生涯中用到它(在文章末尾,我會(huì)給你一些關(guān)于此技能的建議和幫助)。
最后,不要害怕尋求幫助!你的同事會(huì)支持你,在過(guò)去的某一個(gè)時(shí)候,他們可能也在問(wèn)相同的問(wèn)題。
對(duì)于新開(kāi)發(fā)者的期待
首先,公司并不會(huì)指望你能夠迅速適應(yīng),去開(kāi)發(fā)新功能。他們知道你需要時(shí)間去學(xué)習(xí)你還沒(méi)有掌握好的技術(shù),比如熟悉源代碼,如何有效進(jìn)行團(tuán)隊(duì)合作。
你的領(lǐng)導(dǎo)可能會(huì)與你碰面來(lái)制定 30/60/80 天計(jì)劃,如果他們不這樣做,你可以主動(dòng)詢問(wèn)!任何領(lǐng)導(dǎo)都會(huì)欣賞你擁有自己的工作規(guī)劃。
在起初 30 天,你可能通過(guò)寫一個(gè)小需求或者處理一些小 bug 來(lái)熟悉公司產(chǎn)品和代碼。60 天的時(shí)候,你可能會(huì)做稍微大一點(diǎn)的功能以及 bug 修復(fù)。到 90 天的時(shí)候,范圍會(huì)擴(kuò)大一點(diǎn),但是他們還是不會(huì)期望你獨(dú)自負(fù)責(zé)大的功能。
公司希望你能不斷學(xué)習(xí)和吸收身邊的信息。你不可能什么都知道,也不可能在 90 天后都知道,沒(méi)關(guān)系,一天天慢慢來(lái)。
新開(kāi)發(fā)者的思維模式
進(jìn)入一家新的公司,有很多東西你沒(méi)法控制,但是有一個(gè)你可以控制的非常重要的事情,那就是你的心態(tài)。?你每天所想、實(shí)踐以及你如何內(nèi)化發(fā)生在你身邊的事情將決定你的成功。
有時(shí)候你會(huì)困惑,有時(shí)候你會(huì)感到不知所措,有時(shí)候你甚至?xí)岩赡闶欠衲茏龅剑ㄎ掖_實(shí)這么想過(guò))。你如何消化這些想法很重要。記住,這些問(wèn)題不僅只有你會(huì)遇到,所有新開(kāi)發(fā)者都要面對(duì)。保持冷靜,你會(huì)成功的。當(dāng)你遇到令你困惑或沮喪的事情時(shí),端正你的想法:這個(gè)障礙是一個(gè)學(xué)習(xí)的機(jī)會(huì)。
這是一個(gè)了解新事物和成長(zhǎng)的機(jī)會(huì)。在這個(gè)過(guò)程中你可能會(huì)很痛苦,但不久之后,你會(huì)成為一名好的開(kāi)發(fā)者。這就是在面對(duì)新事物時(shí)需要面對(duì)的現(xiàn)實(shí)。
不要說(shuō):
“我今天被困住了 10 次”
而應(yīng)該嘗試說(shuō):
“今天我有 10 次學(xué)習(xí)的機(jī)會(huì)”
這是非常有力的轉(zhuǎn)變,你的同事會(huì)看到,你的工作表現(xiàn)也會(huì)證明。
保持頭腦清醒,不要讓失敗的感覺(jué)悄悄潛入,這不僅能幫助你在這種情況下表現(xiàn)得更好,而且還能在你擺脫這種情況時(shí)增加你的知識(shí)和技能。深呼吸,放輕松,尋求幫助并堅(jiān)持下去。
在一天結(jié)束的時(shí)候,輕松地聳聳肩。在當(dāng)天你離開(kāi)辦公室或者關(guān)閉電腦的時(shí)候,把它忘了。開(kāi)始全新的第二天,準(zhǔn)備迎接新一天的挑戰(zhàn)。
還有,記住慶祝一路走來(lái)的小的成功!隨著時(shí)間的推移,這些小成功會(huì)積累成為巨大的成功之山。
還有一件重要的事情你要記住:給你自己犯錯(cuò)誤的空間。你會(huì)搞亂代碼,你會(huì)做一些糟糕的數(shù)據(jù)庫(kù)更新(我就犯過(guò)這種錯(cuò))——這些都是可以恢復(fù)的,不是世界末日,也不是你工作的結(jié)束。任何有經(jīng)驗(yàn)的開(kāi)發(fā)人員都會(huì)犯這些錯(cuò)誤,這只是過(guò)程的一部分。
新開(kāi)發(fā)者最好的技能
你可能沒(méi)有意識(shí)到,作為一名新的開(kāi)發(fā)人員,最好的技能是學(xué)習(xí)如何去學(xué)習(xí)。
你已經(jīng)學(xué)會(huì)了如何處理困難、復(fù)雜、模糊的問(wèn)題,并將它分成塊,一步一步地解決。
無(wú)論你學(xué) JavaScript、React、Ruby 或者其他任何東西,你學(xué)到最好的事情是如何自學(xué)。多利用你掌握的這個(gè)技能并每天都實(shí)踐它。
擁抱自己的成長(zhǎng)
對(duì)于處于職業(yè)生涯任何階段的開(kāi)發(fā)人員來(lái)說(shuō),這可能是最重要的:你的事業(yè)是你自己的,你必須擁抱它,你必須管理自己的成長(zhǎng)。
有時(shí)你的公司、職位或老板會(huì)幫助促進(jìn)你成長(zhǎng),但最終還是取決于你。大多數(shù)公司都有某種固定的審查程序,可能是季度或年度。如果他們有,那很好。如果沒(méi)有,管理自己的成長(zhǎng)!定期征求上司的意見(jiàn),并按他們說(shuō)的去做。如果有人提到了你從未聽(tīng)說(shuō)過(guò)的東西,問(wèn)問(wèn)他們,或者自己去研究一下。
“微小收益的力量”

我最喜歡的書之一—— ?James Clear 的《Atomic Habits》,有一個(gè)非常棒的圖表標(biāo)題叫 “微小收益的力量”。這是一個(gè)簡(jiǎn)單的圖表,它顯示了每天 1% 的提高和 1% 的下降之間的差異。
如果你每天都有 1% 的提高,一年之后,你會(huì)比年初好 38 倍!這就是“微小收益”的力量,對(duì)于成為一名偉大的軟件開(kāi)發(fā)人員來(lái)說(shuō)也是如此。
每天你都有機(jī)會(huì)學(xué)習(xí)新東西,不管它有多小,也許是一個(gè)你不知道的數(shù)組上的新函數(shù),一種不同的 CSS 結(jié)構(gòu)化方法,一個(gè)新的文本編輯器快捷方式,或者是一些全新的東西,比如學(xué)習(xí) SQL 以及如何在數(shù)據(jù)庫(kù)級(jí)別存儲(chǔ)數(shù)據(jù)。
無(wú)論如何,每天提高 1%(大多數(shù)日子你會(huì)做得更多),你職業(yè)生涯最初幾年的成長(zhǎng)將是驚人的。
每天一頁(yè)

我曾經(jīng)在一檔程序員播客上聽(tīng)說(shuō)過(guò)一個(gè)故事,講的是一位為 Ruby 維護(hù)pg ?gem 的人。pg ?gem 是 Ruby 和 Postgresql 之間的一個(gè)接口。這是一個(gè)相當(dāng)嚴(yán)肅的事情,因?yàn)榇蠖鄶?shù) Ruby 開(kāi)發(fā)人員每天都在使用它。
他如何成為 gem 的維護(hù)者的故事非常有趣。他說(shuō)剛開(kāi)始的時(shí)候,他會(huì)打開(kāi) Postgresql 文檔并閱讀一頁(yè)——每天只讀一頁(yè)。
隨著時(shí)間的推移,他對(duì) Postgresql 有了廣泛的了解,并開(kāi)始為 ?pg ?gem 做貢獻(xiàn)。過(guò)了一段時(shí)間,他成為了 gem 的維護(hù)者。
這是積累點(diǎn)滴的完美例子——每天一頁(yè)就夠了。我們每個(gè)人都可以做到這一點(diǎn),我鼓勵(lì)你將同樣的理念應(yīng)用到你正在使用的任何語(yǔ)言或系統(tǒng)中。
實(shí)踐出真知
你以前可能聽(tīng)說(shuō)過(guò)這個(gè)短語(yǔ):實(shí)踐出真知。
我的鋼琴老師使用了不同的短語(yǔ):正確的實(shí)踐出真知。
我認(rèn)為他說(shuō)得對(duì),我可能會(huì)用錯(cuò)誤的方式練習(xí)鋼琴,如:用糟糕的技術(shù),馬虎,沒(méi)有穩(wěn)定的節(jié)奏,結(jié)果就是馬虎的鋼琴演奏。
重要的不只是實(shí)踐,而是你如何實(shí)踐。我可以一遍又一遍地練習(xí)一首歌曲的第一小節(jié),并把它寫得很完美。但如果我只關(guān)注第一小節(jié),我就永遠(yuǎn)學(xué)不會(huì)這首歌。我可能可以以世界級(jí)鋼琴家的水平演奏這首歌的第一小節(jié),但我想彈鋼琴,所以我不得不學(xué)習(xí)整首歌。
這對(duì)于開(kāi)發(fā)來(lái)說(shuō)是一個(gè)完美的對(duì)比。你實(shí)踐開(kāi)發(fā)的方式(你的日常習(xí)慣、開(kāi)發(fā)方法以及路線)決定了你將成為什么樣的開(kāi)發(fā)人員。
一開(kāi)始你會(huì)犯很多錯(cuò)誤(每個(gè)人都會(huì)犯),但是如果你對(duì)你的工作上心,你就會(huì)發(fā)現(xiàn)你有可以改進(jìn)的地方。這些都是完美的練習(xí)時(shí)刻,是學(xué)習(xí)新東西或以更好的方式做某事的機(jī)會(huì)。
當(dāng)你從現(xiàn)在開(kāi)始回顧十年的職業(yè)生涯時(shí),你想要的應(yīng)該是十年的成長(zhǎng)、實(shí)踐和學(xué)習(xí),而不是一年的成長(zhǎng)、實(shí)踐和學(xué)習(xí),經(jīng)歷十次。
所以去問(wèn)那些愚蠢的問(wèn)題,問(wèn)那些可能顯而易見(jiàn)的問(wèn)題。當(dāng)別人提到一些你不知道的事情時(shí),大膽地問(wèn)“那是什么”,我希望他們能以一種和藹可親的方式回應(yīng)。無(wú)論如何,你都要做好學(xué)習(xí)的準(zhǔn)備。
這一切都會(huì)見(jiàn)證你的成長(zhǎng)。
T 字型的人

如果你立志成為一名全棧工程師,你可能需要掌握 HTML、CSS、JS、一種你想使用的后端語(yǔ)言、SQL、Git 等。在每一個(gè)方向中都有比較容易獲取的知識(shí),你可以慢慢進(jìn)行吸收。
隨著時(shí)間的推移,你會(huì)發(fā)現(xiàn)你最喜歡哪種開(kāi)發(fā),可能是前端、后端、數(shù)據(jù)庫(kù)、運(yùn)維、設(shè)計(jì)或者這些和其他的一些組合。
隨著你事業(yè)的發(fā)展,你會(huì)開(kāi)始成為 T 字型人才。T 字型人才,就像字母 “T”,指對(duì)很多事物有廣泛而淺顯的了解,而在一些領(lǐng)域有豐富的知識(shí)和經(jīng)驗(yàn)。
這種深刻的認(rèn)識(shí)需要一段時(shí)間來(lái)建立,每一步都要比前一步付出更多的努力,這正是你在精通一門學(xué)科時(shí)的事實(shí)。在開(kāi)始的時(shí)候,在廣泛的學(xué)科領(lǐng)域里,掌握所有那些初學(xué)者容易掌握的東西。
擁有 T 字型的能力將幫助你成為一個(gè)更好的開(kāi)發(fā)者了解數(shù)據(jù)庫(kù)模式的前端開(kāi)發(fā)人員,或者了解如何在前端將數(shù)據(jù)庫(kù)表用作模型的后端開(kāi)發(fā)人員,將比那些只局限于自己領(lǐng)域的人更有見(jiàn)識(shí),也更能成為好的團(tuán)隊(duì)成員。
在開(kāi)始階段,對(duì)開(kāi)發(fā)的各個(gè)方面的小嘗試也有助于找到吸引你的東西,并給你一個(gè)軟件世界中更大的藍(lán)圖。
追隨你的興趣,保持求知欲!
給新開(kāi)發(fā)者的一個(gè)建議
現(xiàn)在我們已經(jīng)介紹了你的期望以及如何考慮它們,這里有一些實(shí)用的技巧可以幫助你成為一名優(yōu)秀的開(kāi)發(fā)人員,一名團(tuán)隊(duì)成員喜歡與之共事的開(kāi)發(fā)人員。
#1 溝通是非常非常重要的
第一天上班時(shí),你可能沒(méi)有令人驚訝的開(kāi)發(fā)知識(shí)和技能,但你可以有令人驚訝的溝通技巧。
作為一名新開(kāi)發(fā)人員,你將需要大量的幫助和指導(dǎo)。沒(méi)關(guān)系,這里有一個(gè)如何有效地尋求幫助的小竅門。
被困住是令人沮喪的(對(duì)我來(lái)說(shuō)就是這樣)。這種挫敗感很容易將你壓倒,你可以向旁邊的同事請(qǐng)教(或者通過(guò)電子郵件和聊天應(yīng)用)。
類似:
“我困住了”
“顯示錯(cuò)誤”
“頁(yè)面不能加載”
現(xiàn)在退一步,從你請(qǐng)求幫助的那個(gè)人的角度來(lái)看待這個(gè)問(wèn)題。像“頁(yè)面無(wú)法加載”這樣的信息對(duì)這個(gè)人毫無(wú)幫助。沒(méi)有上下文,沒(méi)有信息可以讓他們繼續(xù)。事實(shí)上,他們還得向你獲取更多的信息。這樣做效率非常低,而且會(huì)讓試圖幫助你的人非常沮喪。
尋求幫助的一個(gè)更好的方式是像填詞游戲一樣思考(如果你還記得 freeCodeCamp 課程中有一道這樣的題目的話):
我正在做 _____,但是在我嘗試_____的時(shí)候,卻發(fā)生了____。
我試著_____,_____和_____,我發(fā)現(xiàn)_____ 和 _____。
舉個(gè)例子:
我正在處理用戶密碼重置錯(cuò)誤的 bug,但是當(dāng)我嘗試生成密碼重置鏈接時(shí),用戶的令牌已經(jīng)為空。
我看過(guò)令牌是在哪設(shè)的,我發(fā)現(xiàn)令牌在數(shù)據(jù)庫(kù)中,但是這個(gè)令牌在文件 Y 的 X 行上丟失了。
如果你給別人發(fā)了上面的信息,他們可以理解:
你在做什么 問(wèn)題是什么 你已經(jīng)試過(guò)了什么 問(wèn)題發(fā)生在哪
對(duì)于你尋求幫助的人來(lái)說(shuō),這是一個(gè)豐富的信息。他們會(huì)非常感激你給了他們?nèi)绱饲逦男畔ⅲ⑶夷阋呀?jīng)嘗試自己去解決它,這讓他們知道你尊重他們的時(shí)間,而不是你在等待他們簡(jiǎn)單的施舍。
尋求幫助并沒(méi)有錯(cuò),但是如果有人只是幫你解決問(wèn)題,他們實(shí)際上是在剝奪你學(xué)習(xí)和成長(zhǎng)的機(jī)會(huì)。
這并不是說(shuō)你必須解決這十個(gè)問(wèn)題,然后你就再也不會(huì)遇到問(wèn)題了。作為一名開(kāi)發(fā)人員,你每天都會(huì)遇到問(wèn)題。所以最好的結(jié)果是,他們給你足夠的幫助讓你擺脫困境,但允許你自己獨(dú)自解決問(wèn)題。
#2 用好谷歌
就像在武術(shù)中施展技能一樣,作為一名開(kāi)發(fā)人員,隨著時(shí)間的推移,你將施展谷歌的才能,這就是用谷歌搜索答案的藝術(shù)。這是每個(gè)有經(jīng)驗(yàn)的開(kāi)發(fā)人員都擁有的一項(xiàng)真正的技能,它是隨著時(shí)間的推移而開(kāi)發(fā)出來(lái)的。
有時(shí),你只需要直接鍵入你所遇到的問(wèn)題(這對(duì)報(bào)錯(cuò)非常有效):

有時(shí),搜索準(zhǔn)確的錯(cuò)誤信息將產(chǎn)生正確的結(jié)果,正如上面所做的。你遇到了一個(gè)技術(shù)問(wèn)題,其他人也遇到過(guò)完全相同的問(wèn)題。
但有時(shí)你需要對(duì)搜索信息進(jìn)行一些編輯,以刪除特定項(xiàng)目的信息:

如上圖,谷歌從未在 ?gotta_catchem_all.rb ?文件中見(jiàn)過(guò) ?whos_that_pokemon_its_pikachu() ?這個(gè)函數(shù)(但是我仍然還在搜索它)。刪除特定項(xiàng)目的信息并添加通用信息將會(huì)返回更好的結(jié)果。

#3 嘗試使用計(jì)時(shí)器
作為一名新開(kāi)發(fā)人員,你會(huì)遇到很多困難。可能會(huì)出現(xiàn)以前你從未見(jiàn)過(guò)的錯(cuò)誤消息,如何處理這些情況將決定你作為開(kāi)發(fā)人員的成長(zhǎng)速度。
盡管這可能是非常令人沮喪的時(shí)刻,這些是你學(xué)習(xí)和成長(zhǎng)的時(shí)刻。你不能通過(guò)一遍又一遍地做同樣的工作來(lái)學(xué)習(xí),只有在經(jīng)歷坎坷的過(guò)程中才能成長(zhǎng)。
當(dāng)你遇到其中一個(gè)問(wèn)題時(shí),請(qǐng)花些時(shí)間嘗試并自己解決它。有些公司會(huì)把這句話作為培訓(xùn)的一部分來(lái)告訴你,比如“30 分鐘后再尋求幫助”。在其他一些公司,雖然沒(méi)有這么明確,但這個(gè)提示依然適用:盡你所能。如果你還是卡住了,那就尋求幫助。
這不僅讓你有機(jī)會(huì)弄清楚,而且也是尊重在專注于自己的工作的團(tuán)隊(duì)成員的時(shí)間。因?yàn)橐恍┠惚究梢院芸煲庾R(shí)到的事情而去打斷別人,這將對(duì)團(tuán)隊(duì)來(lái)說(shuō)是一種凈損失。
所以好好嘗試一下,然后再尋求幫助!
下面是成為一名優(yōu)秀的新開(kāi)發(fā)人員的秘訣:總是重置計(jì)時(shí)器。
假設(shè)你被困住了,嘗試了 30 分鐘,然后再去尋求幫助。下次你被困住的時(shí)候,去尋求幫助之前,再試 30 分鐘。
顯而易見(jiàn),當(dāng)你覺(jué)得你遇到了一個(gè)又一個(gè)問(wèn)題的時(shí)候,你會(huì)感到沮喪,你會(huì)想要在遇到下一個(gè)問(wèn)題之前尋求幫助,這是很自然的。
深呼吸,去快走一會(huì)兒,用全新的視角來(lái)看待每一個(gè)問(wèn)題。
(當(dāng)然,說(shuō)起來(lái)容易做起來(lái)難!)
#4 記住放松和休息
記住,當(dāng)事情開(kāi)始讓你感到難以承受時(shí),要休息一下。
去散個(gè)步,接杯水,如果可以的話,放一個(gè)晚上。有時(shí)候僅僅睡一覺(jué)或者動(dòng)一動(dòng)就可以幫助你重新調(diào)整自己。
請(qǐng)記住,每個(gè)開(kāi)發(fā)人員都曾經(jīng)歷過(guò)你這種情形,你會(huì)度過(guò)難關(guān)的。
在某種程度上來(lái)講,開(kāi)發(fā)總是令人沮喪,你永遠(yuǎn)不會(huì)停止犯錯(cuò)或者不再遇到問(wèn)題。但隨著時(shí)間的推移,你會(huì)越來(lái)越擅長(zhǎng)處理這些問(wèn)題,你解決這些問(wèn)題的信心也會(huì)增強(qiáng),所以這些問(wèn)題對(duì)你的困擾會(huì)越來(lái)越少。
#5 小黃鴨調(diào)試法
你是否曾向某人發(fā)郵件或短信描述你遇到的一個(gè)問(wèn)題,然后在你點(diǎn)擊發(fā)送之前你已經(jīng)知道了解決方法?在軟件世界里有這樣一個(gè)短語(yǔ):小黃鴨調(diào)試法。
這個(gè)名字是引用了《實(shí)用程序員》一書中的一個(gè)故事。在這個(gè)故事中,一個(gè)程序員帶著一只橡皮鴨,通過(guò)強(qiáng)迫自己一行一行地向橡皮鴨解釋代碼來(lái)調(diào)試他的代碼。
通過(guò)寫電子郵件或與另一個(gè)人交談,你被迫整理整個(gè)上下文邏輯,以便讓另一個(gè)人理解發(fā)生了什么。
用這種方式解釋這個(gè)問(wèn)題, ?你自己必須有邏輯地思考和整理。僅僅是試著為別人準(zhǔn)備上下文的行為就會(huì)讓你從不同的角度來(lái)思考問(wèn)題,很多時(shí)候你自己就會(huì)找到解決方案。
回到嘗試使用計(jì)時(shí)器,在你尋求幫助之前,試著用你沒(méi)有發(fā)送的郵件解釋問(wèn)題的概要。你很有可能在不打擾別人的情況下對(duì)這個(gè)問(wèn)題有了新的見(jiàn)解,最糟糕的情況是,你有一封很好的郵件或聊天信息要發(fā)送給他們(我也見(jiàn)過(guò)很多人把真正的橡皮鴨放在桌子上!)
#6 記筆記
這個(gè)建議可能看起來(lái)很明顯!
當(dāng)你第一次加入一家公司的時(shí)候,你會(huì)接觸到很多不同的東西:源代碼、產(chǎn)品、人、業(yè)務(wù)邏輯,不可能把這些全部記住,所以把這些東西寫下來(lái)。
當(dāng)我開(kāi)始我的第一份工作時(shí),我的老板告訴我他可以向我解釋任何事情,但是他不想解釋兩次。那時(shí)候我明白,但 8 年后的今天我真才真正明白,這是在尊重你的團(tuán)隊(duì)成員以及他們的時(shí)間。
如果他跟我解釋了某件事情,我卻忘了,我們就浪費(fèi)了彼此的時(shí)間,所以只能再問(wèn)他一遍。在他的建議下,我甚至開(kāi)始在我的顯示器上貼物理便利貼,記下我想經(jīng)常遇到和需要記住的事情,就像:
嘗試 30 分鐘 在請(qǐng)求 PR 評(píng)審之前,檢查構(gòu)建是否通過(guò) 確保你有最新的代碼
#7 每天與冒名頂替綜合癥作斗爭(zhēng)
如果你不知道什么是冒名頂替綜合癥,你的腦海里這樣想:
我不屬于這里,我是一個(gè)冒名頂替者。除了我,其他人都知道這一點(diǎn)。
這是一種你每天都要與之抗?fàn)幍男膽B(tài)。作為一名開(kāi)發(fā)人員,會(huì)有令人沮喪的時(shí)候,但是你已經(jīng)面對(duì)過(guò)挫折并努力克服了它。每個(gè)開(kāi)發(fā)人員都有這種感覺(jué),而且這種感覺(jué)也會(huì)過(guò)去的。
實(shí)際上,冒名頂替綜合癥看起來(lái)更像這樣:

“高級(jí)”和“初級(jí)”開(kāi)發(fā)者之間的一個(gè)關(guān)鍵區(qū)別
當(dāng)然,高級(jí)開(kāi)發(fā)人員比新開(kāi)發(fā)人員有更多的知識(shí)和經(jīng)驗(yàn),但這并不是他們的根本區(qū)別。
一個(gè)高級(jí)開(kāi)發(fā)人員有一個(gè)解決問(wèn)題體系。
當(dāng)我第一次開(kāi)發(fā)時(shí),我想我最終會(huì)停止犯錯(cuò)誤——停止遇到報(bào)錯(cuò)。
相反,我每天仍然會(huì)犯很多錯(cuò)誤:錯(cuò)誤的語(yǔ)法,錯(cuò)誤的文件,錯(cuò)誤的函數(shù)。
我沒(méi)有停止犯錯(cuò)誤——我只是很快就修復(fù)了。
這是一種隨著時(shí)間發(fā)展而來(lái)的技能,需要有意識(shí)地解決問(wèn)題。
這里有一些關(guān)于如何構(gòu)建這個(gè)體系的提示。
5個(gè)調(diào)試技巧
#1 不要盲目敲代碼
我看到許多新開(kāi)發(fā)人員遇到問(wèn)題時(shí)會(huì)開(kāi)始瘋狂的開(kāi)始改代碼(我是新開(kāi)發(fā)者的時(shí)候也這么做過(guò))。他們沒(méi)有系統(tǒng)的代碼評(píng)估過(guò)程,只是對(duì)代碼做大量的修改,看看這樣是否能解決問(wèn)題。
這是一個(gè)很壞的習(xí)慣,這樣做只會(huì)犯更多的錯(cuò)誤。你應(yīng)該做的是:
#2 讀錯(cuò)誤信息
這個(gè)建議似乎很明顯,但實(shí)際上是在讀取信息。錯(cuò)誤是什么?發(fā)生這個(gè)錯(cuò)誤的文件是什么?錯(cuò)誤產(chǎn)生在哪一行?這些都是至關(guān)重要的信息。
如果你不愿意快速更改代碼的話,你可以直接跳到錯(cuò)誤產(chǎn)生的地方。
這是有經(jīng)驗(yàn)的開(kāi)發(fā)人員的方式:讀取消息然后直接找到問(wèn)題所在。
這樣做會(huì)為你節(jié)省大量的時(shí)間和精力。
#3 不要把時(shí)間浪費(fèi)在不可能的事情上(或者是至少不可能的事情)

我看到的新開(kāi)發(fā)人員會(huì)經(jīng)常做這樣一件事:他們?cè)诖a中遇到錯(cuò)誤,然后在代碼中發(fā)現(xiàn)了一些他們認(rèn)為是問(wèn)題的東西,然后不相信這有問(wèn)題。舉個(gè)例子:
"我發(fā)現(xiàn)問(wèn)題出現(xiàn)在第 14 行,它會(huì)檢查 ?is_admin" ?變量是否為真,但是它不是真,然而用戶確實(shí)是管理員!
他們是這么思考這個(gè)問(wèn)題,“這怎么可以!” ?,而不是 ?“為什么會(huì)這樣?”
有時(shí)候你會(huì)遇到核心語(yǔ)言或框架的 bug,但在 99.9% 的情況下, ?你可能是做錯(cuò)了什么,或者情況并不像看上去的那樣。
有些事并不像看上去的那樣,被不可能的事情嚇到只是在浪費(fèi)時(shí)間。開(kāi)始解決問(wèn)題吧,不要在眼前不可能展開(kāi)的事情上花時(shí)間,質(zhì)疑你對(duì)情況的假設(shè)。
#4 “當(dāng)有疑問(wèn)時(shí),打印更多的信息”
我不知道最初是誰(shuí)說(shuō)的,但這是最有效的調(diào)試技術(shù)之一。當(dāng)你不知道發(fā)生了什么情況時(shí),開(kāi)始在你認(rèn)為發(fā)生問(wèn)題的地方打印程序的相應(yīng)信息。
user ?變量中有什么?HTTP 請(qǐng)求的響應(yīng)是什么?在這種情況下,我們使用了 ?if ?或 ?else ?分支嗎?我們調(diào)用過(guò)這個(gè)函數(shù)嗎?是否在此頁(yè)面?
我見(jiàn)過(guò)無(wú)數(shù)的開(kāi)發(fā)人員嘗試調(diào)試和修復(fù)一個(gè)問(wèn)題的時(shí)候(我自己也做過(guò)很多次),他們甚至沒(méi)有在正確的文件中進(jìn)行調(diào)試。快速打印或者在“控制臺(tái)”中可以顯示你實(shí)際上正在查看實(shí)際運(yùn)行的代碼。
#5 一次只做一件事
每個(gè)新開(kāi)發(fā)人員都會(huì)犯的一個(gè)常見(jiàn)錯(cuò)誤是:一次做的事情太多了。
他們想要編寫 30 分鐘的代碼,單擊運(yùn)行,然后查看結(jié)果。他們發(fā)現(xiàn),花了 30 分鐘來(lái)編寫 bug 和錯(cuò)誤,現(xiàn)在修復(fù)起來(lái)簡(jiǎn)直是一場(chǎng)噩夢(mèng)。
當(dāng)我在應(yīng)用程序中新建一個(gè)頁(yè)面時(shí),我做的第一件事就是把 hi標(biāo)簽放到頁(yè)面上。我想確定我所有內(nèi)部代碼設(shè)置是正確的,以至我可以在頁(yè)面上看到hi。我一次只做一件事。
一次只做一件事。在頁(yè)面上看到 ?“hi” 顯示。接下來(lái)獲取用戶輸入,接下來(lái)保存輸入。如果你一步一步來(lái),你就知道問(wèn)題發(fā)生在哪里,該如何解決。
即使在從事開(kāi)發(fā)工作 8 年后,我仍然是一步一步來(lái)。我知道我將會(huì)犯很多錯(cuò)誤,而且我想立即知道這些錯(cuò)誤在何時(shí)何處發(fā)生的。
總結(jié)
讀完這篇文章,你已經(jīng)了解了很多,但是你還有很多知識(shí)得學(xué),很多技能需要提升,也有很多樂(lè)趣和有益的工作在等著你。
抬頭挺胸,記得要休息。每天提高 1%,一年之后你就會(huì)對(duì)結(jié)果感到驚訝。
感謝閱讀!
原文鏈接:https://www.freecodecamp.org/news/how-to-become-an-astounding-junior-developer/
作者:John Mosesman
譯者:Miever1(GitHub ID)
校對(duì)者:Miya
掃碼關(guān)注公眾號(hào),訂閱更多精彩內(nèi)容。

