聊聊码农这个职业(新手最强就业指南)

年年都是最难毕业季,一年更比一年难。想要加入程序员行列,却不知道如何选择企业?这里有最强就业指导和成长规划!今日推荐资深程序员 文礼 的经验分享。

又是一年毕业季,看到知乎上铺天盖地的报考计算机专业择校的问题,作为一名资深码农,想捎几句话给同学们。

首先,关于软件工程、计算机、电子工程、自动化这几个专业,软件工程是最软的,计算机次之,电子工程(也就是EE专业)是最硬的。自动化是软硬结合,偏嵌入式。当然不同学校的专业设置不完全相同,特别是自动化在有些学校是放在诸如机械、汽车或者电气等学院下面的,那就与计算机比较远了,需要注意。

对于码农这个行当,最为接近的是软件工程和计算机这两个专业。但是同时,码农的入口比较宽,行业里面学生物的学历史的都有,学数学的更是不罕见。

自动化、测控这些,对于码农来说虽然有些歪,但是一个是分数线相对较低(往年,今年不清楚),一个是其实可以学到不少硬件知识,如果今后入行制造业(而不是互联网业),这些知识是很有用的。

总的来说,硬件相关的知识,对于底层的码农(不是地位上的底层,而是指操作系统之下的编程)是十分有用的。相对互联网来说,收入略低(大约互联网的1/2-2/3),但是大部分工作时间比较正常,竞争也没有那么激烈。

互联网的码农技术栈其实是不厚的。相对来说,服务器技术的东西更多些,客户端则主要是交互技术(简单来说,用户界面的美观与实用)。

所以如果以互联网大厂为标的,客户端的话其实主要是拼学校,学校要有名,或者离开大厂总部近也是优势,比如深大。又近又好当然最好,比如浙大。

当然,客户端也是可以修炼的。比如谷歌docs,要是在校能修炼到大致写出那个界面的水平,估计大厂是随便进了。(当然,你得首先想办法能打开那个网站)

后端则主要以高并发数据库技术为主轴。听起来很酷,但是其实大部分也就是利用现有商用或者开源技术,真正开发自己的数据库技术的也不是没有,但是很少。

所以以互联网后端为标的的话,主要是要磨练自己的高并发数据库技术相关的基础。包括学习主流数据库技术以及数据库容灾备份技术,负载均衡、服务器部署自动化等相关。这些大部分学校里面是不教的,需要自己补充。(围着Apache开源项目绕一圈就能学会很多)

Java主要是用来写业务逻辑的,也就是负责接收前端发过来的用户请求,然后查库,然后返回结果。这个也是需要会的。(也就是所谓的CURD)

部分头部大厂由于历史原因或者出于性能方面的考虑,会使用诸如rust/go/c++等来写业务逻辑。所以如果瞄准的是这些大厂,也需要会这些语言。

算法岗其实是比较独立的,因为大部分时候它有很明确的边界,就是负责某个算法的研究开发。重要的是算法本身的效率,产品级的运用往往还会有别的工程师按照算法重写。所以最为重要的是算法底子(数学底子)。

如果是金融业当中的码农,主要的门槛是要熟悉金融业务,也就是术语和套路。另外,金融业求稳,追求的不是最新技术,而是最稳定的系统。所以金融业当中的很多系统其实都是颇有年头的。全新的开发并不是很多,大部分时候还是以现有系统的保守作业为主。当然,近年手机银行,手机支付等发展很快,这部分是有一些互联网的毛色的。

如果是制造业,那么情况又有所不同。汽车行业当中,除了汽车生产线上需要的软件之外,汽车内部包括保持汽车正常行驶的核心系统和汽车内的娱乐系统。相对来说,汽车内的娱乐系统因为不对人体造成直接伤害,对软件开发的要求较为宽松,大部分为安卓系统,开发过程和一般手机应用开发类似。

但是汽车本身的控制系统要求就很高了,是一套独特的系统和开发流程,为典型的嵌入式开发。

