前两天给某金融科技公司的未来HR(彤姐!)大概介绍了一下各种技术岗的工作内容。当彤姐听完我的介绍并且融会贯通表示收获很大后,我顿时觉得人生充满了意义!因此趁着脑子热记下来分享一下。
本文预计阅读时间 7 分钟。
互联网公司的技术岗位种类繁多,外行人乍一看根本不知道都是干嘛的。什么C++工程师、软件测试、分布式存储C++研发工程师、Java、全栈研发工程师等。其实基本可以分为五种:运维、开发、测试、算法、架构师。 下边一个一个介绍。
1、运维
负责软硬件的安装部署、系统监控、运行维护。
软硬件安装部署:硬件就是搭服务器、网络,公司有网用都得感谢运维大哥。软件方面就是安装操作系统、开源大数据软件或者公司自己开发的软件。
系统监控:整个系统的运行状态监控也归他们管,哪里异常了、系统报警了、磁盘满了、节点挂了等,都是他们第一时间发现。
运行维护:监控发现问题了,比如机器宕机了,或者磁盘满了,怎么办?重启,换硬盘。谁来干?运维来干。运维就像消防队,第一时间去灭火。
运维人员特别需要填坑的能力,比如大数据生态里那么多系统,安装起来其实一堆坑,遇到坑周围人基本都没见过,只能自己上网查,靠经验解决。为你保驾护航的就是运维。曾经跟一个运维大哥出差,登机口检票了还拿着电脑坐地上给人解决网络问题。(我远哥!)
2、开发
什么开发工程师啦,java、C++、全栈、研发工程师啦,都是这个。也就是实际写代码的,做工程、做系统的。
运维只是给你打好了地基、铺好了路。而开发是需要盖楼的,一块砖一块砖去垒,其实也就是给代码搬砖的,也就叫码农。遇到一个客户需求,谁去实现,也就是开发去实现。运维发现系统出问题了,光靠重启和清环境解决不了了,必须改系统代码了,谁来改?开发上。
大部分计算机专业本硕毕业生的职业生涯规划都从开发做起。如果公司不是外包模式,想自己做系统,都需要招开发人员。至于招哪些开发人员,是前端工程师、还是java工程师、还是C++、还是python,取决于想做的系统方向。
还有可视化工程师,其实也是开发。只不过是专门做展示的,也就是画图。开发做了半天其实外行也看不见,还是需要可视化做个界面。你说这个不重要吗,也很重要,人们大多喜欢看图,不喜欢看字。
3、算法
其实开发也离不开算法(这里的算法是广义的算法)。不过由于人工智能和机器学习火起来了,算法岗更偏数据挖掘、机器学习和深度学习。
算法工程师、(大)数据分析师、数据科学家、数据挖掘、机器学习、人工智能等职位大多是搞算法的。这种算法有解决问题的,也有从大数据中发现知识的。比如人脸识别,物体检测、广告投放等。
一般算法岗也需要写代码。不过高级数据分析师、数据科学家可能重点关注方法,写代码就交给其他人去做了。
4、测试
测试是干嘛的?开发做出来的系统能不能交给客户用了,谁说了算?测试说了算,得测过了才能交付。测试是相当重要的,每个开发人员与其说在写代码,不如说在边写代码边写bug,bug是无法在开发这里完全避免掉的。就像一个人考虑事情总会不全面。而那些边界情况,比如用户输入了一个不寻常的输入,结果系统崩了,这是一个系统不能允许的。而谁来尽量保证系统不存在这种错误呢?测试,而且测试和开发同等重要。
测试需要设计很多全面的测试用例。啥是测试用例呢?假如我要开发一个只有加法的计算器,那么一个测试用例就是 输入 1 和 2,要求输出是 3。 一个稍微特别一点的测试用例是用大数来测边界。基本要把用户能想到的和系统交互方式都考虑到,并且模拟一遍,看看系统是不是正常响应。
这种测试用例主要测两个方面:一是功能,一是性能。功能就是结果是不是对的,性能就是多长时间出结果。
曾经和测试打交道的时候,每天痛并快乐的一个事就是收到漂亮小姐姐的微信:“你看我这个测试用例是怎么回事啊”,我一看有bug,改吧。。。
分享一个笑话:
《如何优雅的给程序员提建议》
不建议的提法是:“你这程序有问题。” 程序员的反应是“傻逼会不会用啊?”。
建议的提法是:“你看看我的打开方式是不是不对,好像和我预期的不一样啊。” 这样程序员的反应就是:“卧槽是不是出bug了!”
5、架构师
架构师是每个程序员梦寐以求的职位,每个开发人员都行走在成为架构师的路上。架构师有丰富的项目经验,能领团队,能分析需求,能将产品经理提出的需求转化为系统中的一个具体的功能点,并给出系统全流程框架。比如数据通过什么工具收集,用什么流计算系统预先处理一遍,放在哪里缓存,持久化到哪里。都是架构师需要提前设计好的。而开发人员和运维人员就来具体实施。
架构师的知识储备一般很全面,很强大,有很多年系统软件开发经验。高级开发人员其实也基本可以当架构师了。下边是一个相关要求,要求的技能还是比较全面的。
6、番外:产品经理
除了技术,再加个产品吧。
产品是程序员的天敌,产品来将用户的需求转化为系统功能,并且给架构师和开发提需求,就是甲方了。有时候产品不懂技术就会提很多不靠谱的需求,比如“根据手机壳的颜色自动调整应用颜色,不能接受用户手动输入手机壳的颜色”。。。
业务
介绍完各个职位的工作,下边看看公司业务:大数据、人工智能、云计算、区块链和移动互联。这些业务也是很常见的了。如果要自己研发,每种业务都需要这五类技术人员。
以一个大数据系统为例。架构师设计整体系统架构,运维搭建系统,开发和测试迭代完善系统。期间架构师也会优化系统架构设计。算法其实更多是在现有系统上开发。
除了招技术人,还需要招懂业务的。比如气象局做系统需要气象专家。专家贡献领域知识,比如对流层湿度达到多少就预兆着下雨(我瞎编的),而算法工程师得到这个知识之后就知道用什么数据了,并且将这个知识告诉计算机去预测。
总结
运维、开发、测试、算法、架构师、产品经理。基本就能做出来一个系统了。除了技术,还需要领域专家的支持。搞技术的人除非在某个特定领域钻研很久了,一般来说领域知识都是欠缺的,这也正常,隔行如隔山,各行业专家合作收益最大。
觉得不错可以长按关注!