1、一门技术必须多用才能掌握,最好的办法是在项目中运用。如果你在真实的项目中使用了某一项技术,那么印象就会非常深刻。即使忘记,也能很快捡起来。
2、如果要学新的技术,仅仅是为了拓宽自己的知识结构,那肯定没有时间对这些技术做大量的练习了。这时候,就要对技术进行分类。看你掌握这门技术的目的。如果技术仅仅是一种工具,我认为只需要了解它能做什么,就OK了。因为即使你把它的整个使用方法搞懂,久了不用也会忘记。如果你知道这个技术能做什么,当做项目时需要用到,再去查阅相关的文档和资料,完全足以应付。如果这门技术非常重要,甚至有许多可借鉴之处,那么在搞清楚它能做什么的同时,还应该理解它的原理、思想以及实现的方法。
3、养成随时记录心得和教训的习惯。不管是项目中,还是学习过程中,凡是认为有价值之处,都有必要记录下来。不一定要发到博客上,只要保存起来就好。不过,在保存的时候,要做好合理的分类,以便于今后查阅。不要觉得这个耽误时间,它是非常有用的。我以前就没有充分认识到,导致之前做的项目碰到的很多问题,当时解决了就完了。到现在都无法回忆起来了。现在的我就告诫自己,一定要做到这一点。所谓“磨刀不误砍柴工”,耽误的这点时间是完全值得的。如果你只是不停地学,却不知道积累,那就和猴子掰包谷没有什么区别了。此外,这样的做法还有利于磨练你的文档编写能力、分类和总结的能力。重新整理这些内容,也有助于你再一次理清自己的思路。真的是非常有价值的做法。我记得以前在课堂上也给你们说过。事实上,Martin Fowler的《重构》一书,之所以能写成,就在于他遵循了这一做法。最近,我刚刚完成《重构》一书的点评,其中大量的点评内容也是我采取这种方式日积月累获得的。
4、最后一点,是学会选择。软件技术实在太多。要弄清楚你自己的目标。最重要的是要确定自己的职业发展,专业的说法叫“职业生涯规划”。是技术,管理,还是二者兼顾。然后,再有目的性的去学习知识。即使是技术领域,也有很多发展方向:网络、数据库、底层算法、框架、架构、UI设计,性能优化,系统集成,太多太多。不要漫无目的地学,这样也好,那样也好,所以都去学,结果学了又没用上。所以,要先确定目标,然后做出选择,再制定计划,包括短期计划和长期计划。