同样类似的还包括民航机载系统的开发。

嵌入式开发方向的主要能力就是要有软硬件两个方面的知识,计算机组成原理是基本,操作系统原理也要学好,模电数电都很重要,看着示波器写代码是常事。随着嵌入式系统性能的提升,如今C语言已经不是嵌入式系统的唯一开发语言,但是依然是主流开发语言。

同属嵌入式开发的还有医疗器械的开发,以及物联网等。

往嵌入式方向去的话,我建议在校期间就自己淘宝一个树莓派玩玩,做做航模,玩玩乐高机器人,这些都是极为有帮助的。

然后说说像微软、Adobe、Autodesk这样的,软件制造业。计划去这些企业的话,基本上CS(计算机专业)是必须。虽然这些企业也招其它相关专业的,但是基本上是学生大佬,自身能力强+学校好的。

虽然国内也有诸如金山、金蝶、用友等软件制造业企业,但是总的来说我国的软件制造业是很不发达的,这个领域头部目前依然是以外企为主。

外语对于进入这些企业是非常重要的,我个人觉得甚至是比计算机水平更为重要(当然,前提是有个不错的学校+平均的计算机水平)。

通常,美企对于英文的要求较高。特别是对接受过西方教育有特别的偏爱。倒也不是说没留过学的就进不去,但是喝过洋墨水的在这些企业里面更加顺风顺水,这个我觉得基本上是肯定的。

其它非英语母语的欧洲企业,特别是北欧企业则相对来说对英文要求没有那么高。毕竟他们自己英文也不好。当然,如果能会他们的母语,必然是很大的加分项。这些企业最大的好处是假期多。

日企则基本上日语是必选。虽然很多企业并不会在招聘当中硬性要求日语,但是会不会日语与在这些企业当中的发展是紧密相关的。相对的,英文要求大部分很低,托业(注意不是托福)能有个500分,基本就够了。(个人觉得大学6级能一次过的话基本裸考托业都能有个700分)

大部分外企的工作强度都不大,当然钱在今天说来相对头部民企也是差一截。但是如果有意向,码农通过内部转岗去海外总部难度是不大的。而且因为外语的门槛,不至于太卷。对于有这个打算的人不失为一条不错的路。

补充游戏行业

其实游戏行业我觉得没啥好写的,因为这个行业其实对于码农来说是个偏门。大部分游戏制作公司,码农只是其中的一小部分,而且gameplay的编程怎么说呢,基本上就是写脚本,技术栈甚至比互联网还薄。

事实上gameplay更加需要的是广,特别是在如今这个游戏引擎发达的时代。gameplay程序员主要就是要对引擎的使用熟悉。

比较有挑战的地方在于,你会碰到很多千奇百怪的问题,然后要用各种trick去解决它:不要尝试从正门走,因为很多时候性能不容许。我们要的只是看上去OK的东西。

总体上gameplay程序员也是属于大前端,比单纯的网页开发难(但是如果是谷歌docs那种我看还是谷歌docs难)。这个工作的关键是要掌握业界多年摸索出的套路,时刻关心性能。

还有一类客户端是对接平台SDK,这个工种和开发App类似。对游戏本身的理解不需要很高,编程能力本身要好。还有就是技术文档阅读能力,大部分SDK的文档并没有那么好理解。

服务端的开发会比较有挑战,不过和互联网后端相差得并不是特别遥远。而且现在很多游戏引擎自带服务端,可以节省很多事情。

如果是游戏引擎开发,或者要深入引擎进行魔改的话,那么就是另外一个情况了。这部分基本上和去软件制造业相同,要相当深厚的开发功底,并且有相关领域的专门知识。比如图形渲染,比如物理仿真,等等。

【本文来自知乎分享】
https://zhuanlan.zhihu.com/p/384469617

来源:至顶网码客人生频道

0赞

好文章,需要你的鼓励

2023

02/21

10:32

分享

点赞