关于github:编程小白用了3年在-Github-斩获-90k-Star-聊聊学习编程的正确姿势

27次阅读

共计 6709 个字符,预计需要花费 17 分钟才能阅读完成。

我是 Guide 哥,一 Java 后端开发,半个全栈,自在的少年。

如果你看到这篇文章,祝贺你!不论是初入编程畛域的小白,还是曾经在工作几年的新手,这篇文章都将对你有很大的帮忙。倡议看到最初。置信我!肯定会有收货。

这篇文章我会试着给你带来一个更加不一样的编程能力进步实战指南。如果你感觉这篇文章对你有用的话,也不要白嫖好吧!点个在看或者赞就是对我最大的激励。欢送转发让更多人看到这篇文章,一起变强!

先来说一下本人的状况!我从小学就开始接触电脑,不过到了大学之后才接触编程,整个大一都很迷茫,编程很少,也不晓得如何进步本人的编程能力。大二的时候,本人退出了学校的一个技术组织,自此之后,便真正开启了本人疯狂的大学自学编程之路。

自学编程路上,Github 相对对我帮忙最大。我在大二就开始接触 Github 了,过后就感觉下面有太多不错的学习资源了。到了大三下学期,本人就想着说要不也尝试着做一下开源呗!而后,我就从比拟好动手的 Java 学习和面试指南动手。到目前未知,我的所有的开源我的项目累计靠近 90k star,并且播种了 4.6k 的关注。

说到 Github 其实也挺羞愧的!因为我的大部分我的项目都没有提供英文版本。实际上,如果你要做开源的话,本着开源精力,最好能有一份英文翻译版。

好的!上面咱们就开始注释!想要本人编程变得更强的小伙伴记得多记笔记。

1. 抉择一个适合的电脑

学习编程前至多要有一个略微适宜一点的电脑吧!

对于电脑抉择,我感觉不要纠结是买 Mac 还是 Windows。作为一个应用了 Windows 开发 4 年,Mac 开发一年的人主观地说,两者对于编程效率的影响没有你想的那么大。特地是在你初学编程的阶段,是齐全没太大区别的。

Mac 的性价比更低,一台合格的 Mac 开发本 1 万 2 起步。尽管它的确好一些,然而抉择电脑的时候还是要依据本人理论经济状况来决定。

另外,肯定不要抉择内存低于 8g 的电脑,有条件的话最好能 16g。

2. 六个黄金准则

很多人可能会感觉说,咱们学习编程,首先是要找一门编程语言好好开始学,比方我在上大学的时候最开始接触的是 C 语言。

我感觉非也!就我本人作为一个从大学自学编程一路一路踩坑的过来人来说,我感觉学习编程第一步应该是要搞清楚学习编程有哪些必备的网站?咱们是如何查资料的?咱们是如何解决问题的?国内外有哪些技术社区比拟好?……

首次之外,你还要搞明确 学习编程不是加入应试考试。

2.1. 理解常见的学习编程网站

理解学习编程有哪些必备的网站之后,你能力更好地进行自学。

个别状况下,但但凡初学编程的同学,往往都须要课后进行继续学习的。一是因为你可能刚学编程,老师教的货色你听不明确。二是因为程序员这个行业自身就须要一直学习。三是因为大学外面教的货色往往和社会理论须要脱节,只有自学才能够让你技术和社会不脱节。

举荐几个我罕用的学习编程的网站:

a. 中国大学 Mooc

下面有很多名校的课程和国家精品课程比拟适宜咱们夯实编程根底。比方下图是南京大学的一门对于软件工程的大学选修课。

b. 慕课网

下面有很多比拟适宜入门的收费课程。另外,如果你须要实战我的项目视频资源的话,也能够在慕课网找到(慕课网打钱!!!)。

c. 哔哩哔哩

是的,你没看错!看 B 站也能学习!B 站下面有很多优良的学习资源以及优良的 UP 主比方 Guide 哥。

d.LeetCode

国内的公司缓缓开始向国外的面试模式聚拢,手撕算法曾经是很多大厂的标配了,不论是社招还是校招。LeetCode 这个网站的话,是咱们平时刷题必备的一个网站。

在你初学编程的阶段,也能够常常去下面找一些简略难度的算法题来做。

e. 极客工夫

主打付费学习的一个付费学习社区(极客工夫私聊我打钱哈!)。不过课程的品质大部分都挺高的,我本人也看了外面很多的课程,并且很多课程都是 Java 畛域大佬级别的人物讲的。

