一个朋友是前阿里人,37岁,离职后就职美团。以前投一个面一个,今年想跳槽,但没想到投十个能有两个面试机会就不错了,最后索性又回了阿里做架构。

他在面试的时候,碰见比自己大的面试官,态度和善,一般面试都能过。而如果碰到比自己小很多的面试官,能给你从天上问到地下,好像在说,就这?你也能不会?

我同事的说法:他跟你能不能和得来,年龄是硬伤。但凡你要在他手下干活,年龄又相差较大的话,他一般是不会要的,根本原因就是怕管不住

另外几个朋友,都走的技术管理岗,也35了,有的在网易,有的在滴滴。据他们说,到了这个年纪,就不要想着跳了,找一家合拍的公司好好干吧,自己混个高点的职位,出去好要价,高不成低不就的,同样没人要。

你真的以为裁员裁的是年龄大、股票多的那些人?毕业后同学朋友在华为的也有几个,据他们的说法:人家裁的都是工作十来年,考评普通职级一般,收入和股票都偏低的一群人。也就是:这部分人的工作具有可替代性

程序员职业发展路径有哪些选择?

我们再说说第二个话题,程序员职业发展路径有哪些选择?

程序员一般的发展方向主要是几类:技术专家、架构师、技术管理、管理、产品。

接下来通过例子和大家分享以下四种不同的发展路径及适合走这四类路径的人群的三个关键词。

第一类,程序员-高级开发-技术专家路线

我们通过例子来说明。有一位 Z 先生,他2012年从湖北工业大学毕业,而后去了搜狗担任工程师,做了两年后,跳到了另一家公司叫小麦公社,是当时一家风头正劲的创业公司,担任 B 端高级开发,后来去到了因果树担任 B 端的技术资深开发,在今年2月份入职了杭州阿里巴巴,同样是负责 B 端商家后台部门,担任技术专家,他职业规划最大的亮点是找到自己想要专注的领域并且一直坚持至今。

第二类,程序员-高级开发-架构师

再看个例子,H 先生,他2011年北航毕业,而后选择创业做 SAAS 平台当时担任前端负责人,两年后选择加入搜狗成为一名高级前端工程师,后来去到了音悦台担任架构师,目前在一家创业公司担任前端架构师,他职业规划的最大亮点是在前端领域各个方向都深入见解,而后负责多条产品线的架构设计。

那以上两种技术路线有什么不同呢,应该如何选择呢?

技术专家,是偏理论研究的,对某个或某些相关的专业领域深入了解,能直接或通过提供思路间接解决这些领域的各种问题。

架构师,是偏工程实践的,与技术专家的区别在于它需要一专多能,提供方案解决问题已经不是它最重要的价值,它的价值体现在选择性价比最高的方案;

举个例子,其实你可以把技术专家和架构师的区别类比成科学院院士和工程院院士,你要搞一个语言识别,那是理论,你要做一个 Siri,那是工程。而你,更擅长和向往做语言识别技术还是 Siri 呢?

有些同学可能会说,我的最终目标仅仅是成为一个优秀的程序员,那我想知道你能做到以下 3 点吗?

  1. 写的程序不需要格式化,也是非常标准的,我见过很多程序员写的代码,连空格的使用都没有标准,从上到下给人的感觉就是一片混乱的字符的组合,好的程序应该像诗词,在格式的约束下追求飘逸。

  2. 写的程序没有无用的代码,其他人来评审时找不到无用的代码,也无法在保持同样阅读性的情况下进一步精练。

  3. 在可读性与效率中保持平衡,通常情况下我们优先考虑可读性,但是对于频繁执行的部分,可以牺牲可读性保证效率,但需要书写足够多的注释,注释不要说代码的用途,而要说自己写代码时思考的内容,我就曾经见过有人把一段代码使用自己的思想来改写提高可读性,结果这个代码的目的是越精简越好,这其实就有点好心办坏事了。

