如何有效学习编程:我的编程学习之路与经验分享
学习编程的途径有哪些?
通常,明确了学习方向后,我们可以通过以下几种途径来学习编程:
视频教程
对于初学者来说,多观看视频教程是非常有帮助的,因为视频内容更易于理解。然而,经验丰富的学习者可能会发现,视频教程的学习效率相对较慢。可以在慕课网和哔哩哔哩等平台上找到许多学习视频,只需搜索相关关键词(例如 Java、MySQL)即可。
友情提示:在哔哩哔哩学习时,尽量不要频繁切换到其他分区,这会影响学习效率。
博客文章
网上的博客通常缺乏系统性,建议在针对特定知识点或问题时搜索相关博客进行学习。例如,在学习消息队列 Pulsar 时,我先阅读了 Pulsar 的官方文档,然后查阅了一些相关文章以深入理解。
官方文档
官方文档虽然常常是英文的,且大部分技术的官方文档都以粗略的形式呈现,但它们仍然是了解最新技术动态的重要资源。通过阅读官方文档,你可以了解需要掌握的模块以及技术能解决的问题。例如,Spring 的官方网站能告诉你:
- 如何快速开发网站
- 开发微服务架构的软件
- 开发响应式架构的软件
- ......
书籍
书籍通常内容更系统化,适合深度学习。然而,书籍存在时效性的问题。关注技术社区的动态,如 GitHub Trending,以及一些公开的技术分享,可以帮助你获取最新的技术进展。
自学过程中需要注意的事项
提升英语阅读能力
大多数优秀的技术书籍和官方文档都是英文的,因此提升英语阅读能力尤为重要。如果你的英语阅读能力尚可,有道翻译和谷歌翻译可以成为你的好帮手。使用 Chrome 浏览器时,Mate Translate 插件也能帮助你轻松翻译网页及标记的内容。
多练习、多记忆和多参与实战
无论是观看视频还是阅读书籍,都要动手实践并记录关键内容。如果你是通过视频学习,最好配合相关书籍进行阅读。学习过程中遇到不理解的知识点时,务必要及时解决。你可以首先利用百度或 Google 等搜索引擎,若无法解决,再向身边的朋友或在线社区求助。
此外,项目实战必不可少!面临缺乏实际项目机会的问题时,可以考虑以下几种方式:
- 实战项目视频/专栏 :寻找适合自己能力与职业需求的实战项目视频,跟随老师进行实操。在这个过程中,务必保持自己的思考,避免浅尝辄止。对于重要的知识点,要深入学习。
- 实战类开源项目 :在 GitHub 或码云上找寻大量实战类开源项目,选择一个进行研究。在理解原有代码的基础上,尝试进行改进或添加功能。对于 Java 类的实战项目,可以从 awesome-java 仓库中找到许多优秀的项目。
- 从头开始做项目:尝试独立完成一个自己想实现的项目,遇到问题时再临时学习。这种方法对新手来说要求较高,建议在积累了一定的项目经验后再尝试;否则,还是采用前两种方式更为合适。
- ......
项目不仅要完成,还需进行优化和改进。同时,如果你的老师有相关的 Java 后台项目,可以主动申请参与。
必须学会合理安排时间,学习内容繁多,务必明确重点,避免把精力分散在各类框架上,算法和数据结构同样至关重要!
重新审视编程学习的意义
你或许会发现,某些学业成绩非常出色的同学在编程能力上并不突出,而一些编程能力强的学生成绩却相对一般。这种现象的根本原因在于思维方式的转变。许多人在学习编程时,只关注死记硬背 API 和库的用法,这样的学习方式无疑会让人感到困惑。真正的学习应当聚焦于如何利用所学知识解决实际问题,从做项目的角度出发。
以我个人为例,我在使用 Python 时,通常依靠官方文档或书籍学习语法,遇到不懂的地方立即查阅资料。
多看优秀代码
提升代码质量的关键在于多观察优秀代码的写法。虽然应该学习最佳实践,但也要注意,很多情况下并不存在适用于所有场景的“最佳实践”。
那么,哪些优秀的代码值得参考呢?对于 Java 编程者,可以从 JDK 的一些常用集合开始阅读;此外,我也推荐 Dubbo,因为其模块划分清晰,注释详细。如果掌握了 RPC 的基本原理,理解起来会容易得多。
当然,任何框架的源码往往都在十万行以上,无法逐字逐句阅读。因此,值得关注的部分包括 Spring 源码中的 IoC 和 AOP,了解 Spring Bean 的创建过程;阅读 Spring Boot 源码时,掌握其启动机制与自动配置原理。
不要死记硬背
在学习理论知识时,可以多花时间整理笔记,但在学习框架使用时,过分整理笔记并不必要。随时查阅文档、记住关键词即可!例如,若不知如何在 Spring Boot 中接收查询参数,可以直接搜索“Spring Boot Query Param”即可找到相关详解。
再比如,当你不清楚如何在 Spring Boot 项目中使用 Redis 时,搜索“Spring Boot + Redis”就能找到大量教程。
你需要将常用的知识串联起来,记住这些知识的存在即可。根据自己的实际能力,逐步深入底层知识的学习。