极客时间已完结课程限时免费阅读

43 | Q&A:聊一聊职业发展和选择

43 | Q&A:聊一聊职业发展和选择-极客时间

43 | Q&A:聊一聊职业发展和选择

讲述:冯永吉

时长08:26大小7.72M

你好,我是景霄。
在前面几节课中,我分享了在 FB 工作的一些经验和感想,不少同学都提出了自己的困惑,也希望我能给出一些职业发展方面的建议。综合这些问题,我主要选取了下面三个主题,来说说职业发展、职业选择方面我的看法。

Q:程序员的岗位主要有哪些类型?我该如何选择?

A:无论是在求职阶段,还是正式进入公司工作后,你都会发现,工程师普遍按技术的不同,分为下面几个岗位。
前端:包括移动(Android、iOS)以及 Web 前端(JavaScript、CSS)开发。
后端(服务器端):主要是服务器端的开发,简单来说,就是输入为请求,输出为响应,发送给客户端。
算法:主要涉及到的是机器学习,比如推荐系统如何更好地实现个性化推荐,搜索引擎返回的结果如何才能更符合地用户的需求等等。
架构:涉及系统架构,偏底层,语言以 C++ 为主。
从薪酬的角度来看,普遍来说:算法 > 架构 > 后端 > 前端。当然,这主要是由市场的供需关系决定的。
就拿算法岗来说,国内市场普遍缺少算法人才,也是因为这个岗位的培养难度更大,需要投入更大的精力。在顶尖互联网公司,参与核心产品研发的算法工程师们,工作三年,年收入 100-200W 人民币是很常见的。
不过,我这里所说的算法人才,绝不是指类似在校生那种,看过几篇论文,写过一些 MATLAB,在学校做过几个科研项目的程度。算法工作岗位需要的算法能力,是你必须身体力行,有某些产品线的实践经历。还需要你真正了解市场,比如今日头条的推荐算法是怎样的,Google 搜索引擎是怎么工作的,头条里的广告排序又是怎么做的等等。
再来说说架构,这也是目前一个热门的方向。我一直认为这是一个很偏工程、很硬核的领域,发展前景也相当不错,可以说是一个产品的基石。就拿刚刚提到的推荐系统来说,广告的定位和排序系统背后,都需要强有力的架构支撑。因此,这一行也可以称得上是人才紧缺,是企业舍得花高薪聘请的对象之一。
与算法不同的是,这个领域不会涉及很深的数学知识,工程师的主要关注点,在于如何提高系统性能,包括如何使系统高扩展、减小系统的延迟和所需 CPU 的容量等等。架构师需要很强的编程能力,常用的语言是 C++;当然,最重要的还是不断积累大型项目中获得的第一手经验,对常见的问题有最 principle 的处理方式。
最后说说后端和前端,这是绝大多数程序员从事的岗位,也是我刚进公司时的选择。也许比起前两个岗位,不少人会认为,后端、前端工程师的薪酬较低,没有什么发展前景。这其实大错特错了!从一个产品的角度出发,你可以没有算法工程师、没有架构师,但是你能缺少后端和前端的开发人员吗?显然是不可能的。
后端和前端,相当于是一个产品的框架。框架搭好了,才会有机器学习、算法等的锦上添花。诚然,这两年来看,后端和前端没有前两者那么热门(还是市场供需关系的问题),但这并不代表,这些岗位没有发展前景,或者你就可以小看其技术含量。
比起算法和架构,后端、前端确实门槛更低些,但是其工作依然存在很高的技术含量。比如对一个产品或者其中的某些部件来说,如何设计搭建前后端的开发框架结构,使系统更加合理、可维护性更高,就是很多资深的开发工程师正在做的事。
前面聊了这么多,最后回到最根本的问题上:到底如何选择呢?
这里我给出的建议是:首先以自己的兴趣为出发点,因为只有自己感兴趣的东西,你才能做到最好。比如,一些人就是对前端感兴趣,那么为啥偏要去趟机器学习这趟浑水呢?当然不少人可能没有明确的偏好,那么这种情况下,我建议你尽可能多地去尝试,这是了解自己兴趣最好的方法。
另外,从广义的角度来看,计算机这门技术存在着 study deep 和 study broad 这两个方向,你得想清楚你属于哪类。所谓的 study deep,就意味着数十年专攻一个领域,励志成为某个领域的专家;而 study broad,便是类似于全栈工程师,对一个产品、系统的 end to end 都有一个了解,能够随时胜任任意角色的工作,这一点在初创公司身上体现得最为明显。