如果还不能做到以上几点,那就好好做好明天的事儿就好了,暂时什么都先别想,因为成为一名优秀的程序员是技术路线的基础。

接下来说说第三类,也就是管理路线:程序员—资深工程师—技术经理(技术管理)—技术总监(管理)—CTO(管理)

我们再来看个例子。Q 先生,他在 30 岁就成为了某知名共享单车公司的 CTO,说一下他的职业规划,2009 年首都经理贸易大学毕业加入一家创业公司担任开发移动端工程师,两年后加入 360 担任资深研发工程师,而后加入新浪微博担任移动端部门的技术负责人,而后加入了宜信担任技术总监,在去年 7 月加入共享单车公司担任 CTO。他职业规划的最大亮点是一直在核心业务上往技术管理进阶,最终成为一名优秀的管理者。

谈到这类管理路径,必须要说明下技术管理和管理的区别,技术管理是事情为中心,管理是以人为中心,技术管理主要工作是保证事情能按时按质完成,管理需要考虑团队的士气和稳定性、阶梯性。

最后说一说第四类,也就是技术转产品:程序员—高级开发-产品技术—产品经理—产品管理

在这里,X 先生带来一个海龟码农成功转行产品经理的故事,2009 年毕业于美国工程类名校普渡大学,而后回国在一家外企担任开发工程师,一做就是 5 年,2014 年一个幸运的机会加入了腾讯,当时腾讯面试了 7 轮,拿到了 T1-2,月薪 1W2 的工程师 offer ,基本是刚毕业一年左右应届生的水平。在腾讯主要做手机 QQ 红点系统,做了两年,他从未抱怨。他也给我们展示了所谓“红点”,其实就是手机 QQ 上不同接口旁的红点引流。手机 QQ 流量日活上亿,但是会点击那些游戏、商城、音乐等接口的用户大概只有1%,红点主要就是吸引那些有强迫症的用户点进去引流。从最开始的红点数量的改进,到后面根据不同属性用户设置不同红点,再到后来和其他产品合作比如京东商场,搞红点的竞价排名……就这么一个小功能腾讯专门养了一个团队去做,对于 BAT 这种大公司来说,一个小的模块和功能的改进能带来很大的利润,很多人常年都在做很小一个模块的重复工作,很难独立完整去做项目,里面闲人很多。

所以工作两年后,X 也想做点商业化的东西了,给部门老大反馈了想法没得到支持,在内部其他部门也争取了问了一圈没能成功转岗,于是就想出来,不想继续在腾讯里面慢慢熬晋升了,从腾讯出来是那年是 2016 年3月,T2-3。而后入职了一家投资公司,以产品经理的身份加入,两年过去了,目前已经成为了一名高级产品经理。他职业规划的最大亮点是深思熟虑后立刻决定和行动,没有犹豫,而机会往往更容易留给有准备和有勇气的人。

谈到技术转产品这类职业规划路线,和大家说说开发转产品经理需要锻炼哪些能力

1.商业思维

开发人员以前是和机器打交道,产品经理给出一个需求就按照那个需求做了,从来不想着为什么这样做,做这个需求想达到什么目的,从来没想过你开发的 App ,你做过的程序老板是怎么用它来赚钱的,这就是你转行产品经理要锻炼自己的第一个能力,培养自己的商业思维,培养自己发掘用户需求的能力。产品经理是站在用户的角度考虑产品,以用户为中心。所以技术人员转产品经理要摆脱技术思维,多想想用户的使用习惯,多想想产品的商业目标。

2.沟通表达能力

程序员给别人的印象一般都是木讷,沉默寡言的,也难怪,程序员都是在和机器打交道,不是销售那种和人打交道的工作,不需要说太多话,不需要撕太多逼。而产品经理的工作要和很多部门打交道,要和运营、技术、设计、市场推广等各个部门打交道,在产品宣讲的时候要清楚的向他们传达你的需求,当产品上线你需要给客服培训,这些都需要你有较强的语言组织和表达能力。

