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

大家好,我是 Guide哥~

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

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

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

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

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

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

有哪些学习的途径?

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

视频

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

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

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

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

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

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

博客

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

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

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

👍推荐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年工作汇报!

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

Original: https://www.cnblogs.com/javaguide/p/learn-programming.html
Author: JavaGuide
Title: 双非本科,聊聊我是怎么学习编程的。

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592804/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Excel合并多个Excel工作簿

    选择新增列,自定义列,输入列公式:=Excel.Workbook([Content])(区分大小写),选择content Original: https://www.cnblogs…

    Java 2023年6月16日
    092
  • 今年我经历了裸辞,自由职业,再就业

    大家好,我是3y 这是一篇我对2021年的总结文章,记得上一次写这种类型文章的我还是在2019年。没错,2020年我并没有写年终总结。 今天突发奇想,想记录下自己2021年做了些什…

    Java 2023年6月9日
    073
  • rocketMQ 长轮询

    consumer 拉取消息,对应的 queue 如果没有数据,broker 不会立即返回,而是以一种长轮询的方式处理,把 PullReuqest 保存起来,等待 queue 有了消…

    Java 2023年5月30日
    071
  • Python3 virtual environment 在 vscode 的实践

    1、虚拟环境实际上就是将 python 解释器 + 项目中可能用的的modules,统一放在虚拟环境对应的目录 2、activate 虚拟环境,只是保证相关module下载到对应文…

    Java 2023年6月7日
    079
  • Vim入门

    一般模式 启动Vim后进入命令模式 此状态下敲击键盘会被Vim识别为命令,而非输入字符 以下为常用的几个命令: i :切换到 输入模式,以输入字符 x :删除当前 光标所在处的字符…

    Java 2023年6月5日
    087
  • emqtt使用ssl链接

    emqtt需要配置ssl证书才能启用ssl链接,配置如下。 找到etc目录下的listeners.conf 替换自己的ssl证书路径 测试链接 Original: https://…

    Java 2023年5月29日
    099
  • 解决Mapper.xml文件中sql标签第一个字段报错

    在文件标头的http后边补上www 下边代码仅第4行有变动 原文件: 修改后的文件: Original: https://www.cnblogs.com/yang9/p/16145…

    Java 2023年6月5日
    079
  • Java 访问修饰符

    访问修饰符 访问修饰符是用于控制 类、成员方法、属性 的被访问权限。 Java为我们提供了四种服务修饰符,分别是 public、 protected、 default、 priva…

    Java 2023年6月5日
    092
  • Docker系列-docker配置远程访问

    Docker Daemon 默认情况下是只允许本地访问的,不允许远程访问。本文将首先介绍 Docker Daemon 的连接方式,然后说明如何配置远程访问。即实现通过本地 dock…

    Java 2023年6月8日
    066
  • RabbitMQ消息可靠性、死信交换机、消息堆积问题

    消息可靠性 生产者消息确认 示例 消费者消息确认 示例 死信交换机 – 例子 高可用问题 消息堆积问题 惰性队列 参考 消息可靠性 确保消息至少被消费了一次(不丢失) …

    Java 2023年6月9日
    083
  • 多版本YUM仓库搭建

    服务器:CentOS7 YUM源:阿里云 空间要求:CentOS6+CentOS7 50G,考虑后期更新预留,LVS空间100G 1、在服务器配置CentOS7的yum源和Cent…

    Java 2023年6月5日
    066
  • 大家都在用MySQL count(*)统计总数,到底有什么问题?

    在日常开发工作中,我经常会遇到需要统计总数的场景,比如:统计订单总数、统计用户总数等。一般我们会使用MySQL 的count函数进行统计,但是随着数据量逐渐增大,统计耗时也越来越长…

    Java 2023年6月8日
    072
  • Spring boot——JMX 监控

    spring.jmx.enabled=true 在命令行中执行 jconsole命令启动”Java管理和监视控制台”,然后选择org.springframe…

    Java 2023年5月30日
    079
  • Vmware 虚拟机无法启动

    问题背景: 自己的电脑坏了,用的事小伙伴的电脑,安装VMware 软件,然后创建虚拟机(放在移动硬盘上)。在操作虚拟主机的时候,中间不小心碰到了移动硬盘, 然后移动硬盘就掉线了。这…

    Java 2023年5月30日
    061
  • Java SPI机制,你了解过吗?

    Life moves pretty fast,if you don’t stop and look around once in a while,you will mi…

    Java 2023年6月5日
    0104
  • IO(递归)

    递归:方法定义中调用方法本身的现象 注意事项:* A:递归一定要有出口,否则就是死递归* B:递归的次数不能太多,否则就内存溢出* C:构造方法不能递归使用 阶乘案例 不死神兔案例…

    Java 2023年6月5日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球