我是如何學習軟體開發的

曹化宇發表於2014-11-13

這是一個科技高速發展的時代,也是新技術層出不窮的時代,對於軟體開發人員或想要成為軟體開發人員的朋友來講,也許面對眼花繚亂的技術,學習起來無從下手,本文,我將結合自己近二十年軟體開發的學習經歷,和大家分享一下。首先,先說明一下我當前進行開發的主要兩個技術環境:

  • .NET環境,主要使用C#程式語言,常開發的專案型別是“視窗+資料庫”或使用ASP.NET開發Web專案(這也要求對HTML、CSS、JavaScript和美工有一定的研究)。
  • iOS App,使用Objective-C加Sprite Kit開發一些小遊戲。

這有些跨界了哈!^-^。那麼,在這些年的學習過程中,我的學習方法是什麼呢?我想,簡單地說就是看書、實踐、思考、廣泛瞭解各種技術,下面一一道來。

首先是看書。相信有很多不願意看書的朋友,他們的理由主要是“沒錢、沒時間、有網路”。好吧,前兩個一定是站不住腳的,一個月花一百元買書,每天看三十分鐘,週末每天看兩個小時,應該不是什麼難事,主要是你願不願意了,對吧?至於網路的情況,大家也許認為在網路上什麼都有,還需要看書嗎?那我們就討論一下要看書的理由。

我們學習一項開發技術,例如一種新的程式語言,我相信只在網路上看資料是不夠的,一種技術是一個完整的體系,如果沒有系統的學習,是不可能深入地掌握的,此時,看書就是一個很好的選擇,一本書可以系統地介紹一種技術,對於初學者來說,完整的、系統的學習是非常重要的,這有助於我們打下堅實的基礎,所以,一定要看書。

實踐。在這裡,實踐不只是實現書中或網路上的示例,更不是隨便貼上程式碼來進行開發。實踐應該是實戰演練,即使是沒有人出資購買我們的軟體,也應該全身心地去做一個或多個專案,把這個專案當成藝術品一樣精雕細琢,讓專案的設計越來越合理、越來越完美。在這一過程中,我們才會對開發技術和方法有著更深入的理解。

思考。我們知道,實現一個軟體功能會有很多技術和方法可以使用,問題是,我們應該選擇哪一種?書中或網路中的示例是不是合理呢?是不是適合我們的專案呢?此時,敢於提出質疑、敢於挑戰權威、敢於嘗試自己的方法。這些就要求我們需要多多思考,並用實踐來驗證一切,來驗證自己或他人的錯誤和不足,這就是軟體開發,是一項創造性的工作,如果沒有質疑、沒有創新,何來的發展呢?

當我們在一種環境下的開發技能有了很大的提高時,我們要做的就是進一步的學習,廣泛瞭解各種技術和方法學。軟體開發不僅僅是編寫程式碼,而軟體架構師也不是高高在上,作為一名軟體開發者,即使我們現在的工作用不上,我們也要從更高、更廣的層面來學習和理解軟體的開發;學習更多的知識,擴充更廣的知識面,對於我們自身的發展和進步,無論是事業上的,還是個人修養上的,都是一種促進。

也許你想知道我都學習了些什麼,那麼,我就列出來吧。首先,介紹一下自己這些都學習了些什麼開發技術。我是從1995年開始學習軟體開發的,當時是BASIC和C、C++為主,還學習了FoxPro(說實話,當時真不明白資料庫幹什麼用的)。很快,Windows當道,視窗開發很自然的選擇了Visual Basic,逐漸對軟體開發有了新的認識。再後來,就基本完全是自學了。學習面很廣,相信很多朋友都不會相信,這些內容包括:Visual Basic.NET、C#、Java、PHP、HTML、CSS、JavaScript、Objective-C、Swift、Sprite Kit、Access、SQL Server、MySQL、設計模式、人機互動、軟體架構、設計心理學、……

如果說我對上這些內容都非常地精通,你一定不會相信,實際上,我自己也不會相信!^-^。很多的內容實際上只是感興趣,去了解一下,但是,我這是不專注嗎?我想不是!

就從程式語言方面談談吧。這是軟體實現的基礎,無論開發什麼軟體,我們需要編碼來實現。再看看流行的一些程式語言,VB、C#、Java、Objective-C、PHP、JavaScript、……。從程式語言層面上講,它們有多大的區別呢?基本的概念都差不多,實際上,我經常會將不同程式語言的特點和優勢應用到不同型別的軟體開發中,收穫還是非常大的。舉個簡單的例子,當我最初接觸設計模式時,相關的書籍使用的是C++或Java,而我就可以通過對這些語言的瞭解,很自然的通過C#來實現。

除了開發技術,我還對科技、汽車、軍事、歷史等領域感興趣,這對軟體開發沒有幫助嗎?當然不是,在寫技術類文章或書籍時,我可以把示例做的更生動,比如模擬戰爭遊戲,這樣一來,可讀性、趣味性不是更好了嗎?

所以,作為一名軟體開發者,眼中不能只有程式碼,多看看書,多學習各方面的知識,對我們來說是幸福的,是快樂的,是可以幫助我更好的成長的。

希望我的經歷和感受對初學者有些幫助,不對的地方也請大家多多批評指正,讓我們共同進步吧!

相關文章