1. 前言
笔者在计算机这条路上走过不少弯路,诚然现代网络使得信息唾手可得,但是带来的负面影响也不能忽视,那就是全都是过时、或错误的信息! 文章可能比较长,但皆为肺腑之言,至少比绝大多数文章更据说服力,希望各位考虑好再去学习。
过时和错误这些因何而起呢?这里只简要说明一下。
去 B 站、淘宝等渠道搜索学习资料,你会发现所有的东西标题都是 2024 最新xxx,点进去就发现,作者故意去掉时间相关信息混淆视听。没有人分享出最新的知识,因为一线的开发人员本身也没有时间跟你分享。亦或是很多人似懂非懂,不经考证,copy 别人的文章作为自己的博客,以讹传讹最后传播了错误的知识。这些都极大的影响了我们的学习效率!因此,笔者在此结合自己的学习经验,分享一些经典的好书、重要的知识。
2. 英语
学计算机如果你不会数学,关系不大,但是不会英语,事倍功半。非常多的视频、培训机构等明确表示,不会英语没关系!代码都是简单的英文单词,常用的没多少。我只说一句有说服力的话,我不卖课,他卖课。培训机构最擅长以个例去说服你买他的课程,举例子说某某某不会英语,现在是大厂的高管之类的话。第一,现在是 2024 年,往前翻几十年,上过高中就算知识分子了,现在不会英语你可能小厂都进不去。第二,不要拿个例去讲,内特·罗宾逊一米七在 NBA 打球,那你一米七五要不要去试试呢?以上是说明培训机构的话经不起推敲。
下面说明为什么英语重要。
- 代码的英文单词命名都有其含义,都是缩写、或全称,看得懂英文学起来非常轻松。
- 如果你写出了 Bug ,面对满屏的英文报错信息,不懂英文只能硬着头皮搜百度了。
- 比较重要的一点,任何主流的技术,最新的永远是官方文档。不会看官方文档,等着别人翻译好了菜都凉了。虽然可以用翻译软件(我也用),但是某些地方太过于机翻还是要比对一下原文意思。这点很重要,不会看文档对程序员来说简直是灾难。
3. 学Java / Python 前要不要先学 C/C++?
如果你时间足够,我是推荐去学的。这个和英语不一样,这个是纯粹的个人推荐,因为确实有大量的直接上手 Java 的人学的很好。C 语言是一切的基础,连 Java 本身都是用 C 写的。下面说几个注意的点。
- 学完 C 语言(我不是指看过一遍网课,要多学一学),学 Java 或其他语言会非常快,不用担心从头学习的问题。
- 学完 C 语言会让你更了解代码是如何运作的,而不是你点运行,代码就一行一行执行了,对内存更加清晰。
4. C/C++ 效率最快啦,其他语言都不行
这是初学者的常见错误与偏见之一。第一,C 是很快,但是对大部分地方来说,差的那 0.000001 ms 没有用。第二,快的代价是:上手很慢,编译很慢,开发很慢,这对你的老板来讲的不可接受的,你多开发一天,他就多发一天工资。并且这个变幻无常的市场来说,人家产品上线俩月了,你这才开始测试,还有用吗?在后端开发中,现在貌似除非 C++ 无法替代,不然都用 Java、Go 来做了。所以想好你以后的开发方向,再决定深入哪门语言。
5. 基础课程推荐
基础课非常重要,这是你内力的体现。就好像…上高中时候,你的计算能力超强,很复杂的数都可以快速在草纸上算出来,这东西拿出来就一个字:硬。
- C/C++:初学者可以看看郝斌的课程,老师人很好,我还给他发过邮件,他都会回答我问题…想想当时那个问题太二了。
- Java:如果你学过 C++,可以直接看书,Java 核心技术指南
- 操作系统:比较重要,面试常问
- 计算机网络:做后端非常重要,建议反复观摩:计算机网络(谢希仁)讲的通俗易懂。
- 计算机组成原理:做软件的话其实面试不怎么问,但是也要会。
- 数据结构与算法:非常重要,小厂可能不考,大厂一定会考。烧脑的属于,建议慢慢啃,一天搞两道题。因为很可能一道题做一天。
- 数据库:非常非常重要,后端开发玩的就是数据库。
以上就是你必须学习的基础课程,有了这些你才可以去学习技术,比如 SpringBoot、MySQL、Redis、MQ 等。当然,其实你不学上面这些,也可以去使用这些框架,因为框架的目的就是给你使用,所以已经设计的非常简单易用了。但是,第一,面试会考。第二,基础课程会决定你可以走多远。
6. 前端 or 后端
天天前端已死在那宣传,我都怀疑是前端自己搞的水军。从目前招聘情况来看,十个有九个去卷后端了。现在的情况是前端比较容易,后端需要会前端的同时,又要会大量的后端知识。
但是注意: 我建议找个自己喜欢的学,因为等你学完的时候,还不知道什么情况呢。事情就是这样,我研究生期间的同学,读完三年研究生,回头找工作,还没有他本科同学工资高。甚至他本科同学当时随便去的公司,到他这简历都过不去。没人知道什么情况的。
7. 后端知识推荐
前端我也搞不太懂,在这里推荐一些必会的 Java 后端知识。后端还是 Java 的天下,至少目前国内是这样。Py 和 Go 也有,Go 在慢慢发展,C++ 的话还真比较少。
- MySQL:必会,学多少都不嫌多。书籍:MySQL是怎样运行的,还有一个 MySQL 45讲也不错
- Redis:必会,不上 redis 哪来的速度呢?
- Spring:学 Java = 学 Spring,Spring 已经一统天下了。可以直接学 SpringBoot、SpringCloud
- Mybatis:国内最流行的 SSM ,就是 SpringBoot、SpringCloud、Mybatis。半自动的 ORM 框架。后端就是在数据库里找数据嘛,真让我优化我也不会呀,写写 Mybatis 就不错啦。
感谢您的阅读,接下来我会更新更多的知识!