程序员应该怎样做职业规划

程序员应该怎样做职业规划

  经常听一些同学说:不知道下一份工作该去哪类公司做些什么,我的职场人际一团糟老板不重视我,我现在成长的非常慢所以又想跳槽了,我看不到公司的发展前景好迷茫,其实这一切的困惑都来源于没有做好职业规划或者你根本就没有职业规划过。

  那今天我就从以下几个话题和大家分享下我所理解的职业规划 Tips ,也欢迎大家踊跃提问。

  首先,我们要知道职业规划是什么,也就是如何持续选择适合自己发展的工作的过程。

  职业规划其实就是对职业生涯乃至人生进行持续的、系统的、计划的过程。职业规划也叫“职业生涯规划”。职业生涯规划的好坏有时会影响我们的一生。

  1. 是偏爱的:只有这个事情是自己喜欢的,才有可能在碰到强大对手的时候仍然坚持;在遇到极其困难情况时不会放弃;在有巨大诱惑的时候也不会动摇。

  2. 是擅长的:做你擅长的事,才有能力做好;有能力做好,才能解决具体的问题。只有做自己最擅长的事情,才能做得比别人好,才能在竞争中脱颖而出。

  3. 实现价值:你得认为这件事够重要,完成它之后带来的价值足够吸引你,值得你做,否则你再有能耐也不会善始善终。

  4. 长远发展:首先你得有机会去做,有机会做了还得有足够大的市场与成长空间,这样的职业才有奔头。

  所以经常我们会听到一个人说自己非常幸运,大学毕业去了一家公司,然后跳到了另一家公司,公司发展的非常好,不到 35 岁就实现了财务自由,这背后的职业规划本质一定是基于偏爱,擅长,实现价值与长远发展的原则,而不仅仅是表面的幸运。

  所以建议同学们不要仅仅为了薪资或者地点或者公司知名度就选择一份新的工作,要根据以上四个原则,满足的越多,越匹配,到了中期以后才不会迷茫未来要何去何从。

  最后我想说,其实在每一个时间节点看过去的自己,都会发现对整个行业认知甚至对自己的认知都是有限的,所以做规划不是真的千篇一律的照本宣科,而是朝着心中自己本该有的样子去自驱,去变得更优秀。

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

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

  我们通过例子来说明。有一位 Z 先生,他2012年从湖北工业大学毕业,而后去了搜狗担任工程师,做了两年后,跳到了另一家公司叫小麦公社,是当时一家风头正劲的创业公司,担任 B 端高级开发;

  后来去到了因果树担任 B 端的技术资深开发,在今年2月份入职了杭州阿里巴巴,同样是负责 B 端商家后台部门,担任技术专家,他职业规划最大的亮点是找到自己想要专注的领域并且一直坚持至今。

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

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

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

  举个例子,其实你可以把技术专家和架构师的区别类比成科学院院士和工程院院士,你要搞一个语言识别,那是理论,你要做一个 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。

  而后入职了一家投资公司,以产品经理的身份加入,两年过去了,目前已经成为了一名高级产品经理。

  他职业规划的最大亮点是深思熟虑后立刻决定和行动,没有犹豫,而机会往往更容易留给有准备和有勇气的人。

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

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

  产品经理是站在用户的角度考虑产品,以用户为中心。所以技术人员转产品经理要摆脱技术思维,多想想用户的使用习惯,多想想产品的商业目标。

  程序员给别人的印象一般都是木讷,沉默寡言的,也难怪,程序员都是在和机器打交道,不是销售那种和人打交道的工作,不需要说太多话,不需要撕太多逼。

  而产品经理的工作要和很多部门打交道,要和运营、技术、设计、市场推广等各个部门打交道,在产品宣讲的时候要清楚的向他们传达你的需求,当产品上线你需要给客服培训,这些都需要你有较强的语言组织和表达能力。

  程序员的工作就是码代码,代码是用英文编写的,只有在给代码注释和写产品说明书的时候才写中文,而且写的也是一些琐碎的内容。

  如果让一个程序员就某一个主题写一篇文章出来,我想大多数程序员可能无从下手。

  而产品经理工作中要写很多文档,商业需求文档,市场需求文档,产品需求文档,产品说明书,文档表达能力在工作中很重要。

  好的产品经理需要一定的项目管理能力。需要推动产品按照正常的步骤,规定的时间,按质按量的发布上线。这里就涉及到,整体管理、时间管理、团队管理、需求管理。

  整体管理:包含产品从分析规划到产品开发到产品上线运营到迭代优化的全过程进行管理。时间管理是指主要是计划监控跟踪项目进度,把握关键时间节点,确保产品按照规定的时间上线。

  团队管理:产品经理需要协调很多部门,有技术,设计,市场推广,运营,产品经理是一个无授权的领导者,你多数需要通过自己的影响力,自己的沟通技巧来协调项目的各个成员,所以需要一个相应的团队管理能力。

  需求管理:包含各个部门反馈的需求,以及自己收集的需求,需求的变更,需求的跟进等。

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

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

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

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

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

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

  这里的业务场景分为大业务场景,也分为小业务场景。大业务场景即不同的细分行业,如电商、内容、视频、共享平台等等。

  我建议程序员们在进行工作选择的时候不要被自己原先所属的细分领域太过限制,认为自己原来在电商公司以后也必须在电商公司。

  事实上,多去尝试不同领域的公司,去了解不同领域的公司在技术实现上有什么异同,对于程序员更深入地理解技术是很有帮助的。

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

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

  比如曾经有位陈先生,他之前在 BAT 某公司任职 6 年,担任算法方向的程序员。由于之前 6 年公司业务增长很快,陈先生在不同的研发 Team 都参与过项目,因此在广告、排序、推荐、NLP 和用户行为研究领域都有一定经验,但却没有深入的研究。

  对此他自己也在跳槽的时候表示过担忧:“业务在哪儿需要就打到哪儿,什么都会一点,什么都不精。”

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

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

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

  初入职场的 3 年,主要的工作内容就是夯实基础,此时基本处于“完成上级交付的任务”这样的阶段。

  但在这个过程中,员工不能仅仅完成任务了事,而是要不断思考为什么上级要布置这个任务,这个需求是怎么来的,用于解决什么问题,有没有更好的解决方案等等。

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

  而此时作为小团队负责人的角色,程序员更多地需要关注上下游的逻辑,能够形成完整的逻辑链条。

  工作经验的 5-8 年,此时程序员已经成为了技术负责人,可以独立负责某一个产品的研发,可以成功地推动产品从 0-1 的阶段,此时更多需要关注的便是跨部门之间的合作与沟通,确保研发行程的按时交付。

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

  除了编程之外,程序员要尽量培养一些其他方面的技能,例如演讲、写作等等。这样做一方面可以为程序员提供一些兼职机会,如主讲技术相关的直播课程、参考文章或书籍的撰写等。

  类似的机会在提供报酬的同时也会增加员工的知名度和行业影响力,更有甚者,在社交媒体上发表了相关文章之后,吸引了一批志同道合的同行,开始合伙创业,有了更大的机遇。

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

  刚开始张先生还很犹豫,毕竟本身的工作内容已经很繁多,很怕接了这个任务之后力有未逮,反而影响了自己的开发进度。

  但后来因为同事的鼓励和 HR 的反复邀请,张先生还是答应成为主讲人,并且利用每周末的时间准备讲座材料。

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

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

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

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

  而对于信息的获取,自己的朋友、前同事、公司 HR 还有靠谱的猎头等,这些都是可以利用的资源,同时也可以参加一些展览、峰会等线下活动。

  尤其对于那些自己感兴趣的技术方向,尽量积累一些人脉资源,一次有效的内推往往比海投简历更有效果。

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

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

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

  就拿 2016 年的数据来说,根据教育部的统计,2016 年有高校毕业生 765 万人,为历年最高;而与编程相关的专业毕业人数达到了总人数的 8% 以上。

  计算机科学与技术、电子信息等专业也成为了近年来多所高校的热门专业,不仅每年申请人数众多,录取分数线在众多专业中名列前茅,同时转专业和旁听的人数也是逐年增加。

  清华大学 2016 年计算机科学与技术系的转专业录取人数与申请人数比例竟然达到了惊人的 1/40 。

  大型互联网公司的基础招聘需求逐渐萎缩,BAT 等巨头企业 2016 年的校招需求数量均不足前两年巅峰时期的一半,与此相对的是对高端招聘的需求越来越旺盛。

  创业公司更是面临大批死亡和被收购的困境。以前几年火爆的垂直电商领域为例,随着淘宝、天猫等传统电商的成功,垂直领域的电商在 2014 年顺势而起,然而三年之后活下来的企业少之又少。

  而共享单车从异军突起到开始收割仅仅是 1 年半的时间。越来越短的行业周期很难继续为基础研发的工程师提供稳定大量的岗位需求。而创业公司的大规模倒闭也戳破了行业中的薪酬泡沫。

  以测试为例,曾经测试都是以手动测试为主,而如今一二线互联网公司已鲜少见到手动测试,大多都是开发自动化测试工具的测试开发,因而对员工素质的要求大幅度提高,而数量需求则大幅度减少。

  在人工智能飞速发展的如今,可以预见的是未来很多支持类的研发岗位都有可能被效率更高的程序所代替,而专注人工智能的公司将会把相关技术在行业内大规模普及。

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

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

  个人觉得这就是人生的价值观,只有价值观定下来,才能够形成适应价值观的方法论,你是什么样的人,决定了你往哪个方向发展,学习哪些技术,达到哪种水平,同时为了获取这些水平,要付出多么大的努力。

  首先自己要有一个清晰的人生规划,可以不是很具体很长远,但是要有明确的目标:成为一个什么样的人。

  再将这个目标分解,其中有一块就是“职业规划”,规划的时间不要很长,毕竟社会发展太快,我们预见能力有限,但要规划出未来两年自己要做的事情、学习的东西,将这些事情和目标再继续分解,分解到每月、每星期,然后用行动去完成,用毅力去坚持,然后静待岁月检验,因为时间看得见。

  站在风口不一定能飞起来,但站在冰山上必然会沉下去。过去十年,互联网的飞速增长创造了大量的岗位需求,同时由于在对未来的预期中,科学技术的突破和创新依然会在构建社会中扮演重要的角色,所以大多数人对程序员这个行业整体的发展趋势是非常看好的,甚至可以说有些过于乐观了。

  然而事实上,编程乃至整个互联网行业的人才动态都显示出竞争越来越激烈的趋势。

  各种新技术一个接一个的出现、消失,各个行业和公司也在不停的洗牌,强者倒下去,新的强者站出来。

  当然互联网技术工程师,切记不要故步自封,一家独大,我建议同学们有游牧民族的心态,哪儿里水草丰美,就转战到哪儿。

  踩上技术趋势,马云马化腾成了中国首富;踩上技术趋势,2014 年一个优秀的 iOS 工程师换一份工作可以从月薪 15k 涨到 30k ,踩上技术趋势,在校期间猛攻算法的应届毕业生可以在毕业时拿到年薪 50 万的 offer 。

  总之,千万别认为你现在是抢手货,未来依旧是,只有不断更新技术,踩上技术趋势,顺势而为,才能不被淘汰,才能稳定发展。

  针对这一点上,我们看看小郑这个例子吧,研究生期间从事的是 Android 开发,但他自学了 Python,所以对这两类技术都比较关注。

  为此,订阅了“开发者前线”、“Android周报”、“干货集中营”等内容,还关注“@开发者头条”、“码农周刊”、“开发者头条”、“CSDN极客头条”等,了解 Android、Python 的最新信息,也关注一些其他领域如“前端”的内容。

  在微博上关注了很多 IT 大牛的账号,就是为了了解一下技术的趋势。后来研究生毕业就加入了今日头条,成为了一名 Python 工程师,目前发展非常不错。

  运营自己的 GitHub 账号并关注优秀账号,建立自己的技术博客,关注极客微博,参与线下活动,养成乐于分享不断学习的习惯,并认识更多的圈儿内人,这些行为都会让你不断刷新对技术趋势的认知并且拥有属于自己的人脉圈。

  朋友多了路好走,树立个人品牌,不要成为一个默默无闻的码农,要去主动探索这个世界和这个圈子,这样才能更有方向感。

  另外也要提的一点,HR 和技术面试官也会在招聘会看你的 GitHub 账号等,通过这样的方式间接了解到你的学习态度和能力。

  任何一个团队,都需要有精英人员,也需要有普通人员,需要有勤奋的,也需要有滑头的,需要做研究的,也需要做工程的,每个人最关键的是找到自己在团队里的定位。

  所以,职业规划需要根据所处的团队作出适当的调整,除非你根本不想在这个团队待下去。

  知道了大海的样子,懂得如何掌舵,接下来最重要的事便是知道自己想要抵达什么样的地方。

  这一部分重点和大家讲讲,当你确定了要成为某技术领域的资深技术的时候,应该如何选择 offer ,因为选对了 offer ,职业规划就成功了一半,而另一半是充分在这家公司发挥自己的价值并不断全面学习。

  第四,如果一年半不涨薪,现在他们给到的薪资是否能让你愿意加班的热情不减。

  接下来我从三个大维度为大家分析如何选择适合自己职业规划的 offer 。分别是年龄,性格,公司规模。

  多数人都是需要经过一段时间的工作沉淀,才会知道自己适合做什么。职场的新人,要多去尝试,慢慢找到自己善长并且喜欢的方向。

  所以,根据工作性质的不同,在工作的前 1-3 年,不要让自己过于沉迷在一个具体的领域,条件允许时,多尝试不同的选择。

  如果公司不具备换岗的环境,可以自己利用业余时间多与从事其他领域工作的同学或朋友交流,选择一个可以专注打磨技术,又有空间和机会学习和交流更多技术的环境,这样你会知道自己最容易拿到结果和带来价值的工作是什么。

  该年龄层的候选人,如果在大公司,建议去发展速度快的新兴业务群组去“碰碰壁”。

  前段时间,100offer 有篇《远离舒适区:站在传统行业与互联网行业的交叉口》文章中提到一名 29 岁想从传统行业跳槽到互联网的 Paul ,他在传统行业的一家大公司就职程序员,在想要跨行到互联网行业时,才发现自身技术不过关,已经跟不上时代的发展了,多家互联网企业都只愿让他降薪加入。

  之所以建议挑战新领域,正是因为 27 岁至 30 岁这个年龄段的候选人,多半已经对自身业务无比熟练,对新技术的了解不够,在选择跳槽时,如果仍停留在舒适区,没有危机意识,在未来的招聘市场的竞争力会降低不少。

  加入快速扩张期的初创企业也是不错的选择,选择一家高速发展、团队能力强、工作氛围积极、盈利思路清晰以及牛人多的初创公司,对个人发展也会有很大的帮助,并且空间大,晋升机会更多,大家应该知道在阿里或者腾讯这样的公司,技术晋升是多么的困难。

  30 岁后的职场人,尤其是技术人,在战略思维上,他们能更为清晰知道一个项目系统设计的具体规划,细分之后的具体编程对于他们而言自然是轻而易举,但他们应将精力更放在系统设计上,创造最大价值。

  所以,30 岁往后的职场人,若一直有着较为清晰的职场规划并稳步实现中,这个阶段的人,不会轻易跳槽,选取 offer 时薪资不会是最重要指标。

  他们会比较渴望带团队或者做一款有自己印记的产品,总之,是希望在工作中扮演不可或缺的角色。

  优秀的候选人,比如很多 BAT 的候选人,基本在跳槽时都能拿到很多 offer ,他们选择前提普遍是薪水相对满意,业务前景他们看好,但因为每个人的性格不同,所以考虑的出发点不一样,所以选择也会有差异。

  在一家成熟稳定的公司工作了比较长时间的候选人,建议选择一些初创型企业,这些企业可以给到很有竞争力薪水的同时,也会给具有诱惑力的股票期权以及职务。当然了,前提是你有足够的技术积累和勇担风险的态度。

  稳定型候选人,尤其是曾被初创小公司画饼坑过的候选人,建议选择一些项目稳定发展稳定的公司,类似金山或者网易。

  这类“中间型”候选人,建议优先选择目前规模中等但还是快速发展的类似快手和头条这样的公司。

  如果你在积累期和发展期,也就是前面两个五年,我会建议你选择大公司,如果处在第三个阶段,成熟期,你去大公司只是为了给简历背书,那就是得不偿失,因为毕竟大公司人才多,竞争激烈,这个时期加入,无疑人脉资源都是从零开始,并且也较难走到决策层。

  因为这个时期你的方向是自我实现,对于前面的提到的关于诉求的8个维度中,被重视程度和个人增值的权重会更大,相应的初创公司对技术人才的依赖性和重视程度更强,会被赋予更多的权限和机会,你的话语权会更大,反而大公司里你的替换度会较高。

  创业公司对个人的能力挑战更大,你不仅要考虑技术,更要兼顾业务,模式,产品,以及带团队,团队招聘和个人领导力等,对你的综合能力是个很大的挑战,但同时也会发掘你潜在的可能性,这个过程中可以更全面的认识自我。

  如果处在职业发展的第二阶段发展期,而你又在大公司工作过,再继续选择大公司的 offer 时要更慎重,不妨问问自己是否要追求稳定,自己的抗风险能力是否足够强,对于不确定性的接受度如何。

  如果你发现自己不是风险偏好,对于不确定性的接受度不强,更喜欢制度完善,稳定性高的工作,那么说明你依然适应大公司的环境,那就继续选择大公司。

  如果你对于大公司的工作状态不满意,认为自己有更多的可能性,在这里限制了自己的发展,那么可以不用纠结,去尝试新的环境。

  毕竟你所在的是发展阶段,处于飞速奔跑阶段,你的所有诉求中,技术高速成长,职业发展空间更广阔的优先级更高。

  大公司的团队已经成熟,因岗设人,技术的广度容易被局限,并不是每个部门都有技术创新,大多数部门的框架已经定型,核心功能基本完成,日常工作在原有的框架上修修补补,技术挑战不大,同时跨部门协作沟通成本又高,没有更多的时间钻研新技术。

  并且重复的大公司经验并不会使得简历更加出彩,反而会降低了自己的适应性和限制了可能性。

  大公司更容易养成舒适区,一旦享受这种状态,就会容易虚度了这至关重要的发展阶段,从而错过更大的机会。

  同时,从经济回报这个维度来看,在大公司里,收入增长的天花板是明确看得见的,个人收入不会有颠覆性的改变。

  完全的 KPI 导向,晋升只会在那 20% 中选择,并且还有更多你不可控的因素,比如业务的受重视程度,老板的倾向性等,涨薪难度相对也更高。

  现金部分而言,小公司往往会开出更优厚的条件,区别在于期权部分,大公司的期权,风险低,增值空间不大,基本可见,小公司的期权风险较高,一旦产生收益,对你的生活影响也是巨大的。

  如果你处在职业发展的第一阶段积累期,你的求职诉求中,团队,技术成长和个人增值三个维度尤为重要。

  那么大公司更容易满足你的诉求,因为职场的前五年,也是积累人脉的五年,这里集中了很多优秀的人才,这个人脉也将是你今后的财富。

  大公司,大流量使得你可以看到技术更深层次的问题,获得站在巨人的肩膀上看待问题的视角,技术领域不止有通过 coding 来实现功能这么简单,规范化,团队协作,科学的流程都是小公司中不容易学到的。

  这里有完善的培养体系,给你规划出合理的成长路线,并且大公司的技术牛人多,和更优秀的人一起会加速你的成长,可以获得更优化的代码方案,学习到解决复杂问题的经验,同时他们也可以帮你挡掉产品的不合理需求,总之你有时间和资源去快速积累和成长。

  这个阶段去大公司积累经验,等到后面两个发展阶段再看机会的时候,你会有更多的选择。

  大公司之间的 offer PK ,首先一定是核心业务优先和核心职能优先,其次是选择新兴业务事业部,跟其他成熟的业务模块相比,有更广阔的发展空间,毕竟成熟的业务部门,后期整体上升会比较慢,压力相对也会较大。

  核心业务是指大公司的专属领域,往往形成了坚固的商业壁垒,通常我们说的阿里的电商,腾讯的社交,百度的搜索,是 BAT 最最核心的业务,是市值的主要来源。

  这些部门最直接的收益就是年终奖多,毕竟投入多,资源多,有足够的话语权,晋升也会更加顺利。

  以 BAT 为例,掌握了足够多的资源和资本,会在自己的生态圈里尝试诸多新的业务,这类尝试性的业务,比如阿里的来往,腾讯的微博等,在战略走向不那么明朗时,会同时孵化几个,几十个新项目,这类内部孵化项目类似于外部天使轮的公司,做出成绩和数据才会争取到下一步的资源,否则随时可能夭折。

  接着你会被分到新的项目,重复前面的过程,总之项目周期短,技术得不到积累,团队稳定性差,因此尽量避免加入大公司的尝试性业务,边缘化的业务会阻碍你的发展,而且内部调整多,部门流动率大,资源竞争激烈的情况下,淘汰率也高。

  接着我们来探讨下核心职能,BAT 的职能倾向性跟他的核心业务相关,阿里的电商对应的运营,腾讯的社交对应的产品体验,百度的搜索对应的技术,这种基因一旦形成,就会对企业的决策产生了影响,资源分配的过程中就会有相应的倾斜,进而形成运营导向型,产品导向型,技术导向型。因此,我们在选择 offer 时,对应自己的职能做出判断。

  创业公司的风险不言而喻,大部分都死于融资,死于现金流,生命周期短,然而频繁尝试失败的创业公司不仅是对于职业生涯的一种伤害,更会带来更为严重的后果,那就是因选择工作的不慎重而造成对事物的判断能力的怀疑。

  因为这里可以实现从 0 到 1,到 100,到一万,十万以及更多,和有共同梦想的人一起成就一件事情的快乐和成就感是在别处无法获得的。

  能够全程参与或负责一款产品,能够获得从整体的角度思考问题的经验值和能力。

  在小公司工作,更需要综合能力强,更全面的知识涉猎。同时人才市场也更认可有完善的产品或项目经验的候选人,因为这与只是参与了某个细节,某个模板的候选人相比,他们更具有产生更大价值的潜力和能力。

  那么小公司是充满机遇和风险的,因此我们需要带着接近投资人的眼光去选择公司。

  然而现存的商业模式和变量都太多,没有办法严格按照以上三个因素来分析,那么我们如何避免踩“坑”呢?

  我们可以从其他角度来分析,比如不要妄想跟 BAT 分蛋糕;很多人都尝试过的模式不要固执的坚持;没有互联网基因的传统公司创办的互联网业务;以及假大空的模式等,这类公司都建议绕行。

  在团队当中创始人就是灵魂人物,与其说选择一个团队,不如说是在选择创始人,同样的,我们没有办法做到投资人的经验老道,惟愿不踩“坑”。

  第一类是投机者,看互联网市场好,一哄而上,拿出的项目是没有创新能力,只是简单的抄袭,没有做深入的思考者,坚决选择转身。

  第二类是传统行业背景的创始人,这类风险也较高,他对实体项目运营有丰富的经验,不代表能够完全吸收并消化互联网思维和玩法。

  第一类是有情怀的创始人,创业过程基本都是九死一生,需要投入大量的情感和精力,在困难和阻力面前,支撑着向前的就是情怀,能够坚持着改变世界的信念和决心。

  第二类是连续创业的创始人,无论前面的创业是否成功,都是加分项,即使前面的创业经历是失败,那么他一定会总结经验,他的试错成本会降低。

  第三类是有大公司背景背书的创始人,他的人脉,资源和技术都是很好的创业资源,这项可以加分。

  马云在选择被投企业上坚信,最关键的是看人。看人的根本是看格局,尤其是长远的理想和品行。在变化很快的状况下,最终企业之间拼的还是团队的信念和自我进化能力。

  马云的说法更形象:“人对了,机会自然来。有钱了,人奔着钱而来没有用,有了正确的人,正确的钱就会来。人靠谱,模式不靠谱,他可能会将模式调靠谱;人不靠谱,模式靠谱,或者两样都不靠谱,死掉只是时间问题。”总之如果去创业公司,人是最重要的。

  总而言之,刚才的分享是为了告诉大家职业规划最重要的两个方法,一是增强自己的竞争力,二是保持属于自己能力,潜力和风格的方向感。希望大家牢记。

  工程师转型管理,需要很强的沟通能力和细致的观察能力,同时,管理也分一线与二线,一线是直接管理,需要经常直接参与员工的工作,二线是间接管理,通过管理低级别的管理者来完成任务目标。

  不过无论是哪种管理者,都需要做到兼听则明,不能偏听偏信,如果是一个不喜欢沟通的人,转管理就是团队的灾难。

  同时,需要有细致的观察能力,在很多影响团队状态的事情在萌芽状态就能够发现,通常员工开始找你抱怨了,团队就已经有非常严重的问题了。

  做管理,需要你有自己的理念,并且坚持它,对自己的理念都经常怀疑动摇的人,不可能成功。

  这里我们需要区分一个坚持理念与坚持理论(知识)的区别,我见过很多在工作中很不好相处的人,别人对他们的评价是他们认死理,那是因为他们把具体的理论(知识)当成了抽象的理念去坚持。

  举个简单的例子,我有一位资深技术总监的朋友,他带团队的理念是公平与公正,但如何实现公平与公正,这是实践中形成的知识体系,知识体系只是相对正确的,所以需要不停的吸收新的知识来完善它。

  很多人说最大的问题在于“互联网思维”,其实我认识很多从传统公司转向互联网公司的人,转 C 端的,成功的很少,转 B 端的,成功的很多,其实总结起来就是,B 端如何向 C 端转型。

  我之前面试过一个公司的 B 端管理职位,对方面试有一个问题是:他们需要一个能每秒并发超过 1 万的消息队列,要我给出一个解决方案。

  我的回答是:B 端一天能有上百万次访问就是高并发了,这个每秒一万是什么需求,打算每天用 100 秒完成全天的工作?这个问题和回答其实从深层次说明了 B 端和 C 端一个直观的区别,当然这只是区别之一。

  对于很多互联网公司,为什么 B 端很难有合用的产品,就是因为拿 C 端的开发思路在指导 B 端的产品研发。

  所以,传统公司转互联网公司,本质是 B 端转 C 端,这个话题延伸起来就太大了,而且现在 C 端产品也在引入很多 B 端的场景,我觉得这都是机会。

  另外,不一定一开始去互联网公司,可以去传统公司的互联网 + 项目缓冲,例如海尔的日日顺,平安的陆金所,这样更容易稳定发展。

  技术转产品,因为在第二个话题上说的也很多了,在这里就不多说了,对号入座就好。

  很多程序员在工作 5-10 年以后,都会开始思考 5 年、10 年甚至更久以后的自己,会是怎样一种生活工作状态,以及是否会被时代抛弃。

  特别是全民创业的这几年,大到 BAT ,小到创业公司,喜欢年轻员工成了许多企业招人时的隐形规定之一。

  比如华为就明确规定员工 45 岁以后必须退休。阿里这几年也在追求团队年轻化,35 岁以上的程序员申请 P8 以下的职位成功率很低。

  曾有一家互联网金融公司表示平时在招聘技术人才时,普通开发人员的年龄不得超过 30 岁,架构师年龄不得超过 35 岁。

  而许多高速发展的创业公司,更是年轻人的天下,从 CEO 到 CTO ,平均年龄不超过 30 岁的情况比比皆是。现在的互联网世界,似乎成了年轻人的天下。

  大龄程序员在选择工作时,首选要认清自己,再去选择环境和公司。比如先确定自己是属于比较有激情、活力、愿意终身学习新技术的那一类人;还是心有余而力不足,想脱离一线技术,想把更多精力放在管理上的那一类人。

  如果是第一种,可以选择一家快速成长的创业公司,将自己的技术价值最大化地发挥出来;

  如果是第二种,就选择那些组织架构相对臃肿的大公司,这些公司盘子够大且没有太多坑需要踩,因此对年龄稍大且有丰富经验、能安于现状、踏实做事的人存在一定需求。

  其实不光是程序员,“大龄恐惧症”几乎是互联网行业里每个岗位的人都会遇到的问题,世界的变化太快,谁也不知道下一场取代互联网的变革何时会来。

  排除这种不可控的外在因素,一个人最大的恐惧,还是由对自我认知的缺失引起的。

  很多时候,大龄程序员之所以会焦虑,主要还是两方面原因:一种是家庭生活难两全带来的抉择,另一种是对自身技术水平的不自信。而后者才是大多数大龄码农焦虑的源头。

  而那些对自己技术不自信的人可能多年都在从事着普通开发的岗位,既得不到职位的晋升也提不起学习新技术的兴致。

  比如他们曾面试过的很多大龄码农,使用的框架和技术比较老旧,虽然他们对新技术也有所了解,却因为精力有限的原因没有落地执行,这种类型的程序员自然与高速发展的企业并不匹配。

  这个时代很残酷也相对公平,残酷的地方在于世界的变化之快容不得人有片刻懈怠,公平的地方在于:不论你是年轻还是年老,都要靠实力说话。

  那些被时代抛弃的永远都是跑得比较慢甚至在原地徘徊的人,即所谓的工作十年却只有一年工作经验。年轻程序员的优势在于年轻和激情,大龄程序员的优势在于阅历和经验。

  所以,年轻程序员不要有跨越年龄阶段的焦虑,大龄程序员也不要觉得年轻人抢了自己的饭碗。

  每个年龄段都有自己要解决和面临的问题,认清自己内心真正的需求和渴望,再去寻找适合自己的栖身之地打怪升级,才是当务之急。

  时代永远不排斥大龄程序员,时代排斥的是没有能力的大龄程序员,真正能解决难题的程序员,无论年龄多大,都会一直抢手。

  希望即将奔三或者马上奔四的程序员伙伴们,永远保持一颗学习心,不以物喜不以己悲。

  手中无剑,心中无剑,这个阶段的程序员,主要还是模仿,比较唯技术论,很容易受到权威或舆论的影响。

  手中有剑,心中无剑,这个阶段的程序员,觉得自己是无所不能的,开始熟悉某一个领域,看不起其他领域,开始给权威挑刺。

  手中有剑,心中有剑,这个阶段的程序员,开始变得谦虚,开始频繁的总结,对于权威和技术体系,有选择性的吸收到自己的知识体系中。玩什么游戏可以挣钱

  手中无剑,心中有剑,这个阶段的程序员,自己已经不再受经验的束缚,可以根据环境和需求找到最佳的解决方案,自己已经成为了权威。