从小白到 Github 斩获 90k Star! 聊聊学习编程的正确姿势!

2.5. 多看优秀的代码

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

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

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

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

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

2.6. 多读好书

一定要多看好书!像《重构》、《代码大全》、《代码整洁之道》这类书是程序员标配、必读的书籍。

看书相比于零散的看一些文章学习更加系统。当然,网上也有很多比较系统的学习资源,比如你要学习 Java 的话,可以看我开源的 JavaGuide (「Java 学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识)。

3. 选择一门适合的编程语言入门


image

初学编程第一步就是选择一门适合自己的编程语言入门。

选择的时候,无非是要从下面几点考虑:

  1. 难易程度:一般建议初学编程应该选择一门稍微简单点的比如 Python、 C、Java。

  2. 发展前景 :确定你要学习的编程语言发展前景是不错。就比如相比于 PHP ,我肯定更推荐你学习 Java。

  3. 市场需求 :有了市场需求之后,工作岗位才会多,找工作也会相对容易。

  4. 薪资水平 :薪资水平实际和编程语言不是那么相关,和个人实际能力相关。不过,相同能力下某些编程语言的薪资确实要稍高一些。

下面这份数据来自 TIOBE 官网统计的 2020 年 7 月份编程语言排行榜,也可以作为你的参考。从统计结果可以看出,C、Java、Python 还是很强势的,这弟兄仨基本常年就是前三(Java 和 C 经常争第一)。另外,R 语言的进步也很快,同样值得关注。

image.gif

再来看一下 PYPL 指数。这份指数数据主要描述的编程语言的受欢迎程度,具体受欢迎程度是由分析  Google Trends  得出。从统计结果可以看出,Python、Java、Javascript 三者稳居前三。

image.gif

再来看一下编程语言的平均薪资水平和使用年限。这份数据来自于 Stack Overflow 2019 Survey  。我们需要格外关注的是 Go 语言。Go 语言背靠谷歌,薪资比较高也不奇怪。并且,国内现在很多大公司比如腾讯使用 Go 进行项目开发的越来越多了。

image.gif

相信你看了上面这么多关于编程语言的介绍之后,你一定可以选择一门适合自己的编程语言进行学习和深入。

4. 不要被编程语言所束缚


编程语言只是工具。我们的确需要有一门比较擅长的编程语言,但是,不是任何时候,我们做任何东西都要使用这一门编程语言来做。比如 Java 适合网站开发而 Python 更适合做数据分析。选择合适的语言做合适的事情很重要。 再比如你想要做全栈开发的话,还可能需要掌握多门编程语言。拿我自己来说,也算是半个全栈开发,我主要是以 Java 做后端开发,Javascript 来进行前端开发。

5. 多实践


我见过很多人学习编程一年多了,自己敲的代码可能还不到 1000 行。然后, 你让他做用自己学的编程知识做个什么东西,他就蒙了。

学习编程以及提高编程能力最直接的办法就是实践!不断实践!特别是在编程初期的时候,积累代码量格外重要。

就比如你学习 Java 后台开发的时候,能不能通过自己学过的知识独立做个网站呢?再比如你搞懂了某个框架原理之后,能不能模仿着去写一个简单的呢?

我们实际项目开发中是比较忌讳造轮子的,但是,实际学习过程中造轮子绝对是最自己百利而无一害的! 就比如我之前搞懂了 RPC 的原理之后,就自己动手写了一个简单的 RPC 框架。我的 RPC 框架肯定是无法和 Dubbo 这类已经这么成熟的相提并论。但是,在自己去写 RPC 框架的时候,更加加深了自己对于 RPC 框架的认识。实现的过程中,遇到了很多问题,解决问题的过程中也提高了自己的编程能力。总而言之,造轮子是一种特别能够提高自己系统编程能力的手段。

image

多实践不是说拿到问题就直接开始写代码、不是不学习理论知识。多问自己 why ,而不是 what。 就比如技术选型的时候,相同的功能可能有不同的解决方案,你是人云亦云地不顾项目实际需要去选择,还是自己经过详细的对比呢?想当然肯定是根据自己项目的实际需要,然后经过各种对比之后选择!

“ talk is cheap, show me code”这句话虽好,但是请不要忘记思考!换句话说就是:多写代码虽好,可不要贪杯哦!

6. 多修炼内功


不要沉迷框架,多花点时间去修炼内功——底层技术。很多人觉得在学校里面学的数据结构和算法、计算机组成原理、操作系统这些东西工作之后根本用不到。然后,就想当然地觉得这些东西不重要。

