高效程序員的七個(gè)習(xí)慣

一起看星星嗎 我請(qǐng)客

軟件工程師花費(fèi)大量時(shí)間通過練習(xí)leet code問題和完善簡(jiǎn)歷來獲得更好的面試通過可能水评。一旦他們最終被谷歌著隆、亞馬遜或其他公司錄用昼伴,他們可能會(huì)發(fā)現(xiàn):過去用來得到這份工作的技能與他們?nèi)粘9ぷ髦行枰募寄懿⒉黄ヅ洹?/p>

我們的團(tuán)隊(duì)受到 TechLead 創(chuàng)建的高效程序員七項(xiàng)技能的啟發(fā)茶袒。我們想提供我們自己對(duì)這個(gè)話題的看法。以下是我們總結(jié)的高效程序員的七項(xiàng)技能哈蝇。

1. 學(xué)習(xí)如何閱讀別人的代碼

閱讀別人的代碼

除了你棺妓,每個(gè)人寫的代碼都是垃圾?實(shí)際上炮赦,能夠在別人的代碼之上繼續(xù)工作是一項(xiàng)有多重好處的偉大技能怜跑。

不管以前工程師的代碼是多么混亂或者考慮不周,您仍然需要能夠擴(kuò)展它。畢竟性芬,這是你的工作峡眶。同時(shí),這個(gè)“以前的工程師”也可能是一年前的你植锉。

這項(xiàng)技能在兩個(gè)方面對(duì)你有益辫樱。第一,能夠閱讀他人的代碼是一個(gè)了解什么是糟糕設(shè)計(jì)的好機(jī)會(huì)俊庇。當(dāng)你瀏覽別人的代碼時(shí)狮暑,你會(huì)知道什么是有效的,什么是無效的辉饱。更重要的是搬男,您可以了解什么類型的代碼對(duì)于其他工程師來說是容易擴(kuò)展的,以及什么類型的代碼難以擴(kuò)展彭沼。

你需要確保在閱讀他人代碼時(shí)盡可能多地找出問題所在缔逛。這樣,其他的工程師就會(huì)知道你是一個(gè)多么優(yōu)秀的工程師溜腐。確保您提出了關(guān)于可維護(hù)代碼和良好注釋的重要性觀點(diǎn)。這進(jìn)一步顯示了你在編程領(lǐng)域的優(yōu)勢(shì)瓜喇。

您的代碼應(yīng)該設(shè)計(jì)得非常好挺益,不需要任何文檔。事實(shí)上乘寒,如果你是一個(gè)好的程序員望众,你不需要任何文檔來說明你的任何代碼。這只是浪費(fèi)時(shí)間伞辛,更需要你花時(shí)間的是編碼和開會(huì)烂翰。

能夠閱讀別人亂七八糟的代碼的話,也使得在需要更新的時(shí)候變得容易蚤氏。這有時(shí)意味著更新您缺乏經(jīng)驗(yàn)的代碼甘耿。例如,我們?cè)?jīng)將一個(gè)腳本從 Powershell 更新到 Python 再到 Perl竿滨。我們?cè)赑erl方面的經(jīng)驗(yàn)有限佳恬,但我們?nèi)匀挥凶銐虻谋尘爸R(shí)來弄清楚這段腳本到底做了什么,并做出必要的改變于游。

這一切都來自于對(duì)所有代碼的良好理解以及能夠閱讀以往的代碼毁葱。閱讀別人的代碼會(huì)讓你變得有價(jià)值,因?yàn)檫@項(xiàng)技能甚至可以讓你接手那些讓別人難堪的過度工程化的系統(tǒng)贰剥。

2. 對(duì)壞項(xiàng)目的感覺

有許多技能需要花時(shí)間去學(xué)習(xí)倾剿。我們認(rèn)為值得了解的技能之一是理解什么項(xiàng)目不值得做,什么項(xiàng)目顯然是行尸走肉蚌成。

