前言
想做一期编程学习方法论的经验分享,希望能给到想要学习技术的同学一些帮助,让你们可以少走弯路,毕竟这些都是我走弯路总结出来的。本文是从软件工程师的角度去论述编程学习方法论,如果编程不是你的主业只要遵循用什么学什么的思想就可以了。
以下我会根据不同的学习阶段,给大家分享一些学习的方法论,包括基础阶段、进阶阶段、飞升阶段。
基础阶段
编程基础包括:
- 编程语言
- 数据结构和算法
- 计算机网络
- 操作系统
- 编程范式(设计模式)
基础不牢,地动山摇,欠下的债总是要还的,如果你没有把基础学好,以后遇到问题,最后还是要学一遍,如果你还是学生,乘早把基础学一遍。 学习基础的用处是让我们更容易理解其他技术,让我们学习其他技术更快,让我们学习新技术的时候更加有信心。 比如说你要学习 Socket 编程,如果你之前学过计算机网络那么在学习的过程中就会比没学过的人学的更快,而他们还需要去查资料巩固基础知识。如果有时间,尽量把基础过一遍,即使忘了,当第二次学的时候也会比平时快。
关于编程语言,如果你想学习程序设计,不管你是硬件还是软件,不管你是学生还是已经工作了,至少都要学习一门编程语言。而我建议是,软件工程师至少学习 3-5 门编程语言,有的人就会问了,学这么多不可能都精通,不如专注于一门编程语言,还有的人说学得多了容易搞混,我想表达的意思是编程语言多学几门是为了发现没门编程语言的优势, 在什么样的场景用合适的编程语言,比如说 C++也能做 Web 开发,但是肯定用起来没有 Java、PHP 这种专门开发 Web 的舒服。 在学习编程语言的时候不要死记硬背,而是记语言的特性,比如说与或非,循环判断是没门编程语言都会有的,只是表达的方式不一样。
进阶阶段
进阶阶段我把它分为三步骤
- 看开源项目的源码
- 贡献自己的代码
- 应用到自己的项目
进阶阶段学习最有效的方法是看优秀开源项目的源码,看代码来验证之前学习过的理论知识。看优秀项目的代码需要有目的,我们要 从中学习它的工程管理规范、核心技术点、系统设计等等,甚至感觉不错的代码可以直接复制直接用到我们自己的项目,有轮子就要用。
另外可以在开源社区贡献自己的代码。如果发现了优秀的开源项目里面有 Bug 或者独立开发里面的一个功能模块,可以对项目提 pr。
最后就要动手做一个自己的项目了,项目充实就可以,目的是把自己学过的本领应用出来,形成一个自己的知识体系。
飞升阶段
学了那么多没有成果一切都是徒劳,假如你和一个人交流技术,就算他说的再 6,如果一个成果也没有就是在吹牛 X。做一个独立开发或者自己主导的项目,项目一定要被实际使用,用户一定要达到一定的体量,否则还是停留在进阶阶段的应用到自己的项目这一阶段,没有达到质的改变。在这一阶段就不仅仅是完成一个项目这么简单了,要做竞品分析,从用户体验,市场潜在客群的角度分析该做什么样的产品,还要考虑到软件以后的发展方向和核心竞争力。最终落地,运营,推广,目的是盈利,有了盈利才有资本投入到项目中,形成一个良心循环。
经历了以上的阶段,我们已经学习了很多知识了,而且有了实际的经验。有了这些沉淀,还需要 在某个领域深入钻研,达到领域专家的级别,这才是以后的核心竞争力。
以上是我对编程学习方法论的理解,如果你有不同的想法,欢迎评论区讨论。