## 第一部分
1. 知識只有用才不會忘,忘了就忘了吧,沒有什么大不了,只要有學習新知識的能力.
2. 目標決定行動.

3. 主動做項目,最好是商業項目.

4. 做項目的時候要注意控制項目的規模,做完項目后有針對性的閱讀一些理論和技術書籍,進行反思. 然后換一個領域,進行學習的循環.不論在哪個階段,都不要放棄理論的學習.自學路線要動態調整,并且要自己找尋.
## 第二部分:程序是怎么編寫出來的
1. 先弄明白,程序是怎么寫出來的,才能知道編程的本質.

2. 程序通常來說就是對數據進行加工,處理和轉換的工具.
3. 寫程序的第一步就是就明白要解決的問題是什么,這就說明要把需求弄明白.在實際項目中,問題定義是非常困難的,同一個概念,同那個一個術語不同的人都有不同的理解.把需求弄清楚,對需求進行分析并找到解決的方法.
4. 所有需要程序處理的數據通常都有要處理的原始數據,所以對問題的分析就清楚要處理的數據有哪些特性開始.
5. 人解決問題的方式和計算機解決的方式是不一樣的,專門為計算機解決問題的方式就叫算法.
6. 數學與算法的關系. 先形成一個解決特定問題的算法,才能構建出解決特定穩定的軟件,如果程序員沒有不具備相關的數學能力,是不具備解決特定的能力,但是有很多人已經把解決問題的方法寫成了庫了,只要會調用就行了,這樣就降低了對數學的能力了.如果開發者具有扎實的數學基礎就可以成為優秀的開發者了.學習數學能訓練邏輯能力,邏輯能力就能寫出好的代碼.

7. 設計階段,設計階段的主要作用就是繪制出軟件大廈的建筑圖,只要照圖施工,就你能開發出軟件.


8.