大公司總是有非常非常多的項(xiàng)目在進(jìn)行(老板自己都不知道有多少)前痘,其中有些項(xiàng)目可能永遠(yuǎn)都不會(huì)完成凛捏,即時(shí)完成了,可能對(duì)公司也沒有什么有利的影響际度。有些可能本身就沒有任何商業(yè)意義(至少對(duì)你來說不是) 葵袭,還有一些項(xiàng)目可能存在管理不善的問題。這并不是說當(dāng)你不認(rèn)可一個(gè)項(xiàng)目時(shí)乖菱,你應(yīng)該立即拒絕這個(gè)項(xiàng)目坡锡。最嗨還是看看項(xiàng)目干系人是如何看待這個(gè)項(xiàng)目的,如果他們自己都不能正確地解釋他們對(duì)這個(gè)項(xiàng)目的最終成果會(huì)怎么樣的窒所,那么可能這個(gè)項(xiàng)目就不值得做鹉勒。

此外,有些項(xiàng)目可能過于專注于技術(shù)而不是解決方案吵取,以至于從一開始就很清楚不會(huì)有太多的影響禽额。這個(gè)技能需要你在知道一個(gè)糟糕的項(xiàng)目到底是什么之前做很多糟糕的項(xiàng)目。所以皮官,不要過早地花費(fèi)太多時(shí)間試圖辨別每個(gè)項(xiàng)目脯倒。

在你職業(yè)生涯的某個(gè)時(shí)刻,你會(huì)擁有良好的直覺與意識(shí)捺氢。

3. 避免不必要的會(huì)議

避免不必要的會(huì)議

無論您是軟件工程師還是數(shù)據(jù)科學(xué)家藻丢,會(huì)議都是必不可少的,因?yàn)槟枰軌蚺c項(xiàng)目經(jīng)理摄乒、最終用戶和客戶達(dá)成共識(shí)悠反。然而,也有一種傾向馍佑,會(huì)議會(huì)突然接管你的整個(gè)時(shí)間表斋否。這就是為什么學(xué)會(huì)如何避免不必要的會(huì)議是很重要的。

也許一個(gè)更好的詞是管理拭荤,而不是避免茵臭。這里的目標(biāo)是確保你把時(shí)間花在能夠推動(dòng)決策和幫助你的團(tuán)隊(duì)前進(jìn)的會(huì)議上。

最常見的方法就是每天抽出兩個(gè)小時(shí)的時(shí)間舅世,這是一個(gè)持續(xù)不斷的會(huì)議笼恰。通常,大多數(shù)人會(huì)在他們認(rèn)為有益的時(shí)候定期召開會(huì)議歇终。他們會(huì)利用這段時(shí)間來趕上他們的開發(fā)工作社证。

另一個(gè)避免開會(huì)以便完成工作的方法是在別人之前出現(xiàn)。就我個(gè)人而言评凝,我們喜歡早到追葡,因?yàn)橐话銇碚f,辦公室比較安靜。大多數(shù)早到的人和你一樣宜肉,只是想把工作做完匀钧,這樣就不會(huì)有人打擾你了。

這對(duì)個(gè)人貢獻(xiàn)者來說很重要谬返,因?yàn)槲覀兊墓ぷ餍枰覀兗凶⒁饬Φ臅r(shí)間之斯,而且我們不會(huì)和其他人交談。 是的遣铝,有時(shí)候你可能需要解決問題佑刷,你可能想和其他人一起工作。但是一旦你解決了阻塞問題酿炸,你只需要編碼瘫絮。它是關(guān)于進(jìn)入那個(gè)區(qū)域,在那里你不斷地在你的頭腦中有許多關(guān)于你正在做的工作的復(fù)雜的想法填硕。 如果你總是停下來麦萤,很難從中斷的地方重新開始。

4. 使用Git

使用Git

一些計(jì)算機(jī)專業(yè)的學(xué)生在他們出道的那天就開始使用 Git 了扁眯。他們不需要專業(yè)人士指導(dǎo)就可以理解每一個(gè)命令和參數(shù)壮莹。其他人在他們的第一份工作中第一次體驗(yàn)到 GitHub。 對(duì)他們來說姻檀,Github 是一個(gè)地獄般的地方命满,充斥著混亂的命令和進(jìn)程。他們永遠(yuǎn)都不是100%的確定自己在做什么(備忘錄之所以流行是有原因的)施敢。

