程序員眼中最有價(jià)值的10條開發(fā)經(jīng)驗(yàn)
點(diǎn)擊上方“服務(wù)端思維”,選擇“設(shè)為星標(biāo)”
回復(fù)”669“獲取獨(dú)家整理的精選資料集
回復(fù)”加群“加入全國(guó)服務(wù)端高端社群「后端圈」
到現(xiàn)在,我已經(jīng)做了超過(guò) 21 年開發(fā),可以說(shuō),我生命中超過(guò)一半的時(shí)間都在編程,那既是我的職業(yè),也成了我的習(xí)慣。
下面是我在開發(fā)過(guò)程中學(xué)到的 10 條最有價(jià)值的經(jīng)驗(yàn)。
尤其是在開始的時(shí)候,我以為我什么都能學(xué)會(huì),在開發(fā)生涯的大部分時(shí)間里,我都是這樣想的。但是,每次我學(xué)了什么新東西,就打開了一個(gè)全新的世界,里面有不同的概念和技術(shù)。
那似乎很有吸引力,你很愿意嘗試,希望把什么都學(xué)會(huì),但這是一個(gè)沒(méi)有終點(diǎn)的旅程。如果要學(xué)的話,總是有其他的庫(kù)、框架以及其他很酷的東西可以學(xué)。
因?yàn)樗坪跤肋h(yuǎn)無(wú)法達(dá)成自己的目標(biāo),所以最終你的熱情會(huì)慢慢冷卻。最好是立足于你最擅長(zhǎng)的東西,然后因需而學(xué),即在真正需要的時(shí)候才學(xué)習(xí)新東西。這可以讓你保持清醒,維持學(xué)習(xí)的動(dòng)力。
你還可以把這一點(diǎn)應(yīng)用在任何其他的領(lǐng)域。不是什么都知道才能達(dá)成預(yù)期的結(jié)果。利用這一點(diǎn)來(lái)打造自己的優(yōu)勢(shì),在需要的時(shí)候?qū)W習(xí)。
獨(dú)立工作很好,但也會(huì)把你局限在自己的能力范圍內(nèi)。
但在一個(gè)好的團(tuán)隊(duì)中,交談和討論可以在很大程度上影響你的思維過(guò)程。問(wèn)題變得很容解決。根據(jù)我的經(jīng)驗(yàn),這種效果通常是呈指數(shù)的而非線性。
不過(guò),這也有個(gè)限值,團(tuán)隊(duì)太大了也不行。根據(jù)我的經(jīng)驗(yàn),這個(gè)限值取決于參與的人員。
站在個(gè)人的角度來(lái)說(shuō),盡量讓自己身邊的都是一些很容易相處的人。你會(huì)發(fā)現(xiàn),工作完成得比以前快,甚至也更快樂(lè)。
有一段時(shí)間,我覺(jué)得自己很聰明,追求編寫高度優(yōu)化的代碼,運(yùn)行速度越快越好。然而,很長(zhǎng)一段時(shí)間之后,當(dāng)我回過(guò)頭來(lái)看這些代碼時(shí),我全然不知道那會(huì)兒做了什么。在開始真正的工作之前,我總是要花很大一塊時(shí)間來(lái)回顧代碼。更糟糕的是:99% 的情況下,那些優(yōu)化都是不必要的。
代碼首先應(yīng)該便于人閱讀和理解。如果你認(rèn)為特定的代碼路徑可能存在性能瓶頸,就測(cè)試它。在有疑問(wèn)的路徑上添加度量執(zhí)行時(shí)間的指標(biāo),然后進(jìn)行分析。你經(jīng)常會(huì)發(fā)現(xiàn),你有疑問(wèn)的代碼實(shí)際上并沒(méi)有問(wèn)題。更多的時(shí)候,你會(huì)發(fā)現(xiàn)真正的問(wèn)題其實(shí)是完全不同的東西。
如果有些代碼真有問(wèn)題,請(qǐng)盡量添加注釋,說(shuō)明為什么優(yōu)化這段代碼。如果你覺(jué)得需要說(shuō)明自己做了什么優(yōu)化,做就是了。你可能經(jīng)常會(huì)聽(tīng)到人們說(shuō),你永遠(yuǎn)都不應(yīng)該陳述代碼做了“什么”。我的觀點(diǎn)是:如果你無(wú)法讓代碼更容易理解了,而且知道其他開發(fā)人員需要你的幫助才能理解代碼,那么添加注釋即可。
你可以聽(tīng)從反對(duì)這種方法的人,把更多時(shí)間和金錢花在未來(lái)的問(wèn)題上,你也可以忽略他們,確保每個(gè)人都有機(jī)會(huì)參與進(jìn)來(lái)做開發(fā)。團(tuán)隊(duì)是有獨(dú)立性的。便宜行事。
曾經(jīng),我就沒(méi)什么耐心,現(xiàn)在,我有時(shí)候仍然受此困擾。
我經(jīng)常要花時(shí)間修復(fù)一個(gè) Bug 或完成一個(gè)特性。經(jīng)常,學(xué)習(xí)新東西的時(shí)間會(huì)超出預(yù)期。
如果你覺(jué)得總要趕時(shí)間,那么你應(yīng)該問(wèn)問(wèn)自己,為什么會(huì)有這種感覺(jué)。
是你自己的原因嗎?那就停下來(lái)。你可以明天或后天完成。然后,下次處理類似的問(wèn)題時(shí),速度會(huì)更快。
如果是因?yàn)槟愕墓椭鳎敲磻?yīng)該想想這家公司是否適合你。
有許多管理者認(rèn)為,軟件交付越快越好。他們?cè)O(shè)定不切實(shí)際的最后期限,對(duì)開發(fā)人員的期望過(guò)高。那些管理者真是不懂軟件是如何開發(fā)出來(lái)的。
有時(shí)候,你會(huì)遇到全新的東西。你得費(fèi)點(diǎn)功夫才能想出辦法。隨著你經(jīng)驗(yàn)越來(lái)越豐富,你會(huì)越來(lái)越擅長(zhǎng)處理此類情況。
試著保持耐心,不要把自己置于壓力之下。當(dāng)你能保持冷靜,整理思路,并形成想法時(shí),你的工作會(huì)更出色。而且,可以肯定,這對(duì)你的心理健康也是有益的。
不給自己壓力,可以說(shuō)是地球上最難的事情了,你總是免不了會(huì)這樣做。那沒(méi)什么問(wèn)題。你只要盡力不要那樣做就行了。時(shí)間長(zhǎng)了,那會(huì)對(duì)你造成傷害。
持續(xù)不斷地做某件事可以幫助你成為專家。不是一次性投入 20 個(gè)小時(shí),而是每天投入 15 分鐘或 1 個(gè)小時(shí)。
不斷的重復(fù)可以讓你越來(lái)越擅長(zhǎng)做某件事。開始的時(shí)候,你會(huì)經(jīng)常查資料,逐漸地,你查的次數(shù)會(huì)越來(lái)越少。你的大腦慢慢地習(xí)得了相應(yīng)的模式并保存了下來(lái)。
技術(shù)領(lǐng)域如此寬廣,你無(wú)法把什么都學(xué)會(huì)。
其他開發(fā)人員學(xué)習(xí)的東西和你不同。在某些事情上,他們就有了知識(shí)優(yōu)勢(shì)。將此轉(zhuǎn)化為你自己的優(yōu)勢(shì)!
你同事可能比你更擅長(zhǎng)后端、CSS 或更底層的事情,而你也有自己的優(yōu)勢(shì)。你可以向他們學(xué)習(xí),他們也可以向你學(xué)習(xí)。
這絕不是你應(yīng)該嫉妒或放在心上的事。可以和別人建立聯(lián)系來(lái)豐富自己的知識(shí),這是很好的事情。你可以從別人多年的經(jīng)驗(yàn)中受益,借此增長(zhǎng)自己的知識(shí)。而且,你還可以從他人的失敗中汲取教訓(xùn),這樣你就不會(huì)再犯同樣的錯(cuò)誤。
走出去,和人建立聯(lián)系。現(xiàn)如今,這特別重要。
我曾經(jīng)以為,一份出色的簡(jiǎn)歷就可以為我打開所有的大門,但我錯(cuò)了。
在不認(rèn)識(shí)你的時(shí)候,人們會(huì)根據(jù)一張紙來(lái)評(píng)價(jià)你。但是,在人們認(rèn)識(shí)了你之后,他們可能已經(jīng)了解了你的優(yōu)勢(shì)和不足。這使得你獲取下一份工作或合同容易了許多。它會(huì)不斷地為你帶來(lái)學(xué)習(xí)、工作和互動(dòng)的機(jī)會(huì)。
如果沒(méi)有遇到困難,你可能會(huì)一直編碼或工作而沒(méi)有注意到時(shí)間的流逝,但你的大腦需要經(jīng)常休息。
休息有助于大腦恢復(fù)活力,處理先前攝入的信息。做些完全不同的事情,等等你的大腦。可以去喝杯咖啡,聊聊天,但至少要離開辦公桌。
在休息之前,你可能已經(jīng)注意到自己的效率越來(lái)越低。當(dāng)你休息完回來(lái)時(shí),你發(fā)現(xiàn)效率又回來(lái)了。你有可以高效地工作了,直到下次休息。
曾經(jīng),我并不在意休息,因?yàn)槲蚁胪瓿勺约旱墓ぷ鳌J聦?shí)證明,每隔一段時(shí)間休息一下大腦可以讓我更快地完成工作。
有一條很好的經(jīng)驗(yàn)法則是,每小時(shí)至少休息 5 分鐘,四個(gè)小時(shí)后可以休息更長(zhǎng)時(shí)間,最多 30 分鐘。更好的做法是:聽(tīng)從你的身體,據(jù)此調(diào)整休息時(shí)間。
如果你開始覺(jué)得累了,效率下降了,或者注意力不集中了,那么就休息一下。
在我職業(yè)生涯的初期,我以為,只要我付出足夠的努力就可以獲得回報(bào)。但事實(shí)證明,事情并非如此,至少在我看來(lái)是這樣。沒(méi)有人過(guò)來(lái)給我提供晉升機(jī)會(huì)或?yàn)槲壹有健N矣X(jué)得自己只是在無(wú)人注意的情況下繼續(xù)工作。
當(dāng)我可以大聲說(shuō)出自己對(duì)工作的看法,并開始與同事和管理者互動(dòng)時(shí),我的事業(yè)有了起色。如果一個(gè)問(wèn)題在某種程度上適合我,那么我肯定就可以分得該項(xiàng)任務(wù)。在某些事情上,我成了名人,經(jīng)常有人找我尋求幫助,我升職了。我在這里就不羅列早期取得的諸多成績(jī)了。反正我的經(jīng)理已經(jīng)知道了。
為什么會(huì)這樣?因?yàn)槲医?jīng)常與我的同事和經(jīng)理談工作。我從不吹牛。我如實(shí)陳述,很樂(lè)意幫助同事。私下里,我也經(jīng)常和人們交流,增進(jìn)彼此間的了解,建立起了很好的關(guān)系。
至少對(duì)于我來(lái)說(shuō),這很有效。你的經(jīng)歷可能有所不同,因?yàn)槟呛凸炯捌湮幕P(guān)系密切,但可能也值得一試。
當(dāng)我終于有機(jī)會(huì)從事專業(yè)工作時(shí),我寄予了過(guò)高的期望。我想象著自己和頂級(jí)的工程師、技術(shù)專家一起解決令人望而生畏的問(wèn)題。事實(shí)證明,我錯(cuò)了。
不要誤解我的意思,我周圍的工程師很棒,但只是和我想象的不一樣。和我們共事的技術(shù)專家近乎無(wú)聊。問(wèn)題也沒(méi)有那么難。
我了解到,所有工程師都會(huì)犯錯(cuò),也沒(méi)有人什么都知道。畢竟,他們也是人。而技術(shù)專家通常恰恰就是那些解決我們所面臨的問(wèn)題的人。
技術(shù)越枯燥,就越能幫我們解決某些特定的問(wèn)題。
開發(fā)軟件就是為了解決問(wèn)題。其中有一些會(huì)更令人厭煩。并不是每一名開發(fā)者都一直在開發(fā)將要改變世界的軟件。通常,一個(gè)為人們的日常生活提供便利的小前端,或是將文件從 A 移動(dòng)到 B 的 API,就是你賺錢的抓手。
一定要記住,并不是每家公司都有 FAANG 的規(guī)模。即使有那種規(guī)模,要解決的問(wèn)題有時(shí)也同樣令人厭煩。
還有一點(diǎn)很重要:外面有許多和你一樣的開發(fā)者。你可以發(fā)揮你的影響力,并非所有同事都和你想的那樣是頂級(jí)的。他們就是普通的開發(fā)者,工作做得非常好,而且和你懂的一樣多。
— 本文結(jié)束 —

● 漫談設(shè)計(jì)模式在 Spring 框架中的良好實(shí)踐
關(guān)注我,回復(fù) 「加群」 加入各種主題討論群。
對(duì)「服務(wù)端思維」有期待,請(qǐng)?jiān)谖哪c(diǎn)個(gè)在看
喜歡這篇文章,歡迎轉(zhuǎn)發(fā)、分享朋友圈


