揭秘互联网各岗位的真相,你心仪的岗位究竟有多残酷?
来源 | TechFlow
如若转载请联系原公众号
最近,有一些小伙伴在知乎里问我就业岗位选择的问题,这个话题我之前也写过,但是感觉没有很到位, 所以今天再和大家详细聊聊这个话题。
就业选择是一个非常严重的天然矛盾。在我们学生时代,我们拥有选择,但是我们并没有意识到它的重要性。当我们意识到的时候,往往已经失去了选择的机会。我自己就是一个活生生的例子,为了从后端转到算法,实在是付出了很多。我想所有转过行的人应该都会有同样的体会,在有选择的时候好好珍惜,尽可能不要转行。
希望今天的文章能够帮到那些还没毕业的学生朋友,把握好手上的选择权。
技术or非技术
80%的CS学生可能都会面临一次选择,究竟毕业了之后要不要当个程序员?我们上学之前总觉得专业决定职业,我们既然选择了这个专业那么之后也肯定要从事对口的工作。但实际上并非如此,每年CS科班出身的学生真正成为程序员的只有很小一部分,大部分都去做了其他岗位。
大家心里不要预设一个鄙视链,其实技术岗也好,非技术岗也罢,本身并没有高低之分。不要觉得自己是CS毕业的没有做程序员好像很失败,其实并非如此,贴合自己的情况以及兴趣最重要。如果在学习编程的过程当中发现自己实在不感兴趣,及时止损也不失为一个好选择。而且不做程序员一样可以从事互联网行业,互联网公司当中一样有很多非技术岗位,大家比较熟知的就是运营以及产品经理。
估计很多同学对它们的工作职责还很陌生,我简单给大家聊聊我自己的理解。
运营
运营比较贴近业务员,可以理解成经营某一个业务。比如最经典的例子就是公众号运营,如果你亲自做一个公众号你就会发现你除了写文章之外其实还有很多事情要做。比如说设计宣传和引流的方案,比如说和金主爸爸接洽,接入广告,比如说撰写一些文案(自动回复、关注回复),自己做一些logo等等。
运营的工作内容往往和业务相关,如果是电商公司估计要设计各种促销方案,每年双十一大促的方案都是运营想的。如果是游戏公司则是想一些游戏里的活动,促进用户活跃或者是扩大知名度或者是提升交易额等等。我之前听过一个非常厉害的运营大佬的宣讲,他说浅层次的运营看起来像是打杂的,每天做一些很杂很琐碎的事情,但是高层次的运营是非常有技术含量的,更像是一个军师的角色,需要出谋划策,想出各种方案来实现目标。简而言之工作核心只有一句话,就是帮助产品或者是平台获得更大的影响力或者是效益。
产品经理
互联网圈子里有一个笑话是产品经理不是经理,产品经理负责的是一个产品,也是非技术岗里相对比较贴近技术的一个岗位。它的主要工作就是对产品功能或者是迭代进行设计,然后以提需求的形式把具体的功能改动同步给程序员来实现。所以大家经常说产品和程序员是死对头,因为总给程序员派活嘛。
说到产品经理大家总想到张小龙,但是实际上大公司里绝大多数的产品经理负责的不是一个完整的app或者是网站,而是一个非常非常小的点。比如下图是我从点评里截的,可能这里的每一个栏目背后都有对应的产品经理,有些重要的栏目可能还不止一个。他们每天的工作就是盯着一些数据指标,然后想一些可能带来提升的方案交给程序员去做。
大家可能觉得提需求是一件非常简单的事情,其实不然。因为是和程序员沟通,产品需要保证对方能理解你的想法,并且能get到对方抛出的一些技术向的反馈。有时候还需要联系多个团队一起协同,组织会议,跟进多方进度等等。效果不好还需要分析,提出改进方案,甚至是背锅。
运营和产品这两个岗位都非常文科,不仅体现在我们很难用明确的指标去评估一个产品和运营的能力,也体现在这两个岗位从事的很多也都是非CS出身的同学。相信大家也能体会出来,运营和产品的能力其实和现在大学本科的教育是脱节的,并没有一个明确的运营或者是产品的专业,主要还是靠大家业余的思考和学习。
我个人的理解是这两个岗位虽然很多文科毕业的学生参与,但它们都非常需要逻辑。无论是产品的方案还是运营的策略,背后都是需要逻辑支撑的。所以从这点上来讲CS的学生其实还是有优势的,如果大家对这两个岗位感兴趣,不妨可以试着多去分析一些案例当中背后的逻辑。
前端
前端我了解不太多,简单说说。
其实前端的工作大家应该都了解,我们所有看到的页面基本上都是前端工程师做出来的。老实讲我个人不是非常喜欢前端,主要是觉得前端的工作比较无聊。我自己做网页的时候,经常为了一个按钮的位置调整半天。
有些人会觉得前端比较酷炫,还可以参与页面的设计应该非常有意思。但是很遗憾的是,在小公司也许如此。但是在大公司,一般都会有专门的设计师来负责网页或者是app的交互稿。而前端工程师的工作仅仅是照着图纸把它做出来。而且往往做的还不是一个完整的页面,而只是一个小模块或者是交互窗口。
另外一个点是,前端的技术更新迭代非常快,几乎每两三年就会推出新的js框架。而且不同的公司框架都不太一样,比如前东家写react,跳槽了之后换成了Vue,甚至是nodejs,这都是非常常见的。甚至最近还推出了Typescript,甚至以后可能代替JS也不一定。
我想从事前端的话,应该需要对新技术有敏锐的嗅觉,否则可能很容易技术脱节。
后端
我估计很多没毕业的同学可能不太清楚后端的含义,其实后端的意思是服务端,也就是服务器的部分。
前端只负责交互和展示,具体的数据的运算逻辑都是在后端执行的。比如说我们转账,我们在手机上看到钱的数目变化了,这个只是展示的数字,真正和银行进行交互对金额进行修正都是在后台进行的,执行这些逻辑的就是后端。所以从这个例子上,我们至少看得出后端的两个重点,一个重点是和前端交互,另外一个重点就是执行逻辑。
和前端交互的部分其实也没有太多的点可以说,基本上都被框架代劳了。对于初级工程师来说,基本上整天做的就是执行逻辑。执行逻辑就比较骨感了,大部分互联网公司的后端做的都是琐碎的增删改查。实际上你会发现几乎所有的功能都可以抽象成增删改查,你给我点了个赞,等价于往数据库里插入一条数据。你买了个东西,等价于往订单表里插入一条数据。你给别人转账,等价于修改你的余额。
看起来好像很简单对不对,但问题是数据量比较大的时候可能会出很多问题。比如服务器响应能力可能不够,比如数据库可能存不下。为了解决这个问题,设计出了各种各样的技术和方法。像是什么分布式存储,各种中间件,本质上都是围绕这个问题展开的。
所以整个后端的面铺开的话其实非常广,从计算机网络、操作系统,再到数据库,再到分布式系统,再到编程语言的特性以及各类框架。那么很明显的,想要在这个领域有所建树,只是靠着上班的时候写增删改查肯定是严重不够的,一定需要业余付出巨大的努力。
算法
最后聊聊算法,这两年算法非常火热,竞争也越来越激烈,尤其是人工智能的口号喊得震天响,好似入职了算法工程师就是人工智能的从业者,就是行业尖端。
实际的情况可能会让大家失望,大部分算法工程师做的既不是人工智能,甚至连手撕模型都没有,整天打交道的还是SQL、MapReduce、spark这些大数据平台。因为互联网公司的算法绝大部分都是业务算法,也就是说是为了提升业务指标而产生的。比如推荐算法,我们做的模型的目的只有一个,就是为了提升用户点击推荐出的商品的点击率。
点击率怎么提升呢?当然需要投其所好,也就是给他推荐他感兴趣的内容。问题是我们没有办法预测未来,不把商品展示给你,我怎么知道你会点击什么?但是展示给你之后,你点不点都已经确定了,我们还怎么提升点击率呢?所以针对这个死循环问题,我们设计出了许多算法模型,希望可以让模型学到数据当中的一些特征,找到这些特征和点击率之间的关系。
这里有一个问题,由于平台的数据分布和用户行为都是实时变化的。比如商品每天都会上架下架,用户也同样会变化,比如今天发工资了,可以消费一波,明天没钱了,会节俭一些。所以我们没有办法设计出普适的模型来适应所有的情况,唯一的解决办法就是提升模型更新的频率,比如说每天更新或者是每周更新。
当我们开发出新的特征想要提升模型效果的时候,我们也需要重新训练模型,并且还需要把模型上线和之前的模型进行实时比较,证明有效果了之后再替换之前的模型。这中间模型的反复训练,数据的大量生产以及分析,包括进行实验以及结果分析,这一系列事情才是算法工程师工作的日常。至于针对一个新的复杂的问题重新搜集数据设计方案,做出新的模型,这种情况几乎是千年等一回,可遇不可求。甚至很多工程师从业好几年,也没有完整从头到尾实现过一个模型。
总结
说了这么多,不知道大家什么感受,会不会有些失望。
实际上大多数的工作可能在一开始的时候都没有大家想的那么精彩,某种程度上来说,这其实也很正常。因为各行各业都会有些比较枯燥比较重复的脏活累活,这些事情总得有人做。那么显然,这些事情交给新人去做自然是最合适了,随着我们经验的积累,职位的提升,我们做的事情也会随着越来越重要,越来越有挑战,当然给人的压力也就越来越大。
但问题是,很多人意识不到这一点,他们会在前期积累学习的阶段厌倦眼前的琐事,并且武断得觉得是职业的问题。实际上看起来最高大上的算法都如此,其他岗位自然也不必多说了。所以这不是一个选择题而是应用题,我们要考虑的不是如何避免它的发生,而是如何度过它,如何利用这段时间快速成长,提升自己,从而在后面有能力应对更大的挑战。
大家都说面试原子弹,入职茶叶蛋。我之前也一直这么觉得,后来才发现其实是有道理的。你野心有多大,你对自己的能力要求也就有多大。一个觉得用不到的技术就不重要的人,往往也难当大任。一个人总是先具有下一个阶段的能力,才会得到下一个阶段的职位而不是相反。某种程度上来说这也是一种信念感,相信自己所学总有一天能派上用场。在互联网行业当中,几乎所有岗位都非常需要信念感。
最后,希望大家都可以找到自己热爱的事业,都可以有一个顺利稳健的职业生涯。
- END -
推荐阅读:
每日打卡赢积分兑换书籍入口