無論您的公司使用什么倉庫系統(tǒng)周荐,如果您正確使用它狭莱,該系統(tǒng)都是有用的僵娃,如果使用不當(dāng),則是一個(gè)障礙腋妙。一個(gè)簡(jiǎn)單的commit或push就可以讓你花上幾個(gè)小時(shí)來理清一些由多個(gè)分支合并組成的大雜燴默怨。此外,如果您經(jīng)常忘記使用倉庫的最新版本骤素,那么您還將處理不那么好玩的合并沖突匙睹。

如果您需要一個(gè) Git 命令備忘單,那么就做吧济竹。只要能讓你的生活更簡(jiǎn)單痕檬。

5. 編寫簡(jiǎn)單可維護(hù)的代碼

編寫簡(jiǎn)單可維護(hù)的代碼

年輕的工程師可能會(huì)有一種傾向,那就是試圖將他們所知道的一切都實(shí)現(xiàn)到一個(gè)解決方案中送浊。有一種愿望梦谜,那就是把你對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)模式和新技術(shù)的理解用到你編寫的每一個(gè)代碼中唁桩。然后闭树,你就很有可能創(chuàng)建了一個(gè)不必要的復(fù)雜性,因?yàn)樗苋菀走^度依附于您過去使用過的解決方案或設(shè)計(jì)模式荒澡。

在復(fù)雜的設(shè)計(jì)概念和簡(jiǎn)單的代碼之間取得平衡报辱。設(shè)計(jì)模式和面向?qū)ο笤O(shè)計(jì)應(yīng)該盡可能的去簡(jiǎn)化宏觀計(jì)劃中的代碼。進(jìn)程越是被抽象单山、封裝和黑盒化碍现,就越難以調(diào)試和維護(hù)。

6. 學(xué)會(huì)說不饥侵,分清主次

這一條適用于團(tuán)隊(duì)中的任何角色鸵赫,不管你是財(cái)務(wù)分析師還是軟件工程師。但對(duì)于技術(shù)角色似乎每個(gè)人都更需要學(xué)會(huì)這一條躏升。如果您是一名數(shù)據(jù)工程師辩棒,您可能會(huì)被要求做更多類似開發(fā)方向的事情。一些團(tuán)隊(duì)需要數(shù)據(jù)提取膨疏,其他團(tuán)隊(duì)需要儀表盤一睁,其他團(tuán)隊(duì)又需要新的數(shù)據(jù)分析對(duì)接。

區(qū)分事情的優(yōu)先順序和說不佃却,是兩種不同的技能者吁,但它們緊密地交織在一起。優(yōu)先級(jí)區(qū)分意味著你只花時(shí)間在對(duì)公司有很大影響的事情上饲帅。然而复凳,說不有時(shí)只是意味著回避應(yīng)該由其他團(tuán)隊(duì)來處理的工作。對(duì)于所有角色而言灶泵,它們經(jīng)常同時(shí)出現(xiàn)育八。

這可能是一個(gè)很難獲得的技能,因?yàn)槟憧偸窍M米约旱姆绞饺M足每一個(gè)請(qǐng)求赦邻。尤其是你剛從大學(xué)畢業(yè)髓棋。你想避免讓任何人失望,而且你總是能得到大量的工作惶洲。但是按声,在大公司里總是有無窮無盡的工作量,所以一定要抓住關(guān)鍵:只承擔(dān)能做的事情恬吕。

有很多技能在面試中是沒有辦法測(cè)試和驗(yàn)證的签则,甚至在大學(xué)里都沒有教過。通常情況下铐料,這更多的是環(huán)境的限制渐裂,而不是缺乏讓學(xué)生暴露在真實(shí)環(huán)境中發(fā)展成長(zhǎng)的愿望侨颈。

7. 場(chǎng)景化思維

場(chǎng)景化思維

有一種技能在面試中很難測(cè)試,在大學(xué)學(xué)習(xí)時(shí)也很難復(fù)制芯义,那就是思考最終用戶可能會(huì)如何錯(cuò)誤地使用你的軟件哈垢。我們通常將其稱為場(chǎng)景化操作思維。

由于大部分編程都是維護(hù)性的扛拨,因此它通常意味著更改與其他代碼高度耦合的代碼耘分。即使是簡(jiǎn)單的更改也需要跟蹤對(duì)象、方法和 API的每一個(gè)可能存在引用的地方绑警。否則求泰,很容易意外地打破你沒有意識(shí)到的模塊連接。即使您只是更改數(shù)據(jù)庫中的數(shù)據(jù)類型计盒。

