问答 百科手机端

3. 如何自学编程

2024-03-15 19:48

这题太适合我了,因为我就是从 0 开始自学,并成功转行到 IT !所以,我最有发言权!

自我介绍一下。我是良许,本科及硕士所学专业都是机械,毕业后从零开始自学转行 IT,1 年后被世界 500 强外企所录用,目前是 Linux 工程师。

我曾经将我的自学经历发布到网上,立刻引起了强烈反响,很多知名公众号大号纷纷找我转载。我的故事启发了很多人,很多朋友给我留言说我的故事太励志了,简直是逆袭的代表!

那篇文章的链接如下,欢迎围观!

自学转行不是一件容易的事,但我以我的亲身经历告诉大家,只要你有信念在,你就一定能成功!这句话听着很像是一碗热乎的鸡汤,但是,我自己确实做到了,很享受这个过程,更享受这个过程给我带来的改变。所以,即使是鸡汤,我也希望你们能够再次认同这句话!

除了上面那篇文章,我再详细介绍我转行过程中的更多细节,以及遇到的问题和感悟。正在看本文的你,麻烦您帮我点个赞,让更多人看到这篇文章,希望能够帮助到更多人!

1. 转行之前

前面提到,我学的是机械,毕业后大概率是这样工作的:

编程入门级电脑_电脑编程入门_入门编程电脑配置

(阿不,现在先进得多,主要用电脑 来制图)

但是,命运弄人,毕业后到公司报到时,我阴差阳错的从机械工程师调剂到电子工程师,就因为我的专业里带了「电」(机电工程)!

虽然是电子工程师,但我做了很多编程工作。比如工厂的 FPGA 程序是我负责的,而且我用 C# 开发了一款上位机供部门同事使用。那款上位机集成了非常多功能,同事领导都对它赞许有加。现在 5 年过去了,那款上位机依然在电子及其兄弟部门广泛使用。

后来,领导看我有软件天赋,就让我带领 8 人小团队开发了一款自动校正参数值的软件。这款软件将工厂里的一道关键工序从 1 分钟降低至 20 秒,而精度却提高了 1 倍!我们的产品也因此涨价 5%,团队也获得了「特别贡献奖」!

因此,作为写了大量代码的电子工程师,我开始痴迷于软件开发了。这个是我万万没想到的,我一直以来都对机械非常有兴趣!

命运就是如此。但是,我毕竟是电子工程师,还有电子工作要负责,每天的琐事也很多,无法静下心来写代码,于是我决定转行,变成一名真正的软件工程师。

2. 转行经历

还在第一家公司的时候,我后面又接触到了嵌入式,对其产生了深厚的兴趣,于是我决定转行到嵌入式方向。但是我毕竟是 0 基础,肯定没公司要我。于是,我开始利用晚上及周末的时间,疯狂地恶补嵌入式知识。从 C 语言到 51 单片机再到 STM32 都系统学了一遍。那时候真的是非常疯狂,晚上加班到 8、9 点回来,回来也不休息,直接开始自学,一直学到凌晨 1 点再睡觉,几乎每天如此。

当我有了一定基础之后,在同学的推荐下,我进入到了第二家公司,成了一名真正的嵌入式工程师。但这不代表我已经转行成功,我还有很多东西没学习,并不是一名合格的嵌入式软件工程师。

于是我依然保留着当时的激情,没日没夜的学习。为了节约路上通勤时间,我搬到公司附近住,走路 5 分钟就能到公司。每天我依然 12 点睡,6 点起,学习 2 个小时后再去公司。周末也不休息,依然去公司自学。所以,对于我的转行过程,我经常说的一句话是:没有晚上,没有周末,没有节假日,没有一切娱乐,也没有应酬,只有学习!

电脑编程入门_编程入门级电脑_入门编程电脑配置

因为我也上班,有工作要做,也加班,所以我就是靠这样的挤时间,硬生生的把一天时间变成了 25 小时甚至 30 小时!当时我一直对自己说,现在的加班,就是为了以后的不加班!!

入职半年多的时候,领导见我进步很快,就把一个刚毕业的小姑娘安排给我做徒弟。你能想象,一个 0 基础的机械工程师,通过7、8 个月的自学,居然能够做师傅带徒弟?!

这里我非常非常感谢我的师傅,虽然他没有手把手教我知识,但是他的经验很丰富,又超级有耐心,我有疑问他都很耐心地向我讲解。有他的帮助,我至少节约了 30% 的时间,加速提高我转行成功的进程。

同时,我也非常感谢一个 群,我有问题的时候,群友都很积极为我解答。而这一个也非常重要,后面详细说。

就这样,在我没日没夜的学习下,我学会了 C语言,51单片机,STM32,Git,,芯片,芯片,软件设计,等等内容,并且有了实战经验。这些内容,在正常情况下,学校需要上 2~3 年的课程,而我在一年多的时间里就自学完成了。此时的我已经是一名合格的嵌入式软件工程师,正式转行成功!

但是后来,决定跟老婆一起去广州,离开了第二家公司。那时我觉得单纯做单片机发展前景受限,一定要结合 Linux 才更有前途。于是在面试第三家公司的时候,我一定要选择做 Linux 的岗位。凭借我之前优秀的背景,我也顺利被广州的一家世界 500 强外企所录用。

