Image

转行做程序员,难吗?

Viewed: loading...

7 minutes to read


关于程序员这个职业,之前身边好几位朋友都有人问到一些相关的问题,比如:

我其实一直都没有比较好的答案回复给大家,因为说实话,作为一名码龄 4 年的正经程序员,我自己其实也没想清楚,但今天我打算从自己理解的角度来讲讲程序员这个职业

职业门槛

开门见山,程序员是门槛最高的几个职业类别之一。 大部分朋友想当程序员,主要就是看中了这个职业高薪水的特征,不错,程序员的工资确实不低,在众多行业的排名中也能算上佼佼者

picture 0

上图是 2021 年 USNEWS 美国最佳职业排行榜,软件开发高居第二。极高的薪水和较大的就业市场,让这个职业的优势展露无疑。但是大家不难发现,排名靠前的职业的准入门槛都极高(如学历、经验等),程序员虽然是其中门槛较低的职业,但是也绝对不低

我们可以想想程序员职业高薪的原因。付出薪水的企业家之所以支出这么高的研发成本,必然是为了实现自己的商业目标,或是实践战略或是扩大市场占比或是开辟赛道,最终都是为了达成利益的最大化。而程序员则是实现目标中必不可少的一环,谁掌握了优秀的研发资源,谁就有了企业发展的加速器,能够更快的先对方一步推开成功的大门,并把门关上。比如华为、小米等研发支出占比较高的公司,为的就是能够在自己所在行业站稳脚跟,并找机会把对手踢出局

那么如果你不是优秀的研发资源,那么必然不会是企业争夺的对象,自然也不会获得高薪。 如果培训三个月就能让你成为优秀的研发资源,那么这个行业必然供需失衡,供大于求必然也不会带来高薪,所以很明显,这个出发点就是个悖论

但是大家可能会疑惑,为什么我听身边朋友说,培训个三个月,一样能够拿到月薪一两万的工作 offer,这跟你说的根本不一样啊。首先这可能只是个例,培训宣传的都是自己最拿得出手的学生,那这个学生是不是和其他学生在一个水平线上呢,不得而知。其次可能这些学生本来就很优秀,三个月就能够达到企业的招聘标准,那么很显然,不管他在哪行哪业,都能吃得开,只是他刚好选择了这个职业而已。最后,程序员这个行业是一个需要终生学习的职业,技术的发展日新月异,总有好的想法脱颖而出,而程序员就是夸父,必须得不断的加深自己对于这个职业的理解。可能短期内由于行业发展,不少风口上的猪也在东施效颦的去做数字化改造,提供了大量的工作岗位,但是风口上的猪总有摔在地上的一天,当市场上都是程序员的时候,你能凭借自己积累的知识的能力脱颖而出吗?我相信不容易

所以很显然,这个职业的门槛不低

学习路线

看到这里,你就赚到了hhh. 最近发现的最强学习路线:https://github.com/pkuflyingpig/cs-self-learning/

但是,门槛高毕竟是一个客观的要求,如果自己能够认清职业风险,并且有信心和能力接受事实,我相信前面说的,都不是大问题

因为,程序员是一个面向未来的职业! 选他绝对比夕阳职业(如传媒业和出版业和报业等)强到不知道哪里去了。倒不是王婆卖瓜的意思,只不过这确实是经济发展的必然选择。效率带来的提升才能带来经济的发展,而数字化就是带来效率提升的基础设施,因为未来数字化将和电一样,走进各个行业,走进千家万户,而数字化的基础民工就是程序员,数字化的发展是需要时间的,所以自然程序员就业的时长是可保证的,不会哪一天就突然消失

有人说 AI 将来会替代程序员,你这话有漏洞。没错,一些简单的重复劳动交给 AI 没什么不好,就算一些现有的职业被部分替代,那也必然会有新的职业出现,就跟工业化进程中,机器代替人工一样,没有了纺织工人,自然会有纺织机器控制员出现。技术发展也一样,最了解计算机的一批人,在新岗位出现后往往就能快速的完成再分配,找到新的工作

叭叭叭讲了这么多,回到学习路线上。 (下面的学习主要指的是软件开发的应用方向,而不是科研方向)。7 天速成是不现实的,学习时间上,如果是零基础,必须得有六到十二个月以上的深度学习的预期,有基础重新找回来的话,则是三个月以上的学习时间预期

首先得从计算机的原理开始,做任何事最重要的是了解本质。这也是为什么大学期间的专业课包括了 数字电路、计算机组成原理、操作系统、计算机网络 等课程的原因。当然大学专业课还包括了非常多的数学类课程,如高数,线性代数,概率论,离散数学等学科,如果感兴趣可以学习,不感兴趣的话,可以用到的时候同时学习

在比较艰涩的学科学习之余,可以穿插编程语言的学习。比如各掌握一门底层语言(C、C++)、高级语言(GoLang、NodeJS、Java)和脚本语言(Python、JavaScript),这里选自己喜欢的就好,了解完毕后触类旁通还是很快的

掌握了基本的计算机基础和语言后,接下来是需要考虑如何在巨人的肩膀上尝试编写自己的程序了。程序=算法+数据结构,这条精简的计算公式说明了算法和数据节奏的重要性。在这个环节,我们在学习语言的同时,可以同时用语言时间对应的算法和数据结构的知识。这里面语言是形,而算法和数据结构是神,所以这是语言无关的。可以配套在 leetcode 上配套刷相关主题的题目,学以致用,这是最好的学习方式之一

程序之上就是应用,应用的开发离不开各类工具的配合。Git、数据库、网络接口、HTTP 协议、视图层等…从这里开始,根据所选编程语言的不同有非常多的组合可以学习,但是底层的核心思想都是一样的,就是更快更好的完成所需要完成的事情。到这里,大家就可以选择对应职业的 roadmap 进行学习了。这里推荐 https://roadmap.sh/ 这个网站,基本涵盖了现在程序员职业的各类学习路径

最后是找工作。可以再各大技术论坛(掘金、牛客、CSDN 等)上找到对应岗位的面试经验贴,内部大部分都包含了面试的原题,可以针对性的去做准备。面试中考察的内容就和上面学习的内容相差不多,虽然不可否认现在面试题目已经逐渐演化为八股文,没有机会突出每个人对于这个岗位的理解的考察,但是至少也一定程度的具象化了面试的门槛,有利有弊吧

工作内容

我是在大三就找到了前端开发的实习岗位,开发时间算来算去也有四年之久了,关于每天的工作内容,主要包括几方面:

职业发展

从工作后接触的各类程序员同事来看,我想了想下面的一些特质,对于程序员来说是很吃香的

总结

写完这几个方面的同时,自己也梳理和回顾了一下自己的程序员生涯,希望能够给想了解程序员的朋友们一些经验之谈

和其他的职业一样,我们都是在自己擅长的领域创造价值,程序员就是这样一个能够自由发挥自己创造力的岗位,如果看到这里你还能够信心满满,相信我,你会是一名不错的程序员,欢迎 new coder 😜~

Comments

There are comments.

📰 邮箱订阅 📰
不错过每篇更新~
如有发现问题,请点击这里勘误🐶