它還包括在進(jìn)入開發(fā)之前通過邊緣案例和整體化的高級(jí)設(shè)計(jì)進(jìn)行思考渴频。

對(duì)于開發(fā)新模塊或者微服務(wù)的場(chǎng)景就更加復(fù)雜,花時(shí)間去考慮所構(gòu)建的操作場(chǎng)景非常重要北启。想想未來的用戶可能需要如何使用您的新模塊卜朗,他們可能會(huì)如何不正確地使用它,可能需要什么參數(shù)咕村,以及未來的程序員是否會(huì)以不同的方式需要您的代碼场钉。

簡(jiǎn)單的編碼和編程只是問題的一部分。創(chuàng)建一個(gè)在你的電腦上運(yùn)行良好的軟件是很容易的懈涛。但是部署代碼可能出錯(cuò)的方式就會(huì)有很多逛万。一旦進(jìn)入生產(chǎn)環(huán)境,就很難說代碼將如何使用批钠,以及哪些其他代碼將附加到原始代碼中宇植。五年后,未來的程序員可能會(huì)對(duì)你的代碼局限性感到沮喪埋心。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末指郁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子踩窖,更是在濱河造成了極大的恐慌坡氯,老刑警劉巖晨横,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洋腮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡手形,警方通過查閱死者的電腦和手機(jī)啥供,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來库糠,“玉大人伙狐,你說我怎么就攤上這事涮毫。” “怎么了贷屎?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵罢防,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我唉侄,道長(zhǎng)咒吐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任属划,我火速辦了婚禮恬叹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘同眯。我一直安慰自己绽昼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布须蜗。 她就那樣靜靜地躺著硅确,像睡著了一般。 火紅的嫁衣襯著肌膚如雪明肮。 梳的紋絲不亂的頭發(fā)上疏魏,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音晤愧,去河邊找鬼大莫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛官份,可吹牛的內(nèi)容都是我干的只厘。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼舅巷,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼羔味!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钠右,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤赋元,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后飒房,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搁凸,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年狠毯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了护糖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嚼松,死狀恐怖嫡良,靈堂內(nèi)的尸體忽然破棺而出锰扶,到底是詐尸還是另有隱情,我是刑警寧澤寝受,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布牌捷,位于F島的核電站蕴侣,受9級(jí)特大地震影響硬毕,放射性物質(zhì)發(fā)生泄漏眷茁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一痴怨、第九天 我趴在偏房一處隱蔽的房頂上張望忙干。 院中可真熱鬧,春花似錦浪藻、人聲如沸捐迫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽施戴。三九已至,卻和暖如春萌丈,著一層夾襖步出監(jiān)牢的瞬間赞哗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工辆雾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肪笋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓度迂,卻偏偏與公主長(zhǎng)得像藤乙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惭墓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 軟件工程師花費(fèi)大量時(shí)間通過練習(xí)leet code問題和完善簡(jiǎn)歷來獲得更好的面試通過可能坛梁。一旦他們最終被谷歌、亞馬遜...
    Java進(jìn)程序猿xx閱讀 177評(píng)論 0 0
  • 軟件工程師花費(fèi)大量時(shí)間通過練習(xí)leet code問題和完善簡(jiǎn)歷來獲得更好的面試通過可能腊凶。一旦他們最終被谷歌划咐、亞馬遜...
    JAVA一方閱讀 160評(píng)論 0 0
  • 軟件工程師花費(fèi)大量時(shí)間通過練習(xí)leet code問題和完善簡(jiǎn)歷來獲得更好的面試通過可能。一旦他們最終被谷歌钧萍、亞馬遜...
    程序猿DD閱讀 1,186評(píng)論 0 12
  • 世上如此多的作家褐缠,不知為何,我還是愛三毛划煮,我喜歡三毛的隨心隨意送丰,也喜歡三毛對(duì)待每段感情的真心真意缔俄,還喜歡三毛寫作...
    Sakura櫻花小四閱讀 53評(píng)論 0 0
  • 『發(fā)現(xiàn)』第十天--《守護(hù)著...》 發(fā)現(xiàn)者:施鳴 地點(diǎn):上海崇明 時(shí)間:2017年11月19日 周日:02:51~...
    施鳴閱讀 108評(píng)論 0 0