3.文档能力

程序员的工作就是码代码,代码是用英文编写的,只有在给代码注释和写产品说明书的时候才写中文,而且写的也是一些琐碎的内容。如果让一个程序员就某一个主题写一篇文章出来,我想大多数程序员可能无从下手。而产品经理工作中要写很多文档,商业需求文档,市场需求文档,产品需求文档,产品说明书,文档表达能力在工作中很重要。

4.项目管理能力

好的产品经理需要一定的项目管理能力。需要推动产品按照正常的步骤,规定的时间,按质按量的发布上线。这里就涉及到,整体管理、时间管理、团队管理、需求管理。整体管理:包含产品从分析规划到产品开发到产品上线运营到迭代优化的全过程进行管理。时间管理是指主要是计划监控跟踪项目进度,把握关键时间节点,确保产品按照规定的时间上线。团队管理:产品经理需要协调很多部门,有技术,设计,市场推广,运营,产品经理是一个无授权的领导者,你多数需要通过自己的影响力,自己的沟通技巧来协调项目的各个成员,所以需要一个相应的团队管理能力。需求管理:包含各个部门反馈的需求,以及自己收集的需求,需求的变更,需求的跟进等。

所以,你觉得你在以上四个能力上有天赋么,有天赋并且你也有意愿放弃技术成为一个产品经理的话,那就一个原则,就是趁早。

好了,以上就是我们的第二部分,程序员职业发展路径有哪些选择,希望大家可以及时对号入座。

如何结合自身优势做好职业规划?

接下来我们聊聊第三个话题,也是比较关键的核心话题,如何结合自身优势做好职业规划?

这个问题实质上其实是要求我们把两件事做好,一是如何增强自己在众多程序员中的竞争力,一是如果保持方向感

先来谈谈如何增强自己的竞争力

1.拓宽业务场景

我们会在很多场合听到对“精钻”这个词语的推崇,包括在职场上,我们常常听到前辈教导我们对待工作要精益求精,但事实上,在某一方面做到万里挑一的大牛是一条可取的道路,却不是职业发展的唯一道路。

尤其是对于那些未来的职业发展规划是进入明星创业团队担任技术负责人的程序员来说,在之前的积累过程中寻找机会尽量多地接触各类业务场景并寻找解决方案,可能是一条更可行的路径。

这里的业务场景分为大业务场景,也分为小业务场景。大业务场景即不同的细分行业,如电商、内容、视频、共享平台等等。我建议程序员们在进行工作选择的时候不要被自己原先所属的细分领域太过限制,认为自己原来在电商公司以后也必须在电商公司。事实上,多去尝试不同领域的公司,去了解不同领域的公司在技术实现上有什么异同,对于程序员更深入地理解技术是很有帮助的。

尤其是当今行业发展日新月异,某一细分领域很难在一个人 15-20 年的职业生涯中一直处于蓬勃发展的状态,如果之后又出现了新的细分市场,复合背景积累的经验会帮助程序员快速切入到新的细分市场。

而小业务场景则是指同一个技术在同一家公司的不同业务范畴。例如算法方向,可以分为排序、推荐、NLP、图像识别和用户行为研究等,攻坚某一领域是一条发展路径,但横跨不是一个领域也是一条发展路径。这就需要程序员自己把握机会,不断跳出舒适区去承担新的业务和需求。

比如曾经有位陈先生,他之前在 BAT 某公司任职 6 年,担任算法方向的程序员。由于之前 6 年公司业务增长很快,陈先生在不同的研发 Team 都参与过项目,因此在广告、排序、推荐、NLP 和用户行为研究领域都有一定经验,但却没有深入的研究。对此他自己也在跳槽的时候表示过担忧:“业务在哪儿需要就打到哪儿,什么都会一点,什么都不精。”

然而没想到的是,这样的背景非常受中小型互联网公司的欢迎。在经过了几家面试之后,最终陈先生拿到了一家已经 D 轮融资的公司算法负责人的 Offer,薪水也比之前有了大幅度提高。

