1. 分析問題的能力程序員
2. 設計解決方案的能力算法
3. 編碼實施的能力編程
4. 排除故障的能力小程序
這四種能力若是要展開來說,要寫好長的,暫時就不寫了。數據結構
開始回答——」如何成爲「的問題。ide
科學家追求的是知識,工程師追求的是能力。而能力是很難從書本上的來的,只能從實踐當中來。函數
我注意到題主的問題中,提到看書靜不下心,看視頻又以爲太慢,可能從一個具體的項目開始更能激發學習興趣而且得到成就感。工具
先給第一種路徑建議吧——從C語言開始。學習
之因此建議C語言,是由於C語言裏沒有那麼多現成的、強大的類庫,在不熟悉基本的語法、面向對象這些概念時C#其實比C語言難以理解,很難深刻。學習C語言不只限於對C語言語法的掌握,而是經過C語言的學習,創建程序設計的思惟,比較深刻地瞭解一些計算機系統的工做原理。開發工具
在個人教學班級中,個人教學內容是這樣組織的,題主彷佛也能夠按照這種方式來學習:
第一階段 高級程序語言的基本概念(編譯、庫、連接等),開發工具的使用(Visual Studio 2010), C語言的基本結構以及在VC中的一些差別,動手能力上達到能按照書本輸入一個程序,能編譯,能運行的結果便可。
第二階段 變量、指針、表達式、函數、分支、循環、簡單的輸入與輸出。
第一階段和第二階段的時間每每很短。
第三階段 開始作第一個小程序(好比最簡單的超市收銀系統),這個時候學生開始頭大,由於不少要用到的東西根本就沒給他們講過,即便網上查獲得資料也未必都能用在項目裏。學生被我帶進一個接一個的坑裏,我從不在第一時間告訴他們答案,總要他們左思右想抓耳撓腮一個星期了,下週上課的時候纔開始講解決的思路和方法。
通過1個月左右的折磨,他們基本能夠完成一個單機版的的超市收銀系統,完成好比輸入(從鍵盤,掃描槍就免了)信息、修改輸入、價格查詢、彙總結帳這樣的功能。從知識層面上,結構體、指針、文件訪問這些基本都解決了,順帶着把簡單的查找、排序算法也學了。
能夠說這是學生最痛苦的階段,可是正是這個階段開始培養他們的自學能力,這個過重要了。可是效果也很明顯,到後期的時候,少數學生開始先於我提出解決方案了。
而後接着折騰,先帶學生回顧作過的這個程序,看如何能作的更好,運行的更快,Review和重構。
因爲是純C完成的,程序老是看上去很混亂,修改、擴充也不是很方便,因而咱們開始探索另外一種編程思想——面向對象,C++上場,又是1-2個月,用C++從新寫這個程序,在這個過程當中,要求他們本身實現String類,封裝數據結構和業務邏輯、數據訪問......
到這裏,一個學期結束了,第二學期要求學生把這個控制檯的黑窗口改爲圖形用戶界面。MFC不許用,只准用一個叫作Easy-x的圖形庫,並且只准用其中的putpixel函數來繪製點,一輪新的折磨開始,從畫點、劃線、逐點寫漢字開始,繪製按鈕、繪製文本框、響應鼠標和鍵盤,而且要求他們開始設計和實現TextBox, Button,Image這些類.....,,順便把消息循環之類的機制也作了初步的瞭解和簡單的實現。
到這時候,有的同窗已經開始作出」高仿Windows"了,要不要太驚喜!
到這裏,我基本能夠相信個人學生不會爲C#和Java發憷了,更重要的是——他們具有了真正的程序員所必須具有的核心能力——自學能力、獨立解決問題的能力。