想进入互联网行业,应该做些什么?

0. 为什么写这篇文章

可能有的读者会问:写这篇文章的意义何在呢?
那么,我可能会稍微思考一下,然后给出以下解释:

  1. 首先,作为在互联网浸淫10年的菜鸟,一路摸打滚爬,也算是总结了一些不知可否称之为经验的经验,想分享给后来人
  2. 其次,总结本身就是一种对过往的梳理,可以查漏补缺,进一步提升自己
  3. 再者,分享也是一种学习

对于想从事互联网行业的人来说,你可能想知道:应该怎么做以及做些什么?
笔者承认自己不可能分析的面面俱到,但是,尽量抓住重点。这里,我简单的从人生三个不同阶段进行划分,并罗列出每个阶段应该做的一些事情。

1. 高中阶段

高中阶段,学好功课为主,可以适当的培养编程兴趣。

一考定终生。考个好大学可以为你增色不少,甚至可以说对大部分人的后半生、职业生涯会产生至关重要影响。举个例子:在未来找工作的时候,当你的简历被各个互联网公司筛选时,他们会把毕业院校做为十分重要的一项指标(假设两个编程能力相同的人,一个是普通二本、一个是211、985。你觉得HR会优先录取哪个人?为什么?)。

更有些招聘者会说出:”考不上好大学的都是智商有问题”这种极端的话语。
但是,由此可见一斑。
学历重要不重要,只有用到的时候才知道。对于大部分人来说,学历决定着人生的天花板到底有多高。

这个阶段不做过多解读,重要的事情说三遍:好好学习、考个好大学,好好学习、考个好大学,好好学习、考个好大学。

2. 大学阶段

进入到大学之后,本身意味着你已经做出了一个人生最大的选择,选择了自己喜欢、热爱的方向(当然是大部分人)。那么,对于接下来的四年大学生活,不仅需要给自己做一个规划,更需要对自己接下来需要掌握的知识进行梳理,不要落到“大学毕业即失业”的境地。

对于未来想从事计算机编程的学生来说,整个大学期间主要课程+选学的课程,大概需要学习20+门左右,需要分清主次。

1.关于计算机的基础课程

  • 《计算机组成原理》
  • 《计算机网络原理》
  • 《计算机算法导论》

举个例子,你开车的话,不知道车的各个部件是怎么运作的,只能算个会开车,不能称之为资深玩家。
互联网行业级别:入门小白 -> 高级工程师 -> 资深专家 -> 计算机科学家。
大部分人,终其一生处于前两个级别。

2.关于编程语言

  • C/C++
  • Java
  • Golang
  • Python

在计算机领域基本是C生万物,万物共生。
首先,整个互联网就是构建在C语言之上的。其次,很多编程语言底层还是基于C语言开发的。
学习的编程语言决定着:未来薪资的多少以及在计算机领域可以达到的高度。
做底层开发 C/C++,做应用层开发:Java、Golang、Python等

3.关于算法

  • 刷LeetCode/牛客网
  • 参加编程竞赛

算法有多重要,我已经不想多说了
程序可以认为是:数据结构+算法
当你面试的时候,各种理论讲的再流利,算法题做不出来,基本可以后会有期了。

4.关于操作系统

  • Linux

    1.常用命令行工具
    《鸟哥的Linux私房菜》、各种网上博客、参加专业运维培训
    2.常用服务搭建

  • Windows

    1.常用编程软件使用
    2.Linux子系统使用

  • Mac OS

    1.常用编程软件使用
    2.常用命令行工具

各个公司线上服务器跑的都是基于Linux内核的各种分发版本(国内用的最多的是centos)。
Mac os、Windows则是各个公司开发常用的操作系统。

5.关于英语读写能力

  • 日常口语交流
  • 日常英语书写
  • 计算机常用词汇掌握

想去外企、国外工作的,英语必不可少,至于为什么去外企?那就是福利、待遇、加班的博弈了。

3. 大学毕业阶段

当你处于这个阶段的话,首先恭喜你已经可以靠自己立足于这世间了。其次,要告诉你一件可怕的事情:漫长的加班之路已经对你开启。

到了这个阶段,基本分为几类:

  1. 继续深造
  2. 校招进入一家公司
  3. 进入社会,通过社招进入一家公司
  4. 其他专业出家来做开发的

这里重点说一下关于社招需要掌握的一些技能。

1.关于算法

  • 刷LeetCode最少100道

    面试时,算法具有一票否决权。
    稍大点的公司,必不可少。难度:中高级

2.关于计算机基础

  • 进程、线程、协程,I/O多路复用等原理
  • 系统调度原理
  • 网络原理
  • 数据库索引、存储引擎

    考察对底层原理的掌握程度,其决定了职级高度

3.关于常用服务级别组件

  • 缓存(常用Redis)
  • 数据库(常见MySQL)
  • 消息队列(常见kafka)
  • 服务注册发现
  • web服务器(常见nginx)
  • 限流熔断
  • 链路追踪
  • 监控
  • 容器、虚拟化

日常开发与之打交道的各种组件,也是支撑如今互联网的大数据量、高并发量的热门法器。

4. 总结

至此,笔者简单的梳理了一下,人生中在不同阶段想进入互联网行业,需要做、以及需要掌握的一些技能。

仁者见仁智者见智,至于重要不重要,当处于对应的环境才会知道。

最后一句话:此生也有涯,此生学无涯。