當(dāng)你把它變成愛好的時(shí)候,你獲取知識(shí)的速度會(huì)比之前要快得多。初級(jí)的開發(fā)者不必急于搞懂那些超越自己理解能力之外的東西。編程的世界是很廣闊的,在這樣一個(gè)龐大的學(xué)科中,知識(shí)的盲點(diǎn)會(huì)阻礙你的進(jìn)步。給希望在編程生涯中有進(jìn)一步成長的中級(jí)開發(fā)者提出以下幾點(diǎn)建議,希望你們有所收獲:
1.學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)無處不在。你使用的語言可能有自己的數(shù)組,哈?;蛘呙杜e類型。當(dāng)然,這些并不是構(gòu)造數(shù)據(jù)的唯一方法。還有二叉樹,堆,圖,k叉樹,和許多其他類型。了解適用的最佳的數(shù)據(jù)結(jié)構(gòu)可以使程序更高效、更容易維護(hù)。數(shù)據(jù)結(jié)構(gòu)的知識(shí)是共性的,適用于所有的編程語言。
2.研究算法
數(shù)據(jù)結(jié)構(gòu)給我們提供高效快速的方法來存儲(chǔ)數(shù)據(jù),算法是動(dòng)態(tài)的數(shù)據(jù)結(jié)構(gòu)。研究算法可以使程序員用新的巧妙的方法來解決問題。每個(gè)問題總會(huì)有多種解決方法,每個(gè)算法都有自己的時(shí)間和空間復(fù)雜度。掌握多種算法可以讓我們?cè)诮鉀Q問題的時(shí)候盡快找到最佳的解決方案。
3.掌握IDE的使用
你的開發(fā)環(huán)境直接影響你編碼的速度、質(zhì)量和樂趣。沒有最完美的IDE,你最喜歡的、用起來最舒服的編輯器就是最好的。每種編輯器都有很強(qiáng)大的功能,每天學(xué)習(xí)一些你選擇使用的編輯器的一些新功能。通過快捷方式和自動(dòng)工作流節(jié)省的時(shí)間會(huì)直接影響你的產(chǎn)出。
4.要擅長debugging
每個(gè)程序都有bug,然而沒有人愿意在編程的時(shí)候在debugging上花費(fèi)整天的時(shí)間。要熟練使用斷點(diǎn)和調(diào)試器,做到在5分鐘之內(nèi)快速解決bug。擅長debugging的程序員通常是快樂的。將一個(gè)簡單的程序掛到調(diào)試器中,然后使用簡單的斷點(diǎn)來回移動(dòng)程序運(yùn)行。
5.和朋友一起開發(fā)
和朋友一起編程是學(xué)習(xí)新技巧、討論不同方法、并從同行那里得到反饋的絕佳方式。與朋友一起發(fā)展同時(shí)也可以加強(qiáng)團(tuán)隊(duì)工作中最重要的方面:有效的書面和口頭交流。
如果本地朋友找不到的話,可以嘗試給GitHub上的開源項(xiàng)目貢獻(xiàn)代碼。
6.閱讀其他人的代碼
音樂家通過學(xué)習(xí)偉大的音樂作品來學(xué)習(xí)。畫家學(xué)習(xí)藝術(shù)史并在周末旁聽畫廊開幕。作家們讀他們能找到的每一篇文獻(xiàn)。要想做得更好,就要熟悉這門學(xué)科的偉大著作。在編程的路上,盡可能多的閱讀代碼。實(shí)踐、閱讀和理解高人的代碼是提高編程水平的最有效方法。
7.編寫多種類型的程序
世界很大,同時(shí)它有很多各種不同的待解決的問題。每個(gè)問題都有軟件可以提供的解決方式(軟件正在吃掉世界),你能創(chuàng)造的程序是沒有限制的。打破你的舒適環(huán)境,探索一個(gè)完全不同的編程宇宙。
Web開發(fā)?試著寫一個(gè)Android程序吧。原生開發(fā)?試著寫一個(gè)分布式程序吧。后端開發(fā)?探索Arduino嵌入式代碼吧。
8.學(xué)習(xí)一門新的語言
學(xué)習(xí)一門新的語言可以延伸你的思想。新語言的結(jié)構(gòu)和語法會(huì)讓你對(duì)之前的語言有更深的理解,有新的感覺。學(xué)習(xí)一門可以從根本上改變你編程思想的語言。這些好處不止是在語法層面,它開辟了新的思考方式和解決方案的方法。
9.維護(hù)一個(gè)blog
把它看作是一個(gè)職業(yè)生涯中的興趣、挑戰(zhàn)和記錄成就感的技術(shù)期刊。持續(xù)寫博客會(huì)讓你更有趣研究新的有意思的技術(shù)。每天寫作也會(huì)提高你的書面溝通能力。
10.勿忘初心
想要更好地進(jìn)行編程的動(dòng)機(jī)是什么?“更好”對(duì)你意味著什么?它是否意味著編寫運(yùn)行更快,bug更少,用戶量更多的app?或者給客戶帶來快樂?