如果没有这样的机会,也可以做到在某一方面非常精通,然后对其他方面有所了解,将自身培养成“T 字型”人才。

2.把握职场节奏

在职场上有一个时间标准:3 年。 3 年时间,一定要在工作内容和职级上有一个质的变化,这个变化可以通过升职得到,也可以通过跳槽达成目标。

初入职场的 3 年,主要的工作内容就是夯实基础,此时基本处于“完成上级交付的任务”这样的阶段。但在这个过程中,员工不能仅仅完成任务了事,而是要不断思考为什么上级要布置这个任务,这个需求是怎么来的,用于解决什么问题,有没有更好的解决方案等等。

之后的 3 年,也就是职业生涯的 3-5 年,作为程序员,需要达到一个小 Leader 的层级,即带领一个小团队(可以仅仅有几个人)负责某一个模块或是功能的研发,此时在上个阶段积累的经验和关于解决方案的各种想法的作用便凸显出来。而此时作为小团队负责人的角色,程序员更多地需要关注上下游的逻辑,能够形成完整的逻辑链条。

工作经验的 5-8 年,此时程序员已经成为了技术负责人,可以独立负责某一个产品的研发,可以成功地推动产品从 0-1 的阶段,此时更多需要关注的便是跨部门之间的合作与沟通,确保研发行程的按时交付。与此同时,更多地关注一些产品设计方面的内容,会对进一步的晋升很有帮助。

最后一个阶段,即工作 10 年以上,此时达到研发总监或是更高的职位会是一个比较理想的状态,而对于这个层次的要求,是对于整个行业能有比较清晰深入的判断,能够感知未来技术发展的方向并为公司提前布局。

3.训练复合技能

除了编程之外,程序员要尽量培养一些其他方面的技能,例如演讲、写作等等。这样做一方面可以为程序员提供一些兼职机会,如主讲技术相关的直播课程、参考文章或书籍的撰写等。类似的机会在提供报酬的同时也会增加员工的知名度和行业影响力,更有甚者,在社交媒体上发表了相关文章之后,吸引了一批志同道合的同行,开始合伙创业,有了更大的机遇。

就算没有这些额外的收益,复合技能的人才在公司内部也会受到青睐。

比如某知名互联网企业的程序员张先生,由于他在面试时给 HR 看了自己在知乎等技术论坛上的文章,因此入职之后 HR 邀请他参与公司每周五下午的技术分享会并作为主讲人之一。

刚开始张先生还很犹豫,毕竟本身的工作内容已经很繁多,很怕接了这个任务之后力有未逮,反而影响了自己的开发进度。但后来因为同事的鼓励和 HR 的反复邀请,张先生还是答应成为主讲人,并且利用每周末的时间准备讲座材料。

因为在技术分享会上的良好表现,入职后不久,张先生被上级重用并在一年后得到了升职。

4.保持紧密沟通

有些程序员认为自己做的是技术性工作,只要写好代码就可以了。这是错误的认知。根据过来人的经验,那些有意识在工作之余关注行业动态,积攒人脉资源,并且乐于与同行沟通的程序员,往往在职业发展的路上走得更远。

一方面,程序员可以通过这些方式随时评估自己在市场上的价值和优势,当行业和技术的风向发生转变时,及时对自身查漏补缺,避免被时代抛弃。另一方面,人脉资源的积累,有时也能对自己下一次换工作起到雪中送炭的作用。

可见,行业信息、公司动态的互通有无对于职业发展有着至关重要的影响,准确地把握行业动态有助于员工抓住一些转瞬即逝的机会。

而对于信息的获取,自己的朋友、前同事、公司 HR 还有靠谱的猎头等,这些都是可以利用的资源,同时也可以参加一些展览、峰会等线下活动。尤其对于那些自己感兴趣的技术方向,尽量积累一些人脉资源,一次有效的内推往往比海投简历更有效果。

