学习的过程也是迭代的过程
谈到学习相信大家都喜欢制定相关的学习计划来指导自己的学习。学习最大的风险就是经过一段时间的学习后可能会发觉自己什么都没有学到,没什么实质性的收获,而时间又浪费掉了。所以学习的过程重要的就是要分析和控制相关的风险。
软件开发过程我们经常谈风险管理很重要,也经常采用敏捷,迭代或增量相关的模型,采用评审和Review,采用里程碑检查等各种方式减少软件开发的风险。这里面最重要的就是使软件开发过程真正是一个迭代和螺旋演进的过程,并且制定相关的里程碑点和检查点进行相关的回顾和总结。
1.学习忌好高骛远和计划周期太长
如果你制定的学习计划是超过半年的学习计划,那估计能够完成按学习计划执行的可能性就很小了,学习过程本身就是动态的过程,后期自己知识积累也在动态变化,太远期事情和学习规划是很难规划的很清楚的。因此半年或一年的仅制定较粗的学习规划,而详细的学习计划宜控制在1月内,当月要学习内容列出详细的需要学习的任务和知识点,并在当月末对学习情况进行自我的总结和归纳,再根据自己学习情况来拟制下月的学习计划。
2.关于迭代和回溯
在软件开发中我们经常要用迭代开发方法,每次的迭代完成点都是一个可以独立交付的版本。这样作用是让用户尽早的能够看到和使用相关的系统,及时系统保护的功能并不是特别完整。正如画饼充饥和望梅止渴一样,当你能够看到或触及到目标时候才能够激发你对目标的进一步渴望。我们做事情时候第一反映就是为何要做这些事情?我们爬山时候可能首先期望能够看到山峰,我们开发程序时候可能首先希望能够写出自己的第一个winform或分布式应用。
但第一次的达到这些点并不是最重要的,而最重要的是触发自己学习的兴趣,而这种学习兴趣就是对相关基础知识点的系统的学习,这可能才是以后技能提高的重点。一个mis系统的设计和开发讲涉及到编程语言,算法,数据库分析设计,sql,需求分析和开发,系统或架构设计,UI设计,单元测试,业务知识等多方面内容。拿DotNet编程语言来将里面又会涉及到C#语言基础,WebForm,WinForm,Ado.net,异步处理,多线程,WebSerive和Remoting,反射调用,Collection/xml/data/io等重要命名空间相关重要类。任何一个方面都是一个值得去学习和归纳总结的内容。
所以回溯的重点就是在实际学习或工作中遇到不清楚的地方时候要回溯回到最基础的内容上进行系统的学习。比如你在学习分布式开发,看了别人代码或Sample中的很多重要的关键字或用法都不清楚,这个时候可能需要先放下,而制定最基础的remoting或Web Service原理和技术方面的学习。通过系统学习你以后可能就是这方面的专家,而不是到处去拷别人代码,只知其然而不知所以然的使用者。
有些思路还来不及细细整理,暂时先写这些心得。