1. 程式人生 > >伊始--淺談C++程式設計師進階歷程(一)

伊始--淺談C++程式設計師進階歷程(一)

最近看了一篇《回答阿里社招面試如何準備,順便談談對於Java程式猿學習當中各個階段的建議》,心中有一些感觸。

在看這篇文章前幾周,還挺迷茫的。不知不覺也工作了很久,雖然在上班期間,每天或多或少地都在寫程式碼,但是很多都是僅僅增加熟練度,或者說是將別人現有的演算法套進來,造輪子,只不過把輪子改造成自己的風格罷了,本質上程式碼差別並不大,並不會有多少出彩的地方。

一個有經驗的程式設計師在實現基本功能後,就需要進行效能的改善,最後是對軟體的優化,這是逐層遞進的。在這些逐步完成的過程中,對程式進行重構,有時就顯得極其必要,關於重構的好處,是不言而喻的,在重構後的程式碼至少看起來不會比重構前噁心,之所以用噁心這個詞,是覺得當一個程式越寫越大,也就越寫越亂的時候,自己看起來都很難進行調整和改動,尤其是很長時間才回顧的時候,很可能自己都忘記當初為什麼這麼寫,而對程式碼的重構,則可以相對避免這個問題。

程式設計師的發展路線,目前我的理解是:
初級程式設計師–中級程式設計師–高階程式設計師–系統分析師–架構設計師–專家

1. 初級程式設計師

這種層次的是最普遍的,基本上懂得計算機的基本操作,瞭解計算機專業的一些基礎知識,掌握一門基本的程式語言如C/C++,Java,php等等,會編寫一些簡單的程式。一般來說,就達到這一層次的水平了。

大部分計算機專業出來的或者培訓學校出來,以及一些自學的基本就可以達到這個水平。作為程式設計師初入職場,都是新人,這種層次的程式設計師一般進企業後,都會學習並熟悉公司常用的開發技術,設計的工具和框架,熟悉公司的開發流程規範,並且慢慢形成自己的程式碼風格。

2. 中級程式設計師

初級程式設計師進階到中級程式設計師比較簡單,主要在獨立性方面,初級程式設計師面對一個稍微大型一點,複雜一點的程式就會不知所措,不知如何下手,而中級程式設計師一般能夠獨立承擔開發工作,實現基本功能方面,不是很大的問題。

以C/C++程式設計師為例,中級程式設計師一般可以做到以下方面:熟練掌握C/C++程式語言,掌握C標準庫,熟悉常用的資料結構演算法,掌握STL的基本實現和使用方法,掌握多執行緒程式設計方法,熟悉socket網路程式設計,會一些簡單的測試方法。

3. 高階程式設計師

高階程式設計師相對來說,就需要有一定的工作經驗,已經能獨立負責某個小專案或者大專案裡的子系統或者某一個模組,在實現功能的基礎上,更注重效能和優化工作。在程式的維護性和拓展性是中級程式設計師不可比擬的。

這一層次的程式設計師非常熟悉軟體工程的流程,熟練使用面向物件的設計知識,熟悉設計模式並可以比較自如地使用合適的設計模式,並且對軟體有質量控制的意識,對於作業系統都有個比較清晰的認識。

以C++程式設計師為例,高階程式設計師需要了解C++編譯器的原理和實現機制,瞭解作業系統中的內部機制如記憶體管理、程序和執行緒的管理機制,瞭解處理器的基礎知識和程式碼優化的方法,此外還需要更深入地學習更多的資料結構與演算法,掌握更深入的測試和除錯知識以及質量管理和控制方法,對各種設計方法有更好的理解等。

4. 系統分析師

步入這一層,需要理解分析的就比較多了,已經不滿足於能實現系統功能,試圖在分析系統上進行對系統的改進。

系統分析師需要了解軟體架構設計、互動設計、面向方面的設計、面向使用的設計、面向資料結構演算法的設計、情感化設計等,並且需要去學習各種經驗和技巧,會在各大專業論壇裡求經,學習一些知名的開源專案的原始碼實現。

5. 架構設計師

架構設計師不管在廣度和深度,都在特定領域具備了相當的積累。除了自身專業知識、技能和實踐經驗的積累,還能夠從中總結沉澱出有效的方法論,引導和組織團隊成員一起進行推廣應用。積極主動的輸出自身經驗,為跨團隊專案提供技術支援。

6. 專家

能混到專家的就不用多說了,一個字,牛。簡單來說,就是在計算機方面,在其涉及的領域內,你完成不了, 他可以完成,你可以完成的,他完成得比你好,他接手的任務或許都可以成為業界標杆。

簡單來說,層次不同,境界不同,在沉澱中一步步成長進步,是可以一點點進階的。共勉!