接下来我们再来谈谈如何保持职场方向感,也就是如何在职场这片海洋里航行到最适合我们的一个又一个目的地。

首先我们要知道目前的职场海洋是什么样子的,更重要的是知道它正在发生着哪些变化。

不得不要正视的三个变化。

一是整个行业的人才储备越来越充裕,相关专业的毕业生数量逐年提升,并且质量还越来越高。

就拿 2016 年的数据来说,根据教育部的统计,2016 年有高校毕业生 765 万人,为历年最高;而与编程相关的专业毕业人数达到了总人数的 8% 以上。计算机科学与技术、电子信息等专业也成为了近年来多所高校的热门专业,不仅每年申请人数众多,录取分数线在众多专业中名列前茅,同时转专业和旁听的人数也是逐年增加。 清华大学 2016 年计算机科学与技术系的转专业录取人数与申请人数比例竟然达到了惊人的 1/40 。

二是互联网行业的野蛮生长时期已经接近尾声。

大型互联网公司的基础招聘需求逐渐萎缩,BAT 等巨头企业 2016 年的校招需求数量均不足前两年巅峰时期的一半,与此相对的是对高端招聘的需求越来越旺盛。创业公司更是面临大批死亡和被收购的困境。以前几年火爆的垂直电商领域为例,随着淘宝、天猫等传统电商的成功,垂直领域的电商在 2014 年顺势而起,然而三年之后活下来的企业少之又少。而共享单车从异军突起到开始收割仅仅是 1 年半的时间。越来越短的行业周期很难继续为基础研发的工程师提供稳定大量的岗位需求。而创业公司的大规模倒闭也戳破了行业中的薪酬泡沫。

三是科技的发展并没有带来岗位的增加,相反,有时意味着岗位的减少。

以测试为例,曾经测试都是以手动测试为主,而如今一二线互联网公司已鲜少见到手动测试,大多都是开发自动化测试工具的测试开发,因而对员工素质的要求大幅度提高,而数量需求则大幅度减少。在人工智能飞速发展的如今,可以预见的是未来很多支持类的研发岗位都有可能被效率更高的程序所代替,而专注人工智能的公司将会把相关技术在行业内大规模普及。

从以上三点来看,我们可以很清楚地得出结论:在需求侧趋于平稳,而供给侧逐渐增加的情况下,程序员之间的竞争将会越来越激烈。

知道大海的样子后,你要知道在航行过程中该做哪些事情让自己顺利抵达目的地。

首先,你得有一个清晰的人生规划,才能有一个清晰的职业规划。

最后:学习总结——Android框架体系架构知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。

下方即为我手绘的Android框架体系架构知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的Android框架体系架构知识脑图原件(包括上方的面试解析xmind文档)

除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!

——感谢大家伙的认可支持,Free Download请注意:点赞+点赞+点赞!!!
[外链图片转存中…(img-QRmWSASX-1618637755670)]

除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!

——感谢大家伙的认可支持,Free Download请注意:点赞+点赞+点赞!!!
自行下载领取链接:【戳这里】