2.2. 拓展视线,好的技术社区是你成长的助力器

理解了国内外有哪些比拟好的技术社区之后,你才有机会意识到更多更优良的程序员,看到更多对你有帮忙的货色。而不是说,整个人的思维都局限在学校。这点是很重要很重要的! 比拟好的技术社区的话有:Github(稳居第一位好吧!开源我的项目交换社区)、Stackoverflow(一个程序设计畛域的问答网站,网站容许注册用户提出或答复问题。和知乎很像,重大的一点不同是 Stack Overflow 能够对问题进行打分)、v2ex掘金 csdnsegmentfault 知乎……。

3. 学会应用 Googgle 搜寻,学习和解决问题效率晋升一个品位

晓得了要应用 Google 搜寻之后,你学习编程的和解决的问题能够晋升一个品位。如果你切实是无奈越过那道墙的话,能够试试必应搜寻。

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

你或者也发现了。很多问题特地特地优异的同学,他们的编程能力其实并不好。在大学的时候,那些编程能力最强的往往是那些问题比拟个别的。

为什么会这样呢?

我感觉次要是一个思维的转变问题。很多人学习编程的时候,总是想着我要把这个 API 记下来,把这个库的用法记下来。这样学习,导致的后果只有一个那就是你会很好受!因为,这些基本不是要死记硬背的货色啊!真还当这是上课考试啊!你要从如何用你学的货色来解决理论编程问题登程,站在做一个理论的我的项目的角度来学习。

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

2.4. 不要胆怯浏览英文文档

大部分最新的材料 / 技术都是国外那边的,基本上大部分都是英文的。据说 90% 以上的程序员都不习惯间接看英文文档,都会抉择看他人的翻译 / 总结或者书籍。然而,书籍或者他人的翻译 / 总结都会比较慢,而且难免会有集体主观因素影响翻译成果。

这个时候很多人就会说了我的英语不好啊!齐全看不懂英文文档。

别放心!有道翻译和谷歌翻译就是你最好的老师。如果是应用 Chrome 浏览器的话,我还举荐你装置一个 Mate Translate 插件。 这个插件对于网页浏览英文文档太敌对了,能够一站式翻译您的网页以及标记的文字段落。应用成果如下图所示:

<img src=”https://imgkr.cn-bj.ufileos.com/8428d921-f8a1-43ab-ab40-f5a65e12bdc5.png” style=”zoom:50%;” />

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. 抉择一门适宜的编程语言入门

初学编程第一步就是抉择一门适宜本人的编程语言入门。

抉择的时候,无非是要从上面几点思考:

  1. 难易水平:个别倡议初学编程应该抉择一门略微简略点的比方 Python、C、Java。
  2. 发展前景:确定你要学习的编程语言发展前景是不错。就比方相比于 PHP,我必定更举荐你学习 Java。
  3. 市场需求:有了市场需求之后,工作岗位才会多,找工作也会绝对容易。
  4. 薪资程度:薪资程度理论和编程语言不是那么相干,和集体理论能力相干。不过,雷同能力下某些编程语言的薪资的确要稍高一些。

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

再来看一下 PYPL 指数。这份指数数据次要形容的编程语言的受欢迎水平,具体受欢迎水平是由剖析 Google Trends 得出。从统计后果能够看出,Python、Java、Javascript 三者稳居前三。

再来看一下编程语言的均匀薪资程度和应用年限。这份数据来自于 Stack Overflow 2019 Survey。咱们须要分外关注的是 Go 语言。Go 语言背靠谷歌,薪资比拟高也不奇怪。并且,国内当初很多大公司比方腾讯应用 Go 进行我的项目开发的越来越多了。

置信你看了下面这么多对于编程语言的介绍之后,你肯定能够抉择一门适宜本人的编程语言进行学习和深刻。

4. 不要被编程语言所解放

编程语言只是工具。咱们确实须要有一门比拟善于的编程语言,然而,不是任何时候,咱们做任何货色都要应用这一门编程语言来做。比方 Java 适宜网站开发而 Python 更适宜做数据分析。抉择适合的语言做适合的事件很重要。 再比方你想要做全栈开发的话,还可能须要把握多门编程语言。拿我本人来说,也算是半个全栈开发,我次要是以 Java 做后端开发,Javascript 来进行前端开发。

5. 多实际

我见过很多人学习编程一年多了,本人敲的代码可能还不到 1000 行。而后,你让他做用本人学的编程常识做个什么货色,他就蒙了。

