我是如何學習軟體開發的
這是一個科技高速發展的時代,也是新技術層出不窮的時代,對於軟體開發人員或想要成為軟體開發人員的朋友來講,也許面對眼花繚亂的技術,學習起來無從下手,本文,我將結合自己近二十年軟體開發的學習經歷,和大家分享一下。首先,先說明一下我當前進行開發的主要兩個技術環境:
- .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#來實現。
除了開發技術,我還對科技、汽車、軍事、歷史等領域感興趣,這對軟體開發沒有幫助嗎?當然不是,在寫技術類文章或書籍時,我可以把示例做的更生動,比如模擬戰爭遊戲,這樣一來,可讀性、趣味性不是更好了嗎?
所以,作為一名軟體開發者,眼中不能只有程式碼,多看看書,多學習各方面的知識,對我們來說是幸福的,是快樂的,是可以幫助我更好的成長的。
希望我的經歷和感受對初學者有些幫助,不對的地方也請大家多多批評指正,讓我們共同進步吧!
相關文章
- 我是否適合學習軟體開發技術?
- 我是如何從零開始學習前端的前端
- 我是如何學習小程式的
- 我是如何學習 Linux 的Linux
- 我是如何從通訊轉到Java軟體開發工程師的?Java工程師
- 學習軟體開發的正確姿勢
- 軟體開發是什麼、如何做
- 如何去學好軟體開發呢?
- 學習軟體開發時我面臨的兩大挑戰 - Kinyanjui WangonyaUIGo
- 軟體測試學習教程——JDBC開發JDBC
- [譯] 最近兩個月中我是如何開始學習 AI 的AI
- 軟體開發的是什麼
- 我是如何學習自動化
- 【譯】我是如何學習任意前端框架的前端框架
- 軟體測試如何從零開始學習
- 看開源軟體是如何盈利的?
- 軟體開發學習的5大技巧,你知道嗎?
- Vacanti:我是如何學習程式設計的程式設計
- 短影片軟體開發是如何實現美顏功能的
- 學地球物理的如何搞好軟體開發
- 我不能勝任開發開源軟體
- 學習Java軟體開發的就業前景怎麼樣Java就業
- 零基礎學習java軟體開發攻略Java
- 我是如何從Web開發轉向移動開發的?Web移動開發
- 【分享】—如何學習軟體測試
- 我的軟體開發中經驗教訓
- 我做軟體開發的核心思想考量
- 我是如何自學Android的 學習資料分享Android
- 我是如何學習計算機程式設計的計算機程式設計
- Web開發學習筆記——瀏覽器是如何工作的Web筆記瀏覽器
- 淺談短影片軟體開發是如何搭上時代發展“快車”的
- 軟體開發的哲學思考 (轉)
- 軟體開發的成本估算—我的程式碼行
- 如何開發不可維護的軟體?
- 華瑞IT學校:Java軟體開發語言學習的關鍵點Java
- 我是java開發的想學習一下雲端計算,要學習什麼技術Java
- 自上而下的軟體開發和自下而上軟體開發
- 小白如何學習大資料開發,大資料學習路線是怎樣的?大資料