一個程式設計師要經歷什麼樣的歷程才算牛逼?


今天介紹一下學習心得,分四個階段,每個階段的想法都有一些變化。

私信【666】即可領到免費資料呦!

培養興趣

大一開始學編程語言,老師上課留了一個在線測評的網址,算是作業,寫完程序提交之後,如果對了就會在後邊得到一個100。感覺很好玩。於是把上面的題都做完了。又去做隔壁班的。基本有的題一下沒想出來,吃飯走路都在想,想著想著就想出來了。

這個階段主要學學編程語言,培養一下編程手感和興趣,熟悉計算機的語言和邏輯,如何把一個現實生活中的問題用代碼抽象出來,讓計算機可以幫助人去工作。有一次寫程序遇到一個很奇怪的現象,我一度懷疑C語言有問題,去問老師,老師指出我少寫個括號。。。

培養邏輯思維

這一階段主要是邏輯思維的培養,給你一個問題,讓你想解決辦法,通常和語言、框架沒有什麼關係。也不需要寫很多模塊。我叫這個階段信息化,即如何將一個現實世界的問題用代碼表述出來並提供解決方法。這一步也是基礎,網上各種在線測評都可以用來練手。

在這個過程中,主要開始鍛鍊算法能力,主要是要求寫一個函數,告訴你輸入是什麼,預期的輸出是什麼,你把這個函數填好。而為了填好這個函數,需要學習大量的算法和數據結構,而且要多編程,編程能力還是一門熟練工,有的題目可能想一想覺得很簡單,但是落到代碼上你會發現有很多坑。

做應用軟件

應用軟件是給小白用戶用的,比如淘寶、京東之類的。

在很長一段時間裡,我以為編程或者去實習兼職就是別人定好輸入輸出,我去填函數內容。只需要培養邏輯思維能力就可以了。其實不是。

這個階段需要熟悉如何在系統軟件上進行開發,這是大部分公司需要的編程人員的基本技能。公司追求效益,就是用最快的方式解決問題,而使用系統軟件搭建業務系統是最快,也是最高效的方式。可以把系統軟件當做磚塊,你需要做的就是搬磚,設計磚如何擺。

比如在 MySQL 數據庫上開發一個學籍管理系統,企業人員管理系統,等等。MySQL 數據庫就是系統軟件,這些管理系統就是應用軟件。

實際開發應用軟件會遇到各種問題,比如系統軟件的搭建,程序員裝系統軟件一般不是一鍵安裝,而是需要各種配置,軟件都是人開發的,需要配置哪些東西也都是別人定的,這就需要看軟件的部署文檔。

裝完系統軟件之後,第一個 HelloWorld 程序也是關鍵的一步,系統軟件的 HelloWorld 和 c 語言的 HelloWorld 不一樣,不是一個輸出就搞定了,比如 MapReduce 的 HelloWorld 是統計詞頻。系統軟件的 HelloWorld 一般需要理解系統軟件的運行原理和編程框架,只有知道這些東西才能正確的編程。

經過這個階段的鍛鍊,基本的業務邏輯就沒啥問題了。

做系統軟件

系統軟件是給程序員用的,比如操作系統、數據庫、計算框架、消息隊列等等。你可能開始聽不懂了,因為這些東西用戶看不到,但是要知道,你用到的每一個軟件,都是通過這些系統軟件搭起來的。

做系統軟件又是一個層次,系統軟件是基礎,做不好就容易崩,而且相比應用軟件,系統軟件代碼量大,邏輯複雜,需要深厚的技術積累。而做系統軟件的過程也是磨練技術,探索技術方案的一個好機會,你可以出兩個方案,理論評估一下,再實際實現對比性能,最後選擇一個“最佳”方案。

系統中很難有完美的東西,不同的設計適用的場景不一樣,因此也給了做系統軟件的人一條活路,如果只有一種場景,那只有一波人能活下來了。

總結

一個程序員,從興趣培養,學習語言開始,再到數據結構和算法的編程能力鍛鍊,基本就滿足了本科的要求。而公司還要求能夠做應用軟件,需要學會在系統軟件上進行開發。而開發系統軟件就是程序員的最高技術目標了。在任何階段,數據結構算法知識都是基礎,要想做系統軟件,深厚的編程功底是必須的。

一個程序員要經歷什麼樣的歷程才算牛逼?

私信【666】即可領到免費資料呦!


分享到:


相關文章: