3. 程序员学习路径规划

1 前言

由于每个人的学习目标并不相同,因此本文主要给出的是两个大致的方向:

  • 如何学习以找到第一份工作
  • 如何持续学习成为全栈工程师

大多数新手其实更关心第一个问题,也就是:我要学的什么程度才能找到第一份程序员相关的开发工作?

这其实和你的目标岗位、以及你的天赋能力有关。

如果你的数学很好,目标是算法工程师,那么你可以学一点基础的C语言语法、能写算法题就足够了,多去参加算法比赛拿各种奖项,含金量大的奖项越多越好,毕业后直接去面试各类大厂的算法岗位,只要能面进去,工资非常高。

可一旦面不进去,那么留给你的机会便不多了,因为中小厂对算法工程师的需求要小的多,虽然你算法好具有一定的优势,但其能给到的工资非常有限。

而且更重要的是,算法工程师几乎是完全面对公司的职业,只要离开了公司,你个人基本无法用算法给任何用户带来价值,也就几乎失去了单干的可能性。

除了走算法工程师这条路外,另一条路子便是实际代码研发了,也就是本站涉及到的内容。

这同样需要看你的兴趣了,各类语言在社会中扮演的角色、涉及到的领域都不尽相同:

  1. C/C++:集中于性能要求高、资源受限的领域:音视频、游戏、嵌入式、数据库引擎研发
  2. python:集中于数据处理相关:爬虫、数据分析、大模型
  3. go:集中于云原生相关的服务器组件开发
  4. rust:目前没有特定的领域,几乎所有C/C++相关的领域rust都可以插一手,很多我们熟悉的东西目前都正在被rust重构,例如Windows系统目前已经开始原生集成rust了。
  5. java:集中于各类企业级应用、服务器开发
  6. linux系统等硬件知识:集中于运维相关的工作
  7. 以及最后的测试工程师,用于测试各类软件的健壮性,需要熟悉各类自动化测试框架

领域很多很杂,想要完全将一个领域吃透再去找第一份工作成本太高,如果你目前还在上学,那么你很幸运,你可以自由探索各类领域找到自己的兴趣所在、然后深入进去学习。

但如果你现在已经毕业、本身会的东西也不多,那最好的方式就是边学边找,面试中被问到不会的东西,自己着重突破。

至于每个领域学什么,可以自行去各类招聘软件上看各类岗位的要求,最好自己在做一个该领域的小项目,更容易通过面试。

2 长远规划

学习编程本身是一个漫长的路程,尤其是想要深入编程这一领域,就更是艰难万分了,一般来说都需要花费数年时间才可。

所以如果你想要深耕该领域,就需要有长期学习的心理准备,否则以目前的经济环境,可能过两年你就会被公司优化掉。

从我个人角度来说,最佳实践就是,永远保持危机意识,要不断设想如果离开了公司、个人能用什么方式获取收益养活自己、或者能快速面入一家新的公司。

每个人都有自己的想法,这里便讲讲我的做法。

我从学习编程之初便没有任何职业的概念,遇到什么便学什么,一通乱闯,直到几乎把各个编程领域都涉足了一点,才恍然自己已然成为了全栈工程师。

但我最初的想法其实很简单:我不想打工,我得自己做出点直面用户的软件。

所以不知不觉间,我一个人便能完成在大公司往往需要一个团队才能完成的工作,而且有些时候,我甚至觉得我个人的效率比那些团队的效率可能更高,因为公司越大、人与人之间的沟通成本也大的出奇,很多时候一个人一周就写那三五个接口。

而从我这些年的经验来看,想要成为一个全栈工程师,大致需要经历以下几个过程:

  1. 初级:了解编程基本语法结构,可以用编程语言做一些算法题
  2. 中级:可以用编程语言写一些特定于系统、较为实用的程序
  3. 高级:对编程语言有深入的认识,进入一通百通境界,可以快速入门全新编程语言并完成一般性程序开发任务。
  4. 精通:从底层二进制到上层程序运行的整个过程有自己的认知,对各大主流编程语言特性有自己的见解,对至少一个操作系统有着深入的编程经验,同时对其它主流操作系统有一定的认知,能够完全独立的开发一个成熟的、可被用户使用的程序。
  5. 大师:常年混迹于github之类的专业社区,时刻了解、学习当下前沿的各类技术,并将其完善进入自己的全栈知识体系之中,能够在软件开发之前完成整体架构的选择与应用、以及整个软件开发周期的规划。

正如你所看到的,在上面我所列出来的五个阶段中,并没有特定于某个编程语言,而是从一个相对比较宏观的角度看待编程语言的学习历程。

所以从理论上来说,你学习任何语言都是可以的,只是难易程度不同而已,相较而言,C/C++是最合适的入门语言,在其基础之上学习其它语言,可以快速提升自己的实力与见识。

3 学习方法

本站的教材主要聚焦于初级、中级、高级这三个阶段,至于最后的精通、乃至大师境界,则需要自己不断的去学习、成长了,因为这两项可以说是因人而异的,并没有过于绝对的学习路线。

其中本站的C/C++实战入门到精通系列文章,便涵盖了初级、中级的内容,如果你顺利学完、并能完全从零构思、实现一个自己的程序,那么你便突破中级,来到了高级。

如果你觉得学起来有些困难,那么可以参考《C/C++基础》《C/C++进阶》这两个专栏,其目的是让你能够对编程语言有更深入的理解与领会。

虽然其中仅仅只是介绍了C/C++,但其实当你以后学习其它编程语言时就会发现,都差不多的。

而《通用知识》便是进入高级领域的系列文章,编程语言可以变,但其中的核心理念在不同语言中却是保持一致的,这便是一通百通的核心。

而本站的其它系列文章,比如《Windows编程》《Vue3教材》《rust基础入门》《python基础入门》等等等等,则可以看作是从高级迈入精通的几个台阶,你可以随便挑自己感兴趣的学习。

你将从这些教程中认识到,如何针对某个系统进行编程,不同语言之间到底有什么区别、不同语言、框架的应用场景、作用意义,依据这些去发挥想象开发有实际意义的程序应用。

最后,当你已经开始不满足于这些广泛、常见的语言框架后,你便需要开始自行探索前言领域的知识,在学习、开发中不断的积累编程经验,不断的去探索编程语言与框架在各个领域、各个功能的极限所在,不断的稳固精通领域,缓缓踏入大师领域。

上面说的有些空乏,没有一定的编程认知应该不太好理解其中的内容。

所以最后再具体的讲解一下有哪些是我认为的、基础且必要的学习内容:

  1. 使用C/C++开发基于Windows的控制台、GUI程序,并学习开发linux程序。
  2. 了解、学习不同类型的编程语言:汇编、C/C++、go、rust、python、Java、C#、kotlin等等。
  3. 深入了解各大主流操作系统的核心可编程的功能:windows、linux、mac等等
  4. 学习前端:html、css、js语言与vue、react等前端框架
  5. 学习后端:http等网络协议、flask等框架、mysql等数据库、REST API设计思想等等
  6. 云原生:docker、k8s、微服务等等

列举出来的内容可能并不完全,但均为我认为值得你去了解或学习的内容。

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux