作為一個PHP的老人,我的意見有一些參考價值。我先介紹一下我的從業背景,2001年開始用php,一直做電商系統,有兩次中大型專案經驗。目前負責公司經營,cto是用java的,15年金融系統經驗。
既然你提到了內功,那就意味著不是短期可以具備的能力。但我們還是得圈住一個範圍,你要解決什麼問題?程式設計能力的內功和做好某類系統的內功顯然只有重疊部分,而不是完全相同。
所以,我暫時認定你是想提高程式設計能力或技術疑難雜症的綜合解決問題能力。
程式設計有兩個大方向,一個是工程學,另一個是演算法相關的(可以說是科學的範疇),但一般來說,很多軟體都是兩者兼而有之,但大多數業務系統還是工程學比較重要,演算法都是用現成的,基本上不用設計或發明。
所以,我重點聊聊工程學,這個也是我的專業領域。
軟體工程是指一定規模程式碼量的開發、管理、維護的相關方法論總稱。當然,10萬行以內的系統工程學的知識起的作用還不明顯,但一萬上以上的程式碼基本上都牽涉到工程學的知識。你平時遇到的系統一些奇怪的bug,程式碼的複製貼上,程式碼的規範等等問題都是屬於工程學需要考量的問題。java不同,java是有成熟的工程學規範體系。php的情況比較混亂。
所以,內功就可以概括出來了。
1. 程式碼的規範和質量,邏輯的清晰和簡單。
2. 模組分包和類包的劃分和設計。
3. 目錄的組織和劃分。
4. 質量保障工具的使用,如單元測試。
以上四點既和基本知識有關,也和你的工程經驗有關。
所以,早期要增強內功就包括,培養良好的程式設計習慣,形成自己面對複雜度較高的程式碼段的邏輯清晰和簡單化;其次、大量閱讀和解剖優秀的工程開源專案;然後,爭取較大規模的系統開發機會。
另外呢,程式設計內功跟一個人的性格也是息息相關的,一個能看清楚自己的人和一個自以為是、自我封閉的人,成長的速度也是很大區別的。不懂就問,海納百川,虛心和同行請教,注重實事求是,這也是非常重要的內功。
最後才是計算機的基礎知識,包括各種能提高你程式設計能力的方法論,如《程式設計珠璣》《程式碼大全》…各類技術書籍,比如我本人常年保持閱讀大量技術書籍的習慣。意思是,技術書籍的閱讀量多多益善。
另外,也要適當補充關於《哲學》和《文學》《歷史》你很快就會發現,程式設計需要的內功已經和一個人的基本素質息息相關了,包括思維習慣等等,哪些程式設計厲害的人,做管理和經營也是一把好手。
作為一個PHP的老人,我的意見有一些參考價值。我先介紹一下我的從業背景,2001年開始用php,一直做電商系統,有兩次中大型專案經驗。目前負責公司經營,cto是用java的,15年金融系統經驗。
既然你提到了內功,那就意味著不是短期可以具備的能力。但我們還是得圈住一個範圍,你要解決什麼問題?程式設計能力的內功和做好某類系統的內功顯然只有重疊部分,而不是完全相同。
所以,我暫時認定你是想提高程式設計能力或技術疑難雜症的綜合解決問題能力。
程式設計有兩個大方向,一個是工程學,另一個是演算法相關的(可以說是科學的範疇),但一般來說,很多軟體都是兩者兼而有之,但大多數業務系統還是工程學比較重要,演算法都是用現成的,基本上不用設計或發明。
所以,我重點聊聊工程學,這個也是我的專業領域。
軟體工程是指一定規模程式碼量的開發、管理、維護的相關方法論總稱。當然,10萬行以內的系統工程學的知識起的作用還不明顯,但一萬上以上的程式碼基本上都牽涉到工程學的知識。你平時遇到的系統一些奇怪的bug,程式碼的複製貼上,程式碼的規範等等問題都是屬於工程學需要考量的問題。java不同,java是有成熟的工程學規範體系。php的情況比較混亂。
所以,內功就可以概括出來了。
1. 程式碼的規範和質量,邏輯的清晰和簡單。
2. 模組分包和類包的劃分和設計。
3. 目錄的組織和劃分。
4. 質量保障工具的使用,如單元測試。
以上四點既和基本知識有關,也和你的工程經驗有關。
所以,早期要增強內功就包括,培養良好的程式設計習慣,形成自己面對複雜度較高的程式碼段的邏輯清晰和簡單化;其次、大量閱讀和解剖優秀的工程開源專案;然後,爭取較大規模的系統開發機會。
另外呢,程式設計內功跟一個人的性格也是息息相關的,一個能看清楚自己的人和一個自以為是、自我封閉的人,成長的速度也是很大區別的。不懂就問,海納百川,虛心和同行請教,注重實事求是,這也是非常重要的內功。
最後才是計算機的基礎知識,包括各種能提高你程式設計能力的方法論,如《程式設計珠璣》《程式碼大全》…各類技術書籍,比如我本人常年保持閱讀大量技術書籍的習慣。意思是,技術書籍的閱讀量多多益善。
另外,也要適當補充關於《哲學》和《文學》《歷史》你很快就會發現,程式設計需要的內功已經和一個人的基本素質息息相關了,包括思維習慣等等,哪些程式設計厲害的人,做管理和經營也是一把好手。