Q:如何成为一个全栈工程师?

A:相信屏幕前的不少同学是在创业公司工作的,刚刚也提到了,创业公司里全栈工程师的需求尤为突出。那么,如何成为一个优秀的全栈工程师呢?
简单来说,最好的方法就是“尽可能地多接触、多实践不同领域的项目”。身体力行永远是学习新知识、提高能力的最好办法。
当然,在每个领域的初始阶段,你可能会感觉到异常艰难,比如从未接触过前端的人被要求写一个页面,一时间内显然会不知从何下手。这个时候,我建议你可以先从“依葫芦画瓢”开始,通过阅读别人相似的代码,并在此基础上加以修改,完成你要实现的功能。时间久了,你看的多了,用的多了,理解自然就越来越深,动起手来也就越来越熟练了。
有条件的同学,比如工作在类似于 FB 这种文化的公司,可以通过在公司内部换组的方式,去接触不同的项目。这自然是最好不过了,因为和特定领域的人合作,永远比一个人单干强得多,你能够迅速学到更多的东西。
不过,没这种条件的同学也不必绝望,你还可以利用业余时间“充电“,自己做一些项目来培养和加强别的领域的能力。毕竟,对于成年人来说,自学才是精进自己的主要方式。
这样,到了最后,你应该达到的结果便是,自己一个人能够扛起整条产品线的开发,也对系统的整个工作流程有一个全面而深入的理解。

Q:学完本专栏后,在 Python 领域我该如何继续进阶呢?

A:在我看来,这个专栏的主要目的,是带你掌握 Python 这门语言的常见基本和高阶用法。接下来的进阶,便是 Python 本身在各种不同方向的运用,拿后端开发这个方向来说,比如,如何搭建大型系统的后台便是你需要掌握的。一个好的后端,自然离不开:
合理的系统、框架设计;
简约高效的代码质量;
稳健齐全的单元测试;
出色的性能表现。
具体来说,你搭建的系统后端是不是易于拓展呢?比如过半年后,有了新的产品需求,需要增加新的功能。那么,在你的框架下,是否可以尽可能少地改动来实现新的功能,而不需要把某部分推倒重来呢?
再比如,你搭建的系统是不是符合可维护性高、可靠性高、单元测试齐全的要求,从而不容易在线上发生 bug 呢?
总之,在某一领域到了进阶的阶段,你需要关注的,绝不仅仅只是某些功能的实现,更需要你考虑所写代码的性能、质量,甚至于整个系统的设计等等。
虽然讲了这么多东西,但最后我想说的是,三百六十行,行行出状元。对于计算机行业,乃至整个职场来说,每一个领域都没有优劣之分,每个领域你都可以做得很牛逼,前提是你不懈地学习、实践和思考。
那么,对于职业选择和发展,你又是如何看待和理解的呢?欢迎留言和我一起交流探讨,也希望屏幕前的一直不懈学习的你,能找到属于自己的方向,不断前进和创新,实现自己的人生理想。
分享给需要的人,Ta购买本课程,你将得18
生成海报并分享

赞 29

提建议

上一篇
加餐 | 带你上手SWIG:一份清晰好用的SWIG编程实践指南
下一篇
结束语 | 技术之外的几点成长建议
unpreview
 写留言