如果你暂时觉得这些东西没有用,很可能是现在学习某门技术只是浮于表面。举个例子:如果你要看懂框架或者某个类库的源码,那数据结构是必须要搞懂的吧!如果你要培养和提高自己解决问题的能力,那算法肯定是必须吧!

为什么要修炼内功?

  1. 技术更新换代快 :我们前几年可能还在用 Spring 基于传统的 XML 开发,现在几乎大家都会用 Spring Boot 这个开发利器来提升开发速度,再比如几年前我们使用消息队列可能还在用 ActiveMQ,到今天几乎都没有人用它了,现在比较常用的就是 Rocket MQ、Kafka 。技术更新换代这么快的今天,你是无法把每一个框架/工具都学习一边的,底层技术就是你快速上手他们的瑞士军刀。

  2. 懂得底层技术的人更有竞争力 :现在的程序员这么多,你如何能和别人拉开差距?单纯就靠使用框架的能力么?这些随便从培训班抽一个人可能都会做的工作无法成为你的核心竞争力。

拿 Java 举例子,有哪些比较底层的技术呢?

  1. 算法和数据结构、计算机网络和操作系统(适用于任何编程语言的底层技术);

  2. 框架的源码;

  3. Java 程序运行的基础—JVM;

7. 多总结、多分享、多输出


总结知识不是把自己学到的东西按照老师的说法完完整整的整理下来,而是结合自己的理解和补充整理下来。

将自己学到的东西分享出来,一方面能检验自己是否掌握,另一方面还能加深自己的理解和认识。

分享和输出的方式有很多种,给大家推荐几种最常见,同时也是我最常用的学习方式。

7.1. 写博客

简单来说,主要有下面 👇🏻 几点原因:

  1. 对知识有更加深的认识,让自己的知识体系更加完整

  2. 督促/倒逼自己学习

  3. 可能会带来不错的经济收入

  4. 提升个人影响力

  5. 拥有更多机会

  6. 好的博客会成为面试加分项

这个时候,你肯定就纠结了:我该在哪里写博客呢?

作为一个从大二开始就坚持写博客,期间折腾了无数次个人网站的我来说: 我推荐先找一个不错的博客平台比如掘金,然后在博客平台上写博客,后面可以自己搭建自己的博客网站。

这个时候,你肯定又要纠结了:我该怎么搭建自己的博客呢?

Emm…这部分要格外好好看,适当记笔记哈,小伙伴们!给大家推荐几个最好也是最常见的搭建博客网站的方法,想要免费高速个人博客网站的小伙伴们不要错过。

|

| 搭建难度 | 是否需要服务器 | 易用性 | SEO |

| — | — | — | — |

| Hexo | 易 | 非必须 | 中 |

| Vuepress | 易 | 非必须 | 易 |

| Docsify | 易 | 非必须 | 易 |

| Wordpress | 中 | 必须 | 易 |

| Halo | 中 | 必须 | 易 |

有了自己的网站后,你可以将自己的文章整理成一个系列,然后部署在自己的网站上,自己想看的时候就可以随时查阅。你也可以将文章同步到其他博客平台来扩大自己的影响力。

7.2. 项目组内分享

一般公司都会有内部的技术讲座以及博客平台。

你可以在公司或者项目组内部组织技术讲座,这样不仅可以增加自己的存在感,还能提高自己的表达能力。

你也可以在公司内部的博客平台分享自己写的博客,这样你写的东西就能被更多人看到了!

7.3. 做开源项目

你可以在 Github 分享很多东西,你的学习笔记、自己做的实战项目、自己造的轮子…(资源类的不太推荐,太容易侵权)。虽然,现在 Github 被很多人单纯玩成了引流工具。但是,整体来说 Github 整体技术环境和氛围还是很不错的!

另外,最好的话是要给项目弄一个英文版本,项目代码中的注释最好也要是英文的。毕竟是开源,最好是能准守开源精神使用世界通用语言(这一点我自己也没做好,反思!)。

总结


这篇文章,我站在自己的这些年自学的角度,掏心窝子地说了很多话。看了这篇文章之后,哪怕你只学会了要使用 Google 搜索我都觉得开心,也希望这篇文章能够影响到更多人。
另外,文中讲了很多编程领域不可争的事实或者说正确姿势比如:不要以学生时代应试考试的方式学习编程、多实践、造轮子是一种特别能够提高自己系统编程能力的手段等等。说了这么多,如果你没有将这些学习

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

如果你没有将这些学习

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

[外链图片转存中…(img-BbElFPNq-1714567615323)]

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

[外链图片转存中…(img-TreGORmw-1714567615323)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值