## 第一部分
1. 知识只有用才不会忘,忘了就忘了吧,没有什么大不了,只要有学习新知识的能力.
2. 目标决定行动.

3. 主动做项目,最好是商业项目.

4. 做项目的时候要注意控制项目的规模,做完项目后有针对性的阅读一些理论和技术书籍,进行反思. 然后换一个领域,进行学习的循环.不论在哪个阶段,都不要放弃理论的学习.自学路线要动态调整,并且要自己找寻.
## 第二部分:程序是怎么编写出来的
1. 先弄明白,程序是怎么写出来的,才能知道编程的本质.

2. 程序通常来说就是对数据进行加工,处理和转换的工具.
3. 写程序的第一步就是就明白要解决的问题是什么,这就说明要把需求弄明白.在实际项目中,问题定义是非常困难的,同一个概念,同那个一个术语不同的人都有不同的理解.把需求弄清楚,对需求进行分析并找到解决的方法.
4. 所有需要程序处理的数据通常都有要处理的原始数据,所以对问题的分析就清楚要处理的数据有哪些特性开始.
5. 人解决问题的方式和计算机解决的方式是不一样的,专门为计算机解决问题的方式就叫算法.
6. 数学与算法的关系. 先形成一个解决特定问题的算法,才能构建出解决特定稳定的软件,如果程序员没有不具备相关的数学能力,是不具备解决特定的能力,但是有很多人已经把解决问题的方法写成了库了,只要会调用就行了,这样就降低了对数学的能力了.如果开发者具有扎实的数学基础就可以成为优秀的开发者了.学习数学能训练逻辑能力,逻辑能力就能写出好的代码.

7. 设计阶段,设计阶段的主要作用就是绘制出软件大厦的建筑图,只要照图施工,就你能开发出软件.


8.