那时候,我既不会 Linux ,也不会 C++ ,所以公司能给我一个这样的机会,我也非常感恩!来到第三家公司,我依然开启疯狂模式,继续没日没夜学习。现在我依然在这家公司,独立负责公司项目的几个模块,也是一名合格的嵌入式 Linux 应用开发工程师!

3. 如何自学编程

以上就是我的自学历程,虽然不是非常光鲜亮丽,但也是激励了很多人。有读者朋友告诉我,他把我的文章收藏起来,学习不下去的时候看一眼我的故事,顿时又是满满的能量!我觉得非常欣慰,至少我给转行的人做了一些贡献,哈哈!

现在回到主题,如何自学编程。

3.1 一定要有激情!!!

我觉得这个最重要,所以把它放在第一点。你一定要对你要转的那个方向有兴趣,否则怎么继续下去?而且你一定要有激情,否则你能像我做到每天 12 点睡 6 点起?能做到没日没夜学习?能做到没有晚上,没有周末,没有节假日,没有一切娱乐,没有应酬?

如果你没那个兴趣的话,我劝你尽早放弃吧。如果你有兴趣但没激情,那么你可能就要花更多时间去学习了。这里放一张我当时自学到深夜的照片,也激励一下大家。

编程入门级电脑_电脑编程入门_入门编程电脑配置

你要有激情,你才能坚持,这是前提条件。你们应该能感受到,我是一个特别能坚持的人。关于我特别能坚持,以及非常自律这件事,我也分享了两篇文章,欢迎围观。

3.2 一定要有合适的资料

自学编程,资料的重要性不言而喻。但是,资料有的是文本,有的是视频,那要看文本还是视频?这个话题其实有一定的争议性,但是我更倾向于看视频。为什么呢?因为一个优秀的视频凝结了讲师大量的心血,他已经帮你将重点知识归纳总结了,你只需跟着他的进度走就行。

而书籍其实一般大而全,方方面面都讲到了。但是有很多知识点其实并不高频,工作中用到的概率不大。而对于新手而言,经验比较缺乏,不能有效筛选,容易钻牛角尖。时间宝贵,一定要花在刀刃上。

但是,如果你想成为大牛的话,那最终一定一定要回归到书籍。经典书籍承载了前人智慧的结晶,仔细品读一定能挖掘出更多你所不知道的技术。

我在自学过程中,以及在做公众号过程中,积累了大量的学习资料。

电脑编程入门_入门编程电脑配置_编程入门级电脑

3.3 一定要找到组织

学习是一件很枯燥的事,如果没有一些志同道合的朋友,很容易就坚持不下来。但是现实中,有时候我们可能找不到有共同目标的人,那我们可以去网络上找啊,现在网络这么发达,找个人还不容易。

当时我加入了一个 群,有疑问的时候就把问题丢到群里,很快群友就帮我解答。同时,有时候学习累了,就在群里跟大家聊聊天,吹吹水,顿时心情愉快了不少。

圈子对于我们来讲实在是太重要了,特别是我转行时以及做公众号时,真的是深有体会!在圈子里,即使你不说话,就看群友聊天,你也能知道一些行业动态,以及大家所关心的话题。有时候群友丢出的问题可能正是你所想知道的,互相讨论能激发出很多灵感。

正因为深知圈子的重要性,我建立了很多技术交流群。

编程入门级电脑_入门编程电脑配置_电脑编程入门

3.4 一定要有输出!!!

输出也非常重要的,但很多人却忽略了输出这件事!等你去做输出的时候,你就会发现,学会是一件事,说出来是另一件事,而写出来又是一件事!

输出会让你把学到的知识重新整理一遍然后再表达出来,而在整理的过程中,你就会对知识有更深入的了解,或者对知识形成一个体系,可以使知识建立关联,更有逻辑性。

我之所以建立公众号,一是想把我的转行经历分享给更多人,激励大家坚持下来;另一个就是整理自己的学习笔记,分享给更多人,同时也以输出倒逼输入,让自己的技能不断提高。

Linux环境搭建 | 手把手教你安装Linux虚拟机

Linux环境搭建 | 下共享文件夹的实现

Linux常用工具 | 使用++远程编辑虚拟机文档

Linux常用工具 | 全能终端神器——

Linux常用命令 | 10个非常有趣的Linux命令

Linux常用命令 | Linux下find与exec的联手干大事

Linux性能优化 | Linux性能检测常用的10个基本命令

Linux命令高级用法 | Linux下 ls 命令的高级用法8例

Linux命令高级用法 | 5分钟 more 命令从入门到精通

Linux命令行工具 | 程序员轻松绘图神器

Linux命令行工具 | Linux里隐藏的计算器,你知道它的奥秘吗?

Linux常用技巧 | 让你提高效率的Linux技巧

Linux常用技巧 | Linux下日志文件过大解决方案

同时我也在知乎开辟了专栏,将我的原创干货也收录到专栏里,欢迎关注!

最近的一篇暴款回答:

4. 小结

花了 3 个多小时,把自己转行过程及转行方法分享给大家,希望对大家有帮助。非常感谢看到这边,还望帮我点个赞,让更多人看到,希望能够帮助到更多多人,先谢过了!

电脑编程入门_入门编程电脑配置_编程入门级电脑

热门