筆記摘要
在學(xué)習(xí)專業(yè)的軟件開發(fā)知識之前,我們來談?wù)?strong>程序員修養(yǎng)。它看似與程序員練級關(guān)系不大,實際上卻能反映出程序員的工程師特質(zhì)和價值觀,決定了這條路你到底能走多遠,是精髓所在。有修養(yǎng)的程序員才可能成長為真正的工程師和架構(gòu)師,而沒有修養(yǎng)的程序員只能淪為碼農(nóng),這是碼農(nóng)和工程師的關(guān)鍵區(qū)分點。
我認(rèn)為比較重要的幾個方面:英文能力、問問題的能力、寫代碼的修養(yǎng)、安全防范意識、軟件工程和上線規(guī)范、編程規(guī)范等。
專業(yè)基礎(chǔ)篇這部分內(nèi)容主要涵蓋編程語言、理論學(xué)科和系統(tǒng)知識三方面知識。在編程語言方面,推薦學(xué)習(xí) C、C++ 和 Java 這三個工業(yè)級的編程語言。理論學(xué)科方面,需要學(xué)習(xí)算法、數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)模型、計算機原理等內(nèi)容。系統(tǒng)知識方面會講述Unix/Linux、TCP/IP、C10K 挑戰(zhàn)等專業(yè)的系統(tǒng)知識。
-
你可以選擇的幾大從業(yè)方向。
- 如果你對操作系統(tǒng)、文件系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡(luò)等比較感興趣,那么可以考慮從事底層方面的工作。
- 如果對分布式系統(tǒng)架構(gòu)、微服務(wù)、DevOps、Cloud Native 等有熱情,那么可以從事架構(gòu)方面的工作。
- 如果是對大數(shù)據(jù)、機器學(xué)習(xí)、人工智能等比較關(guān)注,那么數(shù)據(jù)領(lǐng)域可以成為你一展身手的地方。
- 如果你對用戶體驗或者交互等更感興趣,那么前端工程師也是個不錯的選擇。
- 此外,安全開發(fā)、運維開發(fā)、嵌入式開發(fā)等幾大方向中,也為你提供了豐富多彩的發(fā)展空間。
這里我只想和你說兩觀點:各種技術(shù)方向不是魚和熊掌,是可以兼得的;很多技術(shù)是相通的,關(guān)鍵是你是學(xué)在表面還是深入本質(zhì)。
軟件設(shè)計能力是每個程序員都需要具備的基本素質(zhì)。軟件設(shè)計是工程師非常重要的能力,這里描述了軟件工程自發(fā)展以來的各種設(shè)計方法,這是從工程師通往架構(gòu)師的必備技能。
并不是理論和現(xiàn)實的差距大,而是你還沒有找到相關(guān)的場景,來感受到那些學(xué)院派的知識的強大威力。
技術(shù)能力的瓶頸,以及技術(shù)太多學(xué)不過來,只不過是你為自己的能力不足或是懶惰找的借口罷了。只要你的方法得當(dāng),多花點時間在基礎(chǔ)知識上,會讓你未來學(xué)習(xí)應(yīng)用知識的時間大大縮短。以絕大多數(shù)人努力的程度,和為自己不努力找借口的程度為參考,只要你堅持正常的學(xué)習(xí)就可以超過大多數(shù)人了。
這里沒有學(xué)習(xí)技術(shù)的速成的方法,真正的牛人不是能夠培訓(xùn)出來的,一切都是要靠你自己去努力和持續(xù)地付出。
心得體會
- 注重能力的培養(yǎng)。包括英文能力,文檔寫作能力和軟件交付方面的一些能力。寫幾行干巴巴的for和while循環(huán),雖然輕松,簡單不需要動腦子,終究是個敲鍵盤的體力活。
- 選擇方向,深入學(xué)習(xí)。我想在大數(shù)據(jù)、機器學(xué)習(xí)和人工智能方面有所建樹。以后要多投入些時間和精力。
- 不要找借口。那是回避問題,逃避責(zé)任。沒有時間也是待解決的問題。不解決這個問題,其他事情都免談。
- 持續(xù)的關(guān)注和投入。