精选留言(21)

  • 天凉好个秋
    2019-08-19
    请问老师,大数据岗位和文中提到的四种岗位的各种对比是怎样的呢?一直不清楚大数据岗位方面的情况,希望能得到老师的解答

    作者回复: 看具体是做什么了。如果只是data analyst,那基本上就是初级的统计知识,写写sql这种,技术发展一般。如果是data scientist,建模算法的那和机器学习工程师差不多

    共 2 条评论
    24
  • 吴小智
    2019-08-19
    谢谢老师,目前是后台开发,希望能往底层、架构发展,加油。
    共 2 条评论
    9
  • Carl
    2019-10-31
    感谢老师,自己是通过自学Python转为技术岗位的,目前从事的是Python爬虫的工作,已经感觉到发展有限,想往算法方向发展(因为对算法有一定的兴趣,而且薪资待遇更高),但是现在比较迷茫没有学习的路线,总是东打一下西摸一下(感觉各方面都欠缺,技术不够扎实,Linux所知甚少,数据结构与算法也是自学的半吊子),想请问老师我如果想往算法岗发展,技术进阶路线大致是什么样的呢?

    作者回复: ML基础知识得学习一下?不建议去啃书,可以看看andrew ng的公开课,最重要的得找些工业届得实践

    6
  • Geek_pymanu
    2019-08-19
    老师,可以说说运维工程师的职业发展么?在硅谷大厂是不是已经被消灭的差不多了

    作者回复: 公司里有类似的职位,production engineer。抱歉,这个不是很清楚了

    共 4 条评论
    6
  • rogerr
    2019-08-19
    老师的专栏确实偏向于开发方向,对于运维来说还是难度大,解决问题的角度也不一样,还是希望能看到Python和运维结合更紧的栏目。
    5
  • somenzz
    2019-08-19
    专栏快结束了,非常感谢景霄老师,期待老师新的专栏。

    作者回复: 也谢谢你们的支持

    4
  • 自主
    2019-09-25
    老师,运维转安全如何?如果读研究生安全方向和人工智能哪个比较好,对比之下。

    作者回复: 总体来说,人工智能肯定好太多了,但是也得结合自己的兴趣

    3
  • 许童童
    2019-08-19
    老师说得好啊,我现在就在不断学习,属于老师说的study broad,正在大前端、全栈的路上前行,实现自己的人生理想。跟着老师一起精进加油。
    共 1 条评论
    3
  • ANDER
    2020-06-09
    老师您好,请问data engineer的职业发展前景如何?
    1
  • Geek_36d
    2020-05-15
    老师您好,想问一下对于想找算法岗的在校生,本身对机器学习感兴趣,但是导师手底下又没有相关项目,应该怎么准备呢?还是直接换方向?

    作者回复: 如果你确实对ML很感兴趣的话,建议换导师。你如果是以就业为导向的,想办法找个实习是最好的,有了第一份实习,积累了经验,后面就会顺利很多

    2
  • Quincy
    2019-09-19
    老师,devops该怎么发展,校招是后端开发,被迫转了Devops,全是一个人做内部系统,前后端都写那种,我该怎么发展

    作者回复: 你要是真的是career driven的话,想办法找找机会转去做研发,公司如果有hackathon的话,是个不错的机会,通过做项目转方向。devops确实前景一般

    共 2 条评论
    2
  • 及時行樂
    2020-05-18
    首先真的感谢景霄老师,通过这门初步学习python仅仅知识一小部分(有C/C++基础,感觉学习一门语言简单很多,哈哈哈)通过专栏领略到了老师的代码风格,与程序的设计思想,很大程度上让我思维有些改变了,这些都是我在学校很少接触到的。(PS:景霄老师,嵌入式与linux驱动工程师感觉都被计算机行业遗忘了呀)

    作者回复: 很高兴对你有所帮助,谢谢你的支持

    1
  • Lonely绿豆蛙
    2020-01-30
    虽然领域没有优劣,但是因为计算机行业的飞速发展,各领域的机会和前景是有很大区别的,近几年就是所谓人工智能的相关技术处于风口浪尖,现在一个计算机从业者,说自己不懂人工智能都不好意思面试了,一个还在校的本科生或研究生,不学深度学习更是担心工作的问题。请问景霄哥,作为一个非人工智能方向的研究生,该不该向人工智能方向靠近呢?

    作者回复: 先试着接触接触看看感觉怎么样

    1
  • wnz27
    2019-12-04
    感谢老师!收获不小,增加了很多自我的反思和拷问
    1
  • Carl
    2019-10-31
    请问老师,爬虫工程师的发展如何呢?

    作者回复: 一般吧

    共 2 条评论
    2
  • Geek_2ef0b7
    2021-09-08
    订阅比较晚,现在看也大有裨益,谢谢老师
  • 技术修行者
    2019-12-14
    无论选择哪个方向,做深入了,都是有前途的,关键是得用心!
  • 被炸的油条
    2019-10-22
    目前想往全栈工程师方向,自己想独立完成的一个项目就是基于python做一个A股的量化分析交易平台,这也是我订阅这个栏目的原因,知识点虽然都不深,但还是感觉学了不少东西,谢谢!

    作者回复: 谢谢你的支持

    1
  • 扶幽
    2019-10-13
    太快了,竟然完结了,希望老师能够出新的专栏,我会继续支持的!

    作者回复: 谢谢支持

    1
  • 李亮
    2019-08-20
    android和ios开发 算前端吗?

    作者回复: high level上看算是