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