超全Android中高级面试复习大纲,挥泪整理面经相关推荐

  1. 成为阿里P7移动架构师到底有多难?超全Android中高级面试复习大纲,完整版开放下载

    前言 面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责. 文末会给大家分享下我整理的Android面试专题及答案其中大部分都是大企业面试常问的面试题,可以对照这查漏补缺,当然了,这里所列 ...

  2. 2022年Android中高级面试框架

    目录 Java 泛型 集合 ArrayList LinkedList HashMap LinkedHashMap ConcurrentHashMap 多线程并发 volatile 线程 反射 JVM ...

  3. 计算机学院毕业设计文化衫,超全毕业文化衫创意设计图案与素材整理!2017毕业班服设计图案!...

    超全毕业文化衫创意设计图案与素材整理!让你的毕业季和别人不一般!时光荏苒,总以为毕业遥遥无期,转眼毕业季随之到来.毕业,这一难言的字眼,充满了不舍与感动.不知你们是否已整装待发,做好了准备?隐隐间,你 ...

  4. Android系统面试题,Android中高级面试必知必会

    前言 这篇文章主要是分享今年上半年的面试心得,现已就职于某大厂有三个月了,近期有很多公司均已启动秋招,也祝大家在 2020 的下半年面试顺利,获得理想的offer! 之前找工作的那段时间感想颇多,总结 ...

  5. Android中高级面试必知必会,绝对干货

    前言 Android常用知识体系是什么鬼?所谓常用知识体系,就是指对项目中重复使用率较高的功能点进行梳理.注意哦,不是Android知识体系. 古语道:学而不思则罔,思而不学则殆.如果将做项目类比为& ...

  6. 史上最全 前端开发面试问题及答案整理 http://segmentfault.com/blog/trigkit4/1190000002562454

    https://github.com/hawx1993/Front-end-Interview-questions 本文旨在加深对前端知识点的理解,资料来源于网络,由本人(博客:http://segm ...

  7. 2021超全大数据面试宝典,吐血总结十万字,大数据面试收藏这一篇就够了

    本文最新版已发布至公众号[五分钟学大数据] 获取此套面试题最新pdf版,请搜索公众号[五分钟学大数据],对话框发送 面试宝典 扫码获取最新PDF版: 版本 时间 描述 V1.0 2020-02-18 ...

  8. Java程序员必备!Redis面试复习大纲在手面试不慌

    咱先来聊聊Redis 像Redis的基础入门,掌握下图这几个列出来的知识点足以了. 进阶的话,就得下点功夫了,事务.主从复制.哨兵.集群等等之类的搞不明白你就上不去呀. 再看美团亿级流量Redis实战 ...

  9. Redis面试复习大纲在手面试不慌,内含福利

    前言 这几年在Java工程师招聘时,会看到很多人的简历都写着使用了Spring Cloud做微服务实现,使用Docker做自动化部署,并且也会把这些做为自己的亮点.而比较有趣的这其中以小公司出来的人为 ...

最新文章

  1. 本科生新算法打败NeRF,不用神经网络照片也能动起来,提速100倍
  2. js高级编程中命名空间的两种用法
  3. crontab定时巡检使用
  4. 系统升级页面html,页面访问界面升级
  5. mysql高级笔记_MySQL高级部分笔记
  6. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件(转)
  7. Provided path doesn't exist. pylama Please fix pylama path or install latest version(UBuntu版本下的情况)
  8. 钮扣电池电压电量_纽扣厂
  9. 面试官:你不懂六大设计原则,回去等通知吧!
  10. 小程序 authorize scope.userLocation 需要在app.json中声明permission字段
  11. matlab求偏微分方程程序,用MATLAB解偏微分方程.pdf
  12. IDC:全球将步入数字经济时代,安全可控成数字经济战略关键词
  13. 如何在Linux,Ubuntu,CentOS上安装Java 14
  14. 解压zip报错_Get新技能!利用Python自动解压各种压缩文件
  15. Linux下多线程调试以及查看信息
  16. opencv android模版匹配,基于opencv模板匹配的目标检测方法
  17. 学习了pr后的收获_PR学习感悟
  18. HDU - 4622 Reincarnation
  19. 微软官方原版WindowsXP Pro With Sp2简体中文VOL版
  20. android 黑屏定位,如何将黑屏Android修复为正常

热门文章

  1. AlexNet -翻译
  2. 基于spec评论作品
  3. 财务报表包含哪些表?是季报还是月报?
  4. 油菜籽的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. 【黏住用户的不是小红书,而是它背后的那些人】
  6. 16位汇编语言第二讲系统调用原理,以及各个寄存器详解
  7. 被火龙强奸了100次~~~怨念!
  8. 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。
  9. android wi-fi_如何在Android上限制计量Wi-Fi网络的背景数据
  10. 企业在做搜索引擎优化时应该注意什么?