双非本科,聊聊我是怎么学习编程的。

3,459 阅读9分钟

大家好,我是 Guide哥~

我的学校是荆州一所双非一本。

整个大一,我都没有怎么认真学习编程,每天就是出去玩,还有参加各种社团活动。

在大二上学期末,最终确定了自己以后要走的技术方向是走 Java 后端。于是,我就开始制定学习计划,开始了自己的 Java 后端领域的打怪升级之路。

到了大三,我基本把 Java 后端领域一些必备的技术都给过了一遍,还用自己学的东西做了两个实战项目。整个过程一共花了我一个暑假+半个学期,每天的学习强度基本都在 10 个小时以上。

这篇文章就简单聊聊:我是怎么学习编程的?

👍推荐2021最新实战项目源码下载

有哪些学习的途径?

一般来说,有了一个具体的学习路线,知道学习什么之后,我们通常有下面几个方向来学习:

视频

初学编程的小伙伴尽量多看视频,因为,视频教程比较容易理解。

不过,对于经验已经比较丰富的小伙伴来说,视频教程相比于文档教程学习起来会更慢一些。

像慕课网和哔哩哔哩上面有挺多学习视频可以看,只直接在上面搜索关键词(比如 Java、MySQL)就可以了。

img

提个醒哈!在哔哩哔哩上学习的时候,不要学一会就跑到别的分区去了,有点顶不住啊!

博客

网上的博客大多没有体系,推荐你在解决某一知识点或者问题的时候可以在网上找一些相关的博客看。

就比如我在学习消息队列 Pulsar 的时候,先把Pulsar 官方文档看了一遍。然后,自己在网上找了一些相关的文章来深入学习。

