我是Guide哥,一Java后端开发,半个全栈,自由的少年。html
若是你看到这篇文章,恭喜你!不管是初入编程领域的小白,仍是已经在工做几年的老手,这篇文章都将对你有很大的帮助。建议看到最后。相信我!必定会有收货。前端
这篇文章我会试着给你带来一个更加不同的编程能力提升实战指南。若是你以为这篇文章对你有用的话,也不要白嫖好吧!点个在看或者赞就是对我最大的鼓励。欢迎转发让更多人看到这篇文章,一块儿变强!git
先来讲一下本身的状况!我从小学就开始接触电脑,不过到了大学以后才接触编程,整个大一都很迷茫,编程不多,也不知道如何提升本身的编程能力。大二的时候,本身加入了学校的一个技术组织,自此以后,便真正开启了本身疯狂的大学自学编程之路。程序员
自学编程路上,Github 绝对对我帮助最大。 我在大二就开始接触 Github 了,当时就以为上面有太多不错的学习资源了。到了大三下学期,本身就想着说要不也尝试着作一下开源呗!而后,我就从比较好入手的 Java 学习和面试指南入手。 到目前未知,个人全部的开源项目累计接近 90k star,而且收获了 4.6k 的关注。github
说到 Github 其实也挺惭愧的!由于个人大部分项目都没有提供英文版本。实际上,若是你要作开源的话,本着开源精神,最好能有一份英文翻译版。
好的!下面咱们就开始正文!想要本身编程变得更强的小伙伴记得多记笔记。面试
学习编程前至少要有一个稍微适合一点的电脑吧!算法
关于电脑选择,我以为不要纠结是买 Mac 仍是 Windows。做为一个使用了 Windows 开发 4 年,Mac 开发一年的人客观地说,二者对于编程效率的影响没有你想的那么大。特别是在你初学编程的阶段,是彻底没太大区别的。编程
Mac 的性价比更低,一台合格的 Mac 开发本 1 万 2 起步。虽然它确实好一些,可是选择电脑的时候仍是要根据本身实际经济状况来决定。segmentfault
另外,必定不要选择内存低于 8g 的电脑,有条件的话最好能 16g。后端
不少人可能会以为说,咱们学习编程,首先是要找一门编程语言好好开始学,好比我在上大学的时候最开始接触的是 C 语言。
我以为非也!就我本身做为一个从大学自学编程一路一路踩坑的过来人来讲,我以为学习编程第一步应该是要搞清楚学习编程有哪些必备的网站?咱们是如何查资料的?咱们是如何解决问题的?国内外有哪些技术社区比较好?......
初次以外,你还要搞明白学习编程不是参加应试考试。
了解学习编程有哪些必备的网站以后,你才能更好地进行自学。
通常状况下,但凡是初学编程的同窗,每每都须要课后进行持续学习的。一是由于你可能刚学编程,老师教的东西你听不明白。二是由于程序员这个行业自己就须要不断学习。三是由于大学里面教的东西每每和社会实际须要脱节,只有自学才可让你技术和社会不脱节。
推荐几个我经常使用的学习编程的网站:
a.中国大学 Mooc
上面有不少名校的课程和国家精品课程比较适合咱们夯实编程基础。好比下图是南京大学的一门关于软件工程的大学选修课。
b.慕课网
上面有不少比较适合入门的免费课程。另外,若是你须要实战项目视频资源的话,也能够在慕课网找到(慕课网打钱!!!)。
c.哔哩哔哩
是的,你没看错!看 B 站也能学习!B 站上面有不少优秀的学习资源以及优秀的 UP 主好比 Guide 哥。
d.LeetCode
国内的公司慢慢开始向国外的面试形式靠拢,手撕算法已是不少大厂的标配了,不管是社招仍是校招。LeetCode 这个网站的话,是咱们平时刷题必备的一个网站。
在你初学编程的阶段,也能够常常去上面找一些简单难度的算法题来作。
e.极客时间
主打付费学习的一个付费学习社区(极客时间私聊我打钱哈!)。不过课程的质量大部分都挺高的,我本身也看了里面不少的课程,而且不少课程都是 Java 领域大佬级别的人物讲的。
了解了国内外有哪些比较好的技术社区以后,你才有机会认识到更多更优秀的程序员,看到更多对你有帮助的东西。而不是说,整我的的思想都局限在学校。这点是很重要很重要的! 比较好的技术社区的话有:Github(稳居第一位好吧!开源项目交流社区)、Stackoverflow(一个程序设计领域的问答网站,网站容许注册用户提出或回答问题。和知乎很像,重大的一点不一样是 Stack Overflow 能够对问题进行打分)、v2ex、掘金、csdn、segmentfault 、知乎......。
3.学会使用 Googgle 搜索,学习和解决问题效率提高一个档次
知道了要使用 Google 搜索以后,你学习编程的和解决的问题能够提高一个档次。若是你实在是没法越过那道墙的话,能够试试必应搜索。
你或许也发现了。不少成绩特别特别优异的同窗,他们的编程能力其实并很差。在大学的时候,那些编程能力最强的每每是那些成绩比较通常的。
为何会这样呢?
我以为主要是一个思惟的转变问题。不少人学习编程的时候,老是想着我要把这个 API 记下来,把这个库的用法记下来。这样学习,致使的结果只有一个那就是你会很难受!由于,这些根本不是要死记硬背的东西啊!真还当这是上课考试啊!你要从如何用你学的东西来解决实际编程问题出发,站在作一个实际的项目的角度来学习。
拿我本身来讲:我平时也会写 Python,基本就是本身看着官方文档或者一些书籍的教的语法跟着写。若是哪一个地方不会了,我就去查一下。
大部分最新的资料/技术都是国外那边的,基本上大部分都是英文的。听说 90% 以上的程序员都不习惯直接看英文文档,都会选择看别人的翻译/总结或者书籍。可是,书籍或者别人的翻译/总结都会比较慢,并且不免会有我的主观因素影响翻译效果。
这个时候不少人就会说了个人英语很差啊!彻底看不懂英文文档。
别担忧!有道翻译和谷歌翻译就是你最好的老师。若是是使用 Chrome 浏览器的话,我还推荐你安装一个 Mate Translate 插件。 这个插件对于网页阅读英文文档太友好了,能够一站式翻译您的网页以及标记的文字段落。使用效果以下图所示:
<img src="https://imgkr.cn-bj.ufileos.com/8428d921-f8a1-43ab-ab40-f5a65e12bdc5.png" style="zoom:50%;" />
不看优秀的代码,你写的代码质量很难提升。
虽然要多看优秀的代码,可是也不要被 “最佳实践” 所束缚,不少时候实际是根本不存在适用于任何场景的“最佳实践”,没有银弹。
有哪些优秀的代码值得学习呢?
拿 Java 来讲,不知道阅读什么源码的话,能够先从 JDK 的几个经常使用集合看起。另外,我比较推荐看 Dubbo 的,由于感受会稍微相对容易一点,模块划分清晰,注释也比较详细。搞清楚了 RPC 的基本的原理,知道如何本身实现一个 RPC 框架以后,看起来就没那么吃力了。
另外,随便一个框架的源码都 10w+行了,都看一遍是不可能的。要挑选比较重要的地方看,就好比看 Spring 源码的话你必定要看 IoC 和 AOP,要知道一个 Spring Bean 是如何一步一步被建立出来的。你要看 Spring Boot 源码的话就要知道 Spring Boot 的启动机制是啥,Spring Boot 是如何实现自动配置的。
必定要多看好书!像《重构》、《代码大全》、《代码整洁之道》这类书是程序员标配、必读的书籍。
看书相比于零散的看一些文章学习更加系统。固然,网上也有不少比较系统的学习资源,好比你要学习 Java 的话,能够看我开源的 JavaGuide (「Java 学习+面试指南」一份涵盖大部分 Java 程序员所须要掌握的核心知识)。
初学编程第一步就是选择一门适合本身的编程语言入门。
选择的时候,无非是要从下面几点考虑:
下面这份数据来自 TIOBE 官网统计的 2020 年 7 月份编程语言排行榜,也能够做为你的参考。从统计结果能够看出,C、Java、Python 仍是很强势的,这弟兄仨基本常年就是前三(Java 和 C 常常争第一)。另外,R 语言的进步也很快,一样值得关注。
再来看一下 PYPL 指数。 这份指数数据主要描述的编程语言的受欢迎程度,具体受欢迎程度是由分析 Google Trends 得出。从统计结果能够看出,Python、Java、Javascript 三者稳居前三。
再来看一下编程语言的平均薪资水平和使用年限。这份数据来自于 Stack Overflow 2019 Survey 。咱们须要格外关注的是 Go 语言。Go 语言背靠谷歌,薪资比较高也不奇怪。而且,国内如今不少大公司好比腾讯使用 Go 进行项目开发的愈来愈多了。
相信你看了上面这么多关于编程语言的介绍以后,你必定能够选择一门适合本身的编程语言进行学习和深刻。
编程语言只是工具。咱们的确须要有一门比较擅长的编程语言,可是,不是任什么时候候,咱们作任何东西都要使用这一门编程语言来作。好比 Java 适合网站开发而 Python 更适合作数据分析。选择合适的语言作合适的事情很重要。 再好比你想要作全栈开发的话,还可能须要掌握多门编程语言。拿我本身来讲,也算是半个全栈开发,我主要是以 Java 作后端开发,Javascript 来进行前端开发。
我见过不少人学习编程一年多了,本身敲的代码可能还不到 1000 行。而后, 你让他作用本身学的编程知识作个什么东西,他就蒙了。
学习编程以及提升编程能力最直接的办法就是实践!不断实践!特别是在编程初期的时候,积累代码量格外重要。
就好比你学习 Java 后台开发的时候,能不能经过本身学过的知识独立作个网站呢?再好比你搞懂了某个框架原理以后,能不能模仿着去写一个简单的呢?
咱们实际项目开发中是比较忌讳造轮子的,可是,实际学习过程当中造轮子绝对是最本身百利而无一害的! 就好比我以前搞懂了 RPC 的原理以后,就本身动手写了一个简单的 RPC 框架。个人 RPC 框架确定是没法和 Dubbo 这类已经这么成熟的相提并论。可是,在本身去写 RPC 框架的时候,更加加深了本身对于 RPC 框架的认识。实现的过程当中,遇到了不少问题,解决问题的过程当中也提升了本身的编程能力。总而言之,造轮子是一种特别可以提升本身系统编程能力的手段。
多实践不是说拿到问题就直接开始写代码、不是不学习理论知识。多问本身 why ,而不是 what。 就好比技术选型的时候,相同的功能可能有不一样的解决方案,你是人云亦云地不顾项目实际须要去选择,仍是本身通过详细的对比呢?想固然确定是根据本身项目的实际须要,而后通过各类对比以后选择!
“ talk is cheap, show me code”这句话虽好,可是请不要忘记思考!换句话说就是:多写代码虽好,可不要贪杯哦!
不要沉迷框架,多花点时间去修炼内功——底层技术。不少人以为在学校里面学的数据结构和算法、计算机组成原理、操做系统这些东西工做以后根本用不到。而后,就想固然地以为这些东西不重要。
若是你暂时以为这些东西没有用,极可能是如今学习某门技术只是浮于表面。举个例子:若是你要看懂框架或者某个类库的源码,那数据结构是必需要搞懂的吧!若是你要培养和提升本身解决问题的能力,那算法确定是必须吧!
为何要修炼内功?
拿 Java 举例子,有哪些比较底层的技术呢?
总结知识不是把本身学到的东西按照老师的说法完完整整的整理下来,而是结合本身的理解和补充整理下来。
将本身学到的东西分享出来,一方面能检验本身是否掌握,另外一方面还能加深本身的理解和认识。
分享和输出的方式有不少种,给你们推荐几种最多见,同时也是我最经常使用的学习方式。
能够养成写博客输出的习惯。我在以前有写过一篇文章来讲为何要写博客:程序员写博客很重要吗? 。
简单来讲,主要有下面 👇🏻 几点缘由:
这个时候,你确定就纠结了: 我该在哪里写博客呢?
做为一个从大二开始就坚持写博客,期间折腾了无数次我的网站的我来讲: 我推荐先找一个不错的博客平台好比掘金,而后在博客平台上写博客,后面能够本身搭建本身的博客网站。
这个时候,你确定又要纠结了:我该怎么搭建本身的博客呢?
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%;" />
通常公司都会有内部的技术讲座以及博客平台。
你能够在公司或者项目组内部组织技术讲座,这样不只能够增长本身的存在感,还能提升本身的表达能力。
你也能够在公司内部的博客平台分享本身写的博客,这样你写的东西就能被更多人看到了!
你能够在 Github 分享不少东西,你的学习笔记、本身作的实战项目、本身造的轮子......(资源类的不太推荐,太容易侵权)。虽然,如今 Github 被不少人单纯玩成了引流工具。可是,总体来讲 Github 总体技术环境和氛围仍是很不错的!
<img src="https://imgkr.cn-bj.ufileos.com/72daad30-f644-4f3c-8682-edf981737b1b.png" style="zoom:50%;" />
另外,最好的话是要给项目弄一个英文版本,项目代码中的注释最好也要是英文的。毕竟是开源,最好是能准守开源精神使用世界通用语言(这一点我本身也没作好,反思!)。
这篇文章,我站在本身的这些年自学的角度,掏心窝子地说了不少话。看了这篇文章以后,哪怕你只学会了要使用 Google 搜索我都以为开心,也但愿这篇文章可以影响到更多人。
另外,文中讲了不少编程领域不可争的事实或者说正确姿式好比:不要以学生时代应试考试的方式学习编程、多实践、造轮子是一种特别可以提升本身系统编程能力的手段等等。说了这么多,若是你没有将这些学习编程的正确姿式用到本身平时学习中的话,这篇文章对你的帮助可能很是有限。
这一期原创分享就结束了!让咱们一块儿变强!!!