学习编程以及进步编程能力最间接的方法就是实际!一直实际!特地是在编程初期的时候,积攒代码量分外重要。

就比方你学习 Java 后盾开发的时候,能不能通过本人学过的常识独立做个网站呢?再比方你搞懂了某个框架原理之后,能不能模拟着去写一个简略的呢?

咱们理论我的项目开发中是比拟禁忌造轮子的,然而,理论学习过程中造轮子相对是最本人百利而无一害的! 就比方我之前搞懂了 RPC 的原理之后,就本人入手写了一个简略的 RPC 框架。我的 RPC 框架必定是无奈和 Dubbo 这类曾经这么成熟的等量齐观。然而,在本人去写 RPC 框架的时候,更加加深了本人对于 RPC 框架的意识。实现的过程中,遇到了很多问题,解决问题的过程中也进步了本人的编程能力。总而言之,造轮子是一种特地可能进步本人零碎编程能力的伎俩。

多实际不是说拿到问题就间接开始写代码、不是不学习理论知识。多问本人 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;
  4. ……

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

总结常识不是把本人学到的货色依照老师的说法完完整整的整顿下来,而是联合本人的了解和补充整顿下来。

将本人学到的货色分享进去,一方面能测验本人是否把握,另一方面还能加深本人的了解和意识。

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

7.1. 写博客

能够养成写博客输入的习惯。我在之前有写过一篇文章来说为什么要写博客: 程序员写博客很重要吗?。

简略来说,次要有上面 ???????? 几点起因:

  1. 对常识有更加深的意识,让本人的常识体系更加残缺
  2. 督促 / 倒逼本人学习
  3. 可能会带来不错的经济支出
  4. 晋升集体影响力
  5. 领有更多机会
  6. 好的博客会成为面试加分项

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

作为一个从大二开始就保持写博客,期间折腾了无数次集体网站的我来说: 我举荐先找一个不错的博客平台比方掘金,而后在博客平台上写博客,前面能够本人搭建本人的博客网站。

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

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

搭建难度是否须要服务器易用性SEO
Hexo非必须个别
Vuepress非必须敌对
Docsify非必须不敌对
WordPress必须敌对
Halo必须个别

综上,我还是比拟举荐 Vuepress 和 Docsify 的。 对于如何应用 Docsify 搭建一个本人的博客网站,我还写过一篇文章手把手教你搭建:《手把手教你搭建一个文档类型的网站! 收费且高速!》。而且,我还提供了配套的视频教程。就很贴心好吧!记得给 Guide 哥点个赞 ????!

有了本人的网站后,你能够将本人的文章整顿成一个系列,而后部署在本人的网站上,本人想看的时候就能够随时查阅。你也能够将文章同步到其余博客平台来扩充本人的影响力。

我整顿 7 个常见的技术平台供大家参考:

<img src=”https://imgkr.cn-bj.ufileos.com/be6d8628-1a38-4a1f-a07a-4fa7d0a8a69f.png” style=”zoom:50%;” />

7.2. 项目组内分享

个别公司都会有外部的技术讲座以及博客平台。

你能够在公司或者项目组外部组织技术讲座,这样不仅能够减少本人的存在感,还能进步本人的表达能力。

你也能够在公司外部的博客平台分享本人写的博客,这样你写的货色就能被更多人看到了!

7.3. 做开源我的项目

你能够在 Github 分享很多货色,你的学习笔记、本人做的实战我的项目、本人造的轮子 ……(资源类的不太举荐,太容易侵权)。尽管,当初 Github 被很多人单纯玩成了引流工具。然而,整体来说 Github 整体技术环境和气氛还是很不错的!

<img src=”https://imgkr.cn-bj.ufileos.com/72daad30-f644-4f3c-8682-edf981737b1b.png” style=”zoom:50%;” />

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

总结

这篇文章,我站在本人的这些年自学的角度,掏心窝子地说了很多话。看了这篇文章之后,哪怕你只学会了要应用 Google 搜寻我都感觉开心,也心愿这篇文章可能影响到更多人。

另外,文中讲了很多编程畛域不可争的事实或者说正确姿态比方:不要以学生时代应试考试的形式学习编程、多实际、造轮子是一种特地可能进步本人零碎编程能力的伎俩等等。说了这么多,如果你没有将这些学习编程的正确姿态用到本人平时学习中的话,这篇文章对你的帮忙可能十分无限。

这一期原创分享就完结了!让咱们一起变强!!!

我是 Guide 哥,一 Java 后端开发,半个全栈,自在的少年。

正文完
 0