举个例子,其实你可以把技术专家和架构师的区别类比成科学院院士和工程院院士,你要搞一个语言识别,那是理论,你要做一个 Siri,那是工程。而你,更擅长和向往做语言识别技术还是 Siri 呢?
有些同学可能会说,我的最终目标仅仅是成为一个优秀的程序员,那我想知道你能做到以下 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 年半的时间。越来越短的行业周期很难继续为基础研发的工程师提供稳定大量的岗位需求。而创业公司的大规模倒闭也戳破了行业中的薪酬泡沫。
三是科技的发展并没有带来岗位的增加,相反,有时意味着岗位的减少。
以测试为例,曾经测试都是以手动测试为主,而如今一二线互联网公司已鲜少见到手动测试,大多都是开发自动化测试工具的测试开发,因而对员工素质的要求大幅度提高,而数量需求则大幅度减少。
在人工智能飞速发展的如今,可以预见的是未来很多支持类的研发岗位都有可能被效率更高的程序所代替,而专注人工智能的公司将会把相关技术在行业内大规模普及。
从以上三点来看,我们可以很清楚地得出结论:在需求侧趋于平稳,而供给侧逐渐增加的情况下,程序员之间的竞争将会越来越激烈。
知道大海的样子后,你要知道在航行过程中该做哪些事情让自己顺利抵达目的地。
首先,你得有一个清晰的人生规划,才能有一个清晰的职业规划。
个人觉得这就是人生的价值观,只有价值观定下来,才能够形成适应价值观的方法论,你是什么样的人,决定了你往哪个方向发展,学习哪些技术,达到哪种水平,同时为了获取这些水平,要付出多么大的努力。
首先自己要有一个清晰的人生规划,可以不是很具体很长远,但是要有明确的目标:成为一个什么样的人。
再将这个目标分解,其中有一块就是“职业规划”,规划的时间不要很长,毕竟社会发展太快,我们预见能力有限,但要规划出未来两年自己要做的事情、学习的东西,将这些事情和目标再继续分解,分解到每月、每星期,然后用行动去完成,用毅力去坚持,然后静待岁月检验,因为时间看得见。
其次,互联网技术要有以万变胜不变的心态,时刻调整自己对自己的定位。
站在风口不一定能飞起来,但站在冰山上必然会沉下去。过去十年,互联网的飞速增长创造了大量的岗位需求,同时由于在对未来的预期中,科学技术的突破和创新依然会在构建社会中扮演重要的角色,所以大多数人对程序员这个行业整体的发展趋势是非常看好的,甚至可以说有些过于乐观了。
然而事实上,编程乃至整个互联网行业的人才动态都显示出竞争越来越激烈的趋势。
社会发展很快,尤其是我们所处的互联网行业,简直就是瞬息万变的节奏。
各种新技术一个接一个的出现、消失,各个行业和公司也在不停的洗牌,强者倒下去,新的强者站出来。
市场的急剧变化使得个人必须相应地调整自己的定位,给出了三个建议:
(1)更新技术,踩上技术趋势
当然互联网技术工程师,切记不要故步自封,一家独大,我建议同学们有游牧民族的心态,哪儿里水草丰美,就转战到哪儿。
踩上技术趋势,马云马化腾成了中国首富;踩上技术趋势,2014 年一个优秀的 iOS 工程师换一份工作可以从月薪 15k 涨到 30k ,踩上技术趋势,在校期间猛攻算法的应届毕业生可以在毕业时拿到年薪 50 万的 offer 。
总之,千万别认为你现在是抢手货,未来依旧是,只有不断更新技术,踩上技术趋势,顺势而为,才能不被淘汰,才能稳定发展。
针对这一点上,我们看看小郑这个例子吧,研究生期间从事的是 Android 开发,但他自学了 Python,所以对这两类技术都比较关注。
为此,订阅了“开发者前线”、“Android周报”、“干货集中营”等内容,还关注“@开发者头条”、“码农周刊”、“开发者头条”、“CSDN极客头条”等,了解 Android、Python 的最新信息,也关注一些其他领域如“前端”的内容。
在微博上关注了很多 IT 大牛的账号,就是为了了解一下技术的趋势。后来研究生毕业就加入了今日头条,成为了一名 Python 工程师,目前发展非常不错。
(2)树立个人品牌
运营自己的 GitHub 账号并关注优秀账号,建立自己的技术博客,关注极客微博,参与线下活动,养成乐于分享不断学习的习惯,并认识更多的圈儿内人,这些行为都会让你不断刷新对技术趋势的认知并且拥有属于自己的人脉圈。
朋友多了路好走,树立个人品牌,不要成为一个默默无闻的码农,要去主动探索这个世界和这个圈子,这样才能更有方向感。
另外也要提的一点,HR 和技术面试官也会在招聘会看你的 GitHub 账号等,通过这样的方式间接了解到你的学习态度和能力。
(3)在团队的力量下,找到自己最大的价值
任何一个团队,都需要有精英人员,也需要有普通人员,需要有勤奋的,也需要有滑头的,需要做研究的,也需要做工程的,每个人最关键的是找到自己在团队里的定位。
所以,职业规划需要根据所处的团队作出适当的调整,除非你根本不想在这个团队待下去。
知道了大海的样子,懂得如何掌舵,接下来最重要的事便是知道自己想要抵达什么样的地方。
这一部分重点和大家讲讲,当你确定了要成为某技术领域的资深技术的时候,应该如何选择 offer ,因为选对了 offer ,职业规划就成功了一半,而另一半是充分在这家公司发挥自己的价值并不断全面学习。
我常说,一份好工作往往包含以下四点,选那个最贴近的就好了。
第一,公司所在领域是否有竞争空间,产品数据是否有增量空间。
第二,你的团队是否足够有能力,你的直属领导是否足够信任你。
第三,你的工作内容是否能给你带来持续的成就感。
第四,如果一年半不涨薪,现在他们给到的薪资是否能让你愿意加班的热情不减。
如果认同的话,希望大家能够谨记以上四点。
接下来我从三个大维度为大家分析如何选择适合自己职业规划的 offer 。分别是年龄,性格,公司规模。
1. 不同年龄段的人所适合的 offer 不同。
(1)22 岁至 26 岁的人如何选择好 offer。
多数人都是需要经过一段时间的工作沉淀,才会知道自己适合做什么。职场的新人,要多去尝试,慢慢找到自己善长并且喜欢的方向。
所以,根据工作性质的不同,在工作的前 1-3 年,不要让自己过于沉迷在一个具体的领域,条件允许时,多尝试不同的选择。
如果公司不具备换岗的环境,可以自己利用业余时间多与从事其他领域工作的同学或朋友交流,选择一个可以专注打磨技术,又有空间和机会学习和交流更多技术的环境,这样你会知道自己最容易拿到结果和带来价值的工作是什么。
(2)27 岁至 30 岁的人如何选择好 offer。
该年龄层的候选人,如果在大公司,建议去发展速度快的新兴业务群组去“碰碰壁”。
前段时间,100offer 有篇《[远离舒适区:站在传统行业与互联网行业的交叉口](
)》文章中提到一名 29 岁想从传统行业跳槽到互联网的 Paul ,他在传统行业的一家大公司就职程序员,在想要跨行到互联网行业时,才发现自身技术不过关,已经跟不上时代的发展了,多家互联网企业都只愿让他降薪加入。
之所以建议挑战新领域,正是因为 27 岁至 30 岁这个年龄段的候选人,多半已经对自身业务无比熟练,对新技术的了解不够,在选择跳槽时,如果仍停留在舒适区,没有危机意识,在未来的招聘市场的竞争力会降低不少。
加入快速扩张期的初创企业也是不错的选择,选择一家高速发展、团队能力强、工作氛围积极、盈利思路清晰以及牛人多的初创公司,对个人发展也会有很大的帮助,并且空间大,晋升机会更多,大家应该知道在阿里或者腾讯这样的公司,技术晋升是多么的困难。
(3)30 岁以后的人如何选择好 offer
30 岁后的职场人,尤其是技术人,在战略思维上,他们能更为清晰知道一个项目系统设计的具体规划,细分之后的具体编程对于他们而言自然是轻而易举,但他们应将精力更放在系统设计上,创造最大价值。
所以,30 岁往后的职场人,若一直有着较为清晰的职场规划并稳步实现中,这个阶段的人,不会轻易跳槽,选取 offer 时薪资不会是最重要指标。
他们会比较渴望带团队或者做一款有自己印记的产品,总之,是希望在工作中扮演不可或缺的角色。
2. 不同个性的人所适合的 offer 不同
优秀的候选人,比如很多 BAT 的候选人,基本在跳槽时都能拿到很多 offer ,他们选择前提普遍是薪水相对满意,业务前景他们看好,但因为每个人的性格不同,所以考虑的出发点不一样,所以选择也会有差异。
(1)有冒险精神能够承担风险的人。
在一家成熟稳定的公司工作了比较长时间的候选人,建议选择一些初创型企业,这些企业可以给到很有竞争力薪水的同时,也会给具有诱惑力的股票期权以及职务。当然了,前提是你有足够的技术积累和勇担风险的态度。
(2)偏向于稳定型的候选人。
稳定型候选人,尤其是曾被初创小公司画饼坑过的候选人,建议选择一些项目稳定发展稳定的公司,类似金山或者网易。
(3)不是特别爱冒险,但也不是特别想稳定的候选人。
这类“中间型”候选人,建议优先选择目前规模中等但还是快速发展的类似快手和头条这样的公司。
3. 不同规模公司的 offer 怎么选更适合自己
(1)大公司和小公司的 offer 该如何选择?
如果你在积累期和发展期,也就是前面两个五年,我会建议你选择大公司,如果处在第三个阶段,成熟期,你去大公司只是为了给简历背书,那就是得不偿失,因为毕竟大公司人才多,竞争激烈,这个时期加入,无疑人脉资源都是从零开始,并且也较难走到决策层。
因为这个时期你的方向是自我实现,对于前面的提到的关于诉求的8个维度中,被重视程度和个人增值的权重会更大,相应的初创公司对技术人才的依赖性和重视程度更强,会被赋予更多的权限和机会,你的话语权会更大,反而大公司里你的替换度会较高。
创业公司对个人的能力挑战更大,你不仅要考虑技术,更要兼顾业务,模式,产品,以及带团队,团队招聘和个人领导力等,对你的综合能力是个很大的挑战,但同时也会发掘你潜在的可能性,这个过程中可以更全面的认识自我。
如果处在职业发展的第二阶段——发展期,而你又在大公司工作过,再继续选择大公司的 offer 时要更慎重,不妨问问自己是否要追求稳定,自己的抗风险能力是否足够强,对于不确定性的接受度如何。
如果你发现自己不是风险偏好,对于不确定性的接受度不强,更喜欢制度完善,稳定性高的工作,那么说明你依然适应大公司的环境,那就继续选择大公司。
如果你对于大公司的工作状态不满意,认为自己有更多的可能性,在这里限制了自己的发展,那么可以不用纠结,去尝试新的环境。
毕竟你所在的是发展阶段,处于飞速奔跑阶段,你的所有诉求中,技术高速成长,职业发展空间更广阔的优先级更高。
大公司的团队已经成熟,因岗设人,技术的广度容易被局限,并不是每个部门都有技术创新,大多数部门的框架已经定型,核心功能基本完成,日常工作在原有的框架上修修补补,技术挑战不大,同时跨部门协作沟通成本又高,没有更多的时间钻研新技术。
并且重复的大公司经验并不会使得简历更加出彩,反而会降低了自己的适应性和限制了可能性。
大公司更容易养成舒适区,一旦享受这种状态,就会容易虚度了这至关重要的发展阶段,从而错过更大的机会。
同时,从经济回报这个维度来看,在大公司里,收入增长的天花板是明确看得见的,个人收入不会有颠覆性的改变。
完全的 KPI 导向,晋升只会在那 20% 中选择,并且还有更多你不可控的因素,比如业务的受重视程度,老板的倾向性等,涨薪难度相对也更高。
现金部分而言,小公司往往会开出更优厚的条件,区别在于期权部分,大公司的期权,风险低,增值空间不大,基本可见,小公司的期权风险较高,一旦产生收益,对你的生活影响也是巨大的。
如果你处在职业发展的第一阶段——积累期,你的求职诉求中,团队,技术成长和个人增值三个维度尤为重要。
那么大公司更容易满足你的诉求,因为职场的前五年,也是积累人脉的五年,这里集中了很多优秀的人才,这个人脉也将是你今后的财富。
大公司,大流量使得你可以看到技术更深层次的问题,获得站在巨人的肩膀上看待问题的视角,技术领域不止有通过 coding 来实现功能这么简单,规范化,团队协作,科学的流程都是小公司中不容易学到的。
这里有完善的培养体系,给你规划出合理的成长路线,并且大公司的技术牛人多,和更优秀的人一起会加速你的成长,可以获得更优化的代码方案,学习到解决复杂问题的经验,同时他们也可以帮你挡掉产品的不合理需求,总之你有时间和资源去快速积累和成长。
这个阶段去大公司积累经验,等到后面两个发展阶段再看机会的时候,你会有更多的选择。
(2)大公司之间的 offer 如何选择?
大公司之间的 offer PK ,首先一定是核心业务优先和核心职能优先,其次是选择新兴业务事业部,跟其他成熟的业务模块相比,有更广阔的发展空间,毕竟成熟的业务部门,后期整体上升会比较慢,压力相对也会较大。
《设计思想解读开源框架》
第一章、 热修复设计
-
第一节、 AOT/JIT & dexopt 与 dex2oat
-
第二节、 热修复设计之 CLASS_ISPREVERIFIED 问题
-
第三节、热修复设计之热修复原理
-
第四节、Tinker 的集成与使用(自动补丁包生成)
第二章、 插件化框架设计
-
第一节、 Class 文件与 Dex 文件的结构解读
-
第二节、 Android 资源加载机制详解
-
第三节、 四大组件调用原理
-
第四节、 so 文件加载机制
-
第五节、 Android 系统服务实现原理
第三章、 组件化框架设计
-
第一节、阿里巴巴开源路由框——ARouter 原理分析
-
第二节、APT 编译时期自动生成代码&动态类加载
-
第三节、 Java SPI 机制
-
第四节、 AOP&IOC
-
第五节、 手写组件化架构
第四章、图片加载框架
-
第一节、图片加载框架选型
-
第二节、Glide 原理分析
-
第三节、手写图片加载框架实战
第五章、网络访问框架设计
-
第一节、网络通信必备基础
-
第二节、OkHttp 源码解读
-
第三节、Retrofit 源码解析
第六章、 RXJava 响应式编程框架设计
-
第一节、链式调用
-
第二节、 扩展的观察者模式
-
第三节、事件变换设计
-
第四节、Scheduler 线程控制
第七章、 IOC 架构设计
-
第一节、 依赖注入与控制反转
-
第二节、ButterKnife 原理上篇、中篇、下篇
-
第三节、Dagger 架构设计核心解密
第八章、 Android 架构组件 Jetpack
-
第一节、 LiveData 原理
-
第二节、 Navigation 如何解决 tabLayout 问题
-
第三节、 ViewModel 如何感知 View 生命周期及内核原理
-
第四节、 Room 架构方式方法
-
第五节、 dataBinding 为什么能够支持 MVVM
-
第六节、 WorkManager 内核揭秘
-
第七节、 Lifecycles 生命周期
本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/159358.html