Java 领域比较成体系的博客,推荐 JavaGuide(项目地址: github.com/Snailclimb/…

👍推荐2021最新实战项目源码下载

官网(官方文档)

除非是一些国产项目的官方文档提供了中文版本,否则大概率是英文的。

另外,官方文档介绍的往往也比较粗糙,不太适合初学者作为学习资料。

不过,官方文档我们一定是要看的。通过官方文档你才能知道你学习的技术最新的技术动态,才能知道这个技术有哪些模块需要学习,才能知道这个技术具体可以帮你解决什么问题。

比如下面是 Spring 的官网,通过网站首页你就可以大概知道 Spring 可以帮助你:

  • 快速开发网站
  • 开发微服务架构的软件
  • 开发响应式架构的软件
  • ......

书籍

书籍的内容更成体系,更系统。不过,书籍存在时效问题。你可以通过一些手段了解技术最新动向:

  • 关注一些技术社区的动态比如 Github Trending
  • 关注一些公开的技术分享
  • 关注一些技术大佬
  • ......

自学过程中有哪些需要注意的地方?

英语阅读能力

大部分优秀的技术书籍都是国外的,几乎都是英文,并且,大部分技术的官方文档也都是英文的。

所以,提高自己的英文阅读能力很重要。英文阅读能力暂时比较差的也不要紧,有道翻译和谷歌翻译就是你最好的老师。如果是使用 Chrome 浏览器的话,我还推荐你安装一个 Mate Translate 插件。 这个插件对于网页阅读英文文档太友好了,可以一站式翻译您的网页以及标记的文字段落。

多练!多记!多实战!

不论是看视频还是看书,最好都要跟着一起练,记录一些关键的内容。

另外,如果你是看视频学习的话,最好可以边看视频边找一本相关的书籍阅读。

学习过程中没弄懂的知识点一定要尽快解决。如何解决?首选百度/Google,通过搜索引擎解决不了的话就找身边的朋友或者网上认识的一些人。

另外,一定要进行项目实战!很多人这时候就会问没有实际项目让我做怎么办?我觉得可以通过下面这几种方式:

  1. 实战项目视频/专栏 : 在网上找一个符合自己能力与找工作需求的实战项目视频或者专栏,跟着老师一起做。跟着老师做的过程中,你一定要有自己的思考,不要浅尝辄止。对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的知识点就要自己学会去深入学习。
  2. 实战类开源项目 : Github 或者码云上面有很多实战类别项目,你可以选择一个来研究,为了让自己对这个项目更加理解,在理解原有代码的基础上,你可以对原有项目进行改进或者增加功能。Java 类的实战项目,你可以从 awesome-java 这个仓库里面找,里面有很多非常赞的项目。
  3. 从头开始做 :自己动手去做一个自己想完成的东西,遇到不会的东西就临时去学,现学现卖。这个要求比较高,我建议你已经有了一个项目经验之后,再采用这个方法。如果你没有做过项目的话,还是老老实实采用上面两个方法比较好。
  4. ......

做项目不光要做,还要改进,改善。另外,如果你的老师有相关 Java 后台项目的话,你也可以主动申请参与进来。

一定要学会分配自己时间,要学的东西很多,真的很多,搞清楚哪些东西是重点,哪些东西仅仅了解就够了。一定不要把精力都花在了学各种框架上,算法和数据结构真的很重要!

不要把学习编程还当做学生时代的应试考试来看

你或许也发现了。很多成绩特别特别优异的同学,他们的编程能力其实并不好。在大学的时候,那些编程能力最强的往往是那些成绩比较一般的。

为什么会这样呢?

我觉得主要是一个思维的转变问题。很多人学习编程的时候,总是想着我要把这个 API 记下来,把这个库的用法记下来。这样学习,导致的结果只有一个那就是你会很难受!因为,这些根本不是要死记硬背的东西啊!真还当这是上课考试啊!你要从如何用你学的东西来解决实际编程问题出发,站在做一个实际的项目的角度来学习。

拿我自己来说:我平时也会写 Python,基本就是自己看着官方文档或者一些书籍的教的语法跟着写。如果哪个地方不会了,我就去查一下。

多看优秀的代码

不看优秀的代码,你写的代码质量很难提高。

虽然要多看优秀的代码,但是也不要被 “最佳实践” 所束缚,很多时候实际是根本不存在适用于任何场景的“最佳实践”,没有银弹。

有哪些优秀的代码值得学习呢?

拿 Java 来说,不知道阅读什么源码的话,可以先从 JDK 的几个常用集合看起。另外,我比较推荐看 Dubbo 的,因为感觉会稍微相对容易一点,模块划分清晰,注释也比较详细。搞清楚了 RPC 的基本的原理,知道如何自己实现一个 RPC 框架之后,看起来就没那么吃力了。

另外,随便一个框架的源码都 10w+行了,都看一遍是不可能的。要挑选比较重要的地方看,就比如看 Spring 源码的话你一定要看 IoC 和 AOP,要知道一个 Spring Bean 是如何一步一步被创建出来的。你要看 Spring Boot 源码的话就要知道 Spring Boot 的启动机制是啥,Spring Boot 是如何实现自动配置的。

不要死记硬背

学习理论知识的时候,我们可以多花点时间整理笔记。

但是,在学习框架使用的时候,就没有太大必要花大量时间的整理做笔记了。

你完全可以随时查文档,记住关键词即可!比如 Spring Boot 你不知道如何接受 Query Param 的话,你直接搜 Spring Boot Query Param 即可!

再比如你不会使用 Redis ,你做的 Spring Boot 项目需要用到的话,你直接搜“Spring Boot+ Redis”就出来了各种详细的教程。

你要做的就是把常用的东西串联起来,知道有这个东西就好。根据自己的实际能力,再对底层的东西进行学习就好。

更多编程好习惯,请看:《成为一个不那么差的程序员》

我是 Guide哥,拥抱开源,喜欢烹饪。Github 接近 10w 点赞的开源项目 JavaGuide 的作者。未来几年,希望持续完善 JavaGuide,争取能够帮助更多学习 Java 的小伙伴!共勉!凎!点击查看我的2020年工作汇报!

原创不易,欢迎点赞分享。咱们下期再会!