七年程序员生涯,我学到最重要的 6 个教训,别再中招!
時(shí)間如梭,不是嗎?
我的編程之旅始于 2012 年,當(dāng)時(shí)我還只是個(gè) C++ 編程實(shí)習(xí)生。說實(shí)話,我根本不知道自己在做什么。即使是到了現(xiàn)在,這種狀況依然沒有改變。不過,在這個(gè)過程中,我確實(shí)學(xué)到了很多東西。
問題來了:在編程過程中,什么語言才是最重要的?
是英語?西班牙語?中文?波蘭語?還是其他在工作中用來與其他人進(jìn)行溝通的語言?
與人溝通比與機(jī)器溝更重要
編程是一項(xiàng)團(tuán)隊(duì)活動。很少有出色的軟件產(chǎn)品是完全由一個(gè)人從頭到尾做出來的(CodeSandbox 算是一個(gè),但后來 Ives 還是請了一些人),大多數(shù)產(chǎn)品需要一個(gè)團(tuán)隊(duì)來打造。
溝通技巧可以成就一個(gè)項(xiàng)目,也可能會毀了它。相比存粹的技術(shù),軟技能對一個(gè)項(xiàng)目的成功起到更重要的作用。試想一下,你把世界上最好的 5 個(gè)數(shù)據(jù)庫專家都請來了,但如果他們各自為政,互不溝通,最后他們會給你搞出 5 個(gè)不同的 MySQL、Aurora 或 MongoDB 實(shí)例。
了解你在做什么以及為什么
人一旦有了目標(biāo)感,就會感覺好一些,這在工作中也是一樣的。
作為軟件開發(fā)人員,你的目標(biāo)不應(yīng)該只是把 JIRA 中的問題變成 JavaScript,或者把 Trello 中的項(xiàng)目變成 C#。
你的目標(biāo)應(yīng)該是用代碼來解決問題。
如果你對正在構(gòu)建或維護(hù)的系統(tǒng)很了解,就可以拋開技術(shù)做決策。這個(gè)功能是必需的嗎?它解決了什么問題?可以用其他方式來解決這個(gè)問題嗎?真的有必要解決這個(gè)問題嗎?
這些都是業(yè)務(wù)問題,如果你想把工作做好,不僅要理解這些業(yè)務(wù),還要主動參與其中。即使你在公司里不是 C 級別的人,也不影響你這么做,至少,你要明白自己在做什么。
如果代碼評審讓你感到有壓力,那肯定是打開方式出錯(cuò)了
雖然我們沒有必要那么想,但把自己寫的代碼放出來讓其他人“圍觀評論”,這種體驗(yàn)跟寫代碼還真是有點(diǎn)不一樣,也難怪人們會感到焦慮。
有人因?yàn)椴豢踩淌苣承┤说拇得蟠?#xff0c;選擇在這個(gè)人不在公司的時(shí)候提交代碼評審。試想,如果你在一個(gè)新手的 PR 底下轟炸式地給出 50 個(gè)不那么友好的評論,你其實(shí)不只是在證明自己作為一名高級程序員的優(yōu)越感,也是在證明你不是一個(gè)“好人”。
那么,正確的打開方式應(yīng)該是怎樣的?
你可以私底下找那個(gè)人,跟他好好聊聊,問他為什么把代碼寫成那樣。
其實(shí)大多數(shù)人也不想把代碼寫臭,如果你看到臭代碼,可能其中會有一些不為人知的原因。當(dāng)然,也有可能是因?yàn)樗麄兊木幊碳寄苓€不夠好,這個(gè)時(shí)候你要承擔(dān)起“導(dǎo)師”的角色,給他們提供一些指導(dǎo)。
未雨綢繆
墨菲定律:會出錯(cuò)的事情就一定會出錯(cuò)。
這就像是一個(gè)真理,在設(shè)計(jì)系統(tǒng)時(shí)總會有一些東西會出錯(cuò)。
在開發(fā)一個(gè)登陸表單時(shí),你要假設(shè)會有一些居心叵測的人把整本書的內(nèi)容拷貝到密碼輸入框里。
在開發(fā)一個(gè)可見即所得的窗口時(shí),你要假設(shè)會有人試圖搞破壞,而且他們通常都能如愿以償。
如果系統(tǒng)中使用了數(shù)據(jù)庫,它一定會在某個(gè)時(shí)刻掛掉。如果你沒有嘗試使用備份來恢復(fù)數(shù)據(jù)庫,那它們就算不上是備份。
如果你在給別人做演示,請確保這個(gè)演示在任何情況下都能正常進(jìn)行,哪怕把它翻個(gè)底朝天,甚至是把它丟到水底下。
不要害怕讓別人看到自己的無知
作為高級程序員的一個(gè)好處是,當(dāng)別人問一些我不懂的問題時(shí),我可以很淡然地告訴他們:
這個(gè)東西我也不懂,因?yàn)橐郧皼]有遇到過,不過我可以看一下,然后再告訴你。
當(dāng)我還是一個(gè)初級程序員的時(shí)候,我總是很害怕別人會看到我的無知。經(jīng)過幾年的磨練,我才明白,如果碰到了自己不懂的東西,說明學(xué)習(xí)的機(jī)會來了。終身學(xué)習(xí)絕對不只是一個(gè)“口頭禪”,它應(yīng)該被付諸實(shí)踐。如果大家對Python感興趣的話,可以加一下我的薇信哦:abb436574,免費(fèi)領(lǐng)取一套學(xué)習(xí)資料和視頻課程喲~
分享
等你把不懂的東西搞懂了,就要把它們分享出來。寫一篇博客,錄個(gè)教學(xué)視頻,或者在公司里搞個(gè)分享演講……你不要認(rèn)為你剛學(xué)會的東西別人也都懂,即使是一個(gè)非常資深的人,他們也能從初級人員身上學(xué)到東西,反過來也是。
分享的過程其實(shí)是一個(gè)檢驗(yàn)?zāi)闶欠裾嬲斫馑鶎W(xué)的東西的過程。有句話說得好:
當(dāng)你在教一個(gè)人的時(shí)候,其實(shí)有兩個(gè)人在學(xué)。
總結(jié)
以上是生活随笔為你收集整理的七年程序员生涯,我学到最重要的 6 个教训,别再中招!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习中的MLE、MAP和贝叶斯估计
- 下一篇: matlab中大括号的使用 { },可