優(yōu)秀程序員壓箱底技能:把復(fù)雜問題變得簡單
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)
優(yōu)秀的程序員能讓編程變得很簡單。筆者仍然記得在之前的項(xiàng)目中一位技術(shù)架構(gòu)師說過:“軟件開發(fā)人員的作用是讓事情變簡單,他們必須為復(fù)雜的問題提供輕松的解決方案。”
編程是一門藝術(shù)。筆者在這個(gè)行業(yè)已經(jīng)快五年了,這些年來遇到過許多形形色色的程序員,也從他們身上學(xué)到了很多。本文就將分享筆者五年來從優(yōu)秀程序員身上學(xué)到的經(jīng)驗(yàn)。
1.關(guān)注進(jìn)程而非結(jié)果
大多數(shù)年輕程序員只關(guān)注輸出,但產(chǎn)生輸出并不一定意味著你已經(jīng)了解了程序。在軟件領(lǐng)域,每天都有新的挑戰(zhàn)。了解程序至關(guān)重要,只有這樣你才能用上自己的經(jīng)驗(yàn)解決問題。“開始關(guān)注如何解決問題,而不是應(yīng)該輸出什么。”從長遠(yuǎn)來看,這將引導(dǎo)你成為一名更好的程序員。
2. 避免學(xué)而不思
筆者在剛開始編程時(shí)有一個(gè)習(xí)慣,每當(dāng)陷入困境總是會(huì)向前輩求助。有一天,領(lǐng)導(dǎo)告訴我:“我們都可以幫助你,但不要指望別人什么都告訴你。如果你每次都尋求幫助,是學(xué)不到多少東西的。試著鉆研問題,自己努力一陣子。”
這個(gè)建議對(duì)筆者的程序員職業(yè)生涯幫助很大。當(dāng)被代碼的難關(guān)困住時(shí),不應(yīng)該失去信心,在向他人求助之前先試著自己加倍努力,這將幫助你成為一名出色的程序員。
3.首先要理解自己的代碼
正如筆者之前所說,程序員需要為復(fù)雜的問題提供簡單的解決方案,但不需要為了讓人印象深刻而刻意編寫復(fù)雜的代碼。
如果人們?cè)趲滋旎驇讉€(gè)月后再看自己的代碼,他們經(jīng)常會(huì)忘記自己在寫什么。想象一下,如果連他們都很難回憶起自己所寫某段代碼的作用,其他人試圖理解這段代碼豈不是更難以想象?
注釋有助于回憶起一段代碼在應(yīng)用程序中的作用,試著在必要的地方寫一些簡短而有幫助的注解。優(yōu)秀的程序員編寫的代碼往往簡單而有效,對(duì)其他程序員來說也很易讀。
4. 想出多種解決方案
優(yōu)秀的程序員在找到一個(gè)問題的多種解決方案之前絕不會(huì)停止探索,他們總是想出至少兩種方法來解決問題。
這是一種很好的做法,因?yàn)槟憧梢愿鶕?jù)時(shí)空復(fù)雜度和其他因素從多個(gè)解決方案中進(jìn)行選擇。當(dāng)你試圖從不同的角度看待問題,從而找到更多的解決方案時(shí),這種方法還可以增強(qiáng)你的邏輯思維。
即使無法找到多種解決方案,也可以通過諸如Stack Overflow、CodeProject或GitHub等網(wǎng)站尋找替代的方法。
5. 多讀代碼,讀好代碼
“先讀后寫”這句話對(duì)于編程也很適用。閱讀別人的代碼會(huì)給你帶來更多的想法,讓你受益匪淺。優(yōu)秀的程序員會(huì)花相當(dāng)多的時(shí)間進(jìn)行代碼檢查,這有助于他們收集一些東西:
- 更多的代碼知識(shí)
- 其他程序員的編碼技能
- 解決特定問題的不同方法
- 提高了程序員的邏輯思維
程序員應(yīng)該養(yǎng)成閱讀代碼的習(xí)慣,這有助于他們?cè)诼殬I(yè)生涯中成長。
6. 改進(jìn)之前實(shí)現(xiàn)過的方案
這個(gè)方法是筆者在做程序員的第三年發(fā)現(xiàn)的,筆者看到一位前輩在對(duì)之前的需求做代碼變更,盡管該需求已經(jīng)結(jié)束了。
筆者問他在一切正常的情況下為什么要改變邏輯。他回答道,多年來他已經(jīng)形成了這種做法:每當(dāng)工作負(fù)擔(dān)減輕時(shí),他就試圖找出更好的方法來解決他已經(jīng)解決了的問題。如果他發(fā)現(xiàn)了一個(gè)比已經(jīng)應(yīng)用的解決方案更好的方案,他就會(huì)創(chuàng)建一個(gè)變更請(qǐng)求并更新它。這種做法有助于提高專業(yè)水平,還可以優(yōu)化代碼。
7. 學(xué)無止境,上下求索
一個(gè)優(yōu)秀程序員的最典型的品質(zhì)在于他們對(duì)知識(shí)的不斷探索。編程是一個(gè)充滿挑戰(zhàn)的職業(yè),你需要不斷學(xué)習(xí),與時(shí)俱進(jìn),需要像更新他們的軟件一樣更新自己,以保證代碼的高質(zhì)量。優(yōu)秀的程序員通過大量的在線資源,如技術(shù)博客、YouTube頻道或編碼論壇來實(shí)時(shí)更新自己。
在過去的五年里,這些做法促進(jìn)了作為一名程序員的筆者成長,希望也能對(duì)你有所幫助。