程序人生的四个象限和两条主线
零为什么我们要自己做职业生涯规划?记得电影《社交网络》里边,CFO同学在知道自己股权被稀释时说了一句话,“我以为那些律师是我的律师。”其实我们大多数人对HR几乎都存在类似的误解—— 你以为她是你的HR,其实她只是公司的HR。她们care的是如何编个理由用老板给的那点小钱留住一个高性价比的人才,而不是真正有助于你发展的职业路线图。昨天还含情脉脉和你讨论人生的知心姐姐明天就可能变成拿着劳动合同逼你主动离职的凶婆娘。和人性无关——这就是她们的工作,越专业的HR越擅长。所以,你要自己来做这件事情。另外还有一个原因,你该去什么样的公司、做什么样的事情、拿多少钱,都取决于一个问题:你想成为一个什么样的人。工作只是人生的一部分,是用来支撑你人生价值的核心框架之一。在你自己没有想明白的时候,没有人能帮你。这就是为什么猎头基本只谈钱——他们没空去和客户讨论人生的意义。一 我曾花了很长的时间去思考人生的意义,最终发现其实人生本来没有意义,意义都是我们赋予它的。在创业做人才服务后,我开始和很多的程序员聊天,开始去了解他们的现状和他们对于自己职业的RoadMap。我发现技术人员的职业生涯形态并不是千变万化的,绝大多数都大同小异,可以用四个象限和两条主线概括清楚。虽然我无法代替你去定义人生的意义,但是我可以和大家分享下各种职业规划下的人生都是什么样子的。当然,这些想法只是我总结出来的东西,未必正确、更不权威,大体是一些自以为是的最佳实践。如果你觉得有用,就把它分享给更多的程序员;如果你觉得无趣,就无视掉吧,毕竟我也只能从自己的视角来讨论这个事情。二写《穷爸爸富爸爸》的那个胖子——罗伯特清崎,从现金流向将人类分到了四个象限,从而总结出来了这么一张图。你也许已经看过,但这次我会从程序员的角度来进行解读。E象限E象限是雇员象限,绝大多数程序员都在这个象限里边。这里是风险最小的地方,只要你准时上下班别一个SQL把公司的数据库Drop掉,基本都能每月领到应得的银子。这里本应该是程序员们的天堂,因为比起改变世界,他们更多的只是很单纯的喜欢写代码。但现实很残酷,北上广的房价高不可攀。你可以不在乎房子,你女朋友能不在乎吗?你女朋友不在乎,她妈能不在乎吗?再考虑到将来小孩上学之类,只要你还打算留下来,房子其实还是必需品。在E象限要低风险的搞定房子,只有一个攻略:靠股票和期权。找一家上市公司,或者即将要上市的公司,在里边成为核心员工,再待上几年,就能拿到一定数量的股票或期权。如果运气好,变卖掉这些东西,可以有百万级的收益。前几年这些钱还可以买房子,现在大概只能交首付了。S象限E象限的整体薪资是有天花板的,很多公司总监的月薪也就3万到5万,扣掉税和每月花销,其实攒不了太多钱。所以有一部分人就选择了S象限——自由职业者和小企业主的领域。S象限的魅力在于你的收益不再完全由你的劳动来获得,你可以开始雇人了。比方说,你可以开一个外包公司,给微博的粉丝服务平台做应用。面向企业的业务一般难在拿到单子,而利润是很高的,一个项目上百万完全不算大,之前有人开玩笑说这些公司一年一个单子就够了、两个单子就赚了。在S象限要活得舒服还是有技巧的:如果做外包,一定要有一个不错的客户渠道;依赖于大平台的项目最好能花点钱成为平台的合作伙伴;建站也是Web程序员们做得多的方向,现在可以顺便把移动APP也给做了,很多简单需求用HTML5打个包就能卖几万块钱。如果你人脉不好,好吧,程序员人脉好的其实很少,那么就只能用免费+收费模式了。首先把你要做的业务中标准化的部分开发成产品(如CMS)在网络上免费传播,而其中需要定制的部分就可以收费了。开源和免费的Web产品很多,但同质化严重,很少有细分市场的产品,用心定位的话,养活一个小公司绰绰有余的。S象限还有一种很悠闲的活法,那就是逃离北上广、回归大自然。去一个风景优美空气清新的二三线城市,雇三五个人(当然就你自己也行)开一个小工作室,给美国人写iOS和Android应用。既没有房价的压力,还能发着人民币挣美金,貌似成都高新区还免税。 B象限按罗伯特他亲戚的定义,B象限本来是大企业主的,那种员工超过500人的。不过在互联网领域这个定义不靠谱,我更乐意把它看成是上市公司和为了上市的创业公司的象限。同样是开公司,B象限的玩法和S象限不同,它是以规模化为前提的。天使、种子、VC、上市和出售是这个象限的关键词。很少有技术人员适合独立创业,不是说你能力不够,而是很多东西你都没接触过,需要补很多课。之前创业成本比较高,现在有了微博和微信这些开放平台、有了App Store和Google Play这些开放市场,技术人员创业也开始有了一点的优势:自己做个小产品,不停的快速失败,直到成功。说得更直白一点就是你找业余时间开发一个商业应用,放到市场上去卖试试,让客户骂试试。等你经过了共享软件的洗礼,你基本上就知道做生意是怎么一回事了。上帝其实挺公平的,他还为程序员们准备了另外一条低风险的捷径——上市公司或者快要上市公司的CTO。在这里要和大家强调一点,同样是CTO职位,初创团队的CTO和相对成熟公司的CTO差别是非常大的。A轮(不一定精确,大致如此)及以前的公司,主要在寻找商业模式,会频繁的变更需求,对开发速度要求更高,这时候CTO只要能敏捷的开发产品就OK;B轮以后的公司,着力于规模化,会有大量的推广,可能在某些时间点遭遇高并发,同时技术人员、设备会迅速增加,这时候CTO需要考虑业务的高可用、还要能处理好团队、资源的管理工作。如果原来的CTO没有大型互联网公司的背景,往往很难做好这些事情,所以一般会考虑从大公司去挖一个。如果你的规划足够好,是可以从小公司到大公司再即将上市的公司,加薪升职迎娶白富美出任CTO成为人生赢家的,这个等下我们还会具体讨论。I象限这个土豪和高富帅的象限我还没有待过,所以不多讲。大体是钱多得没处花的人通过投资来保证资产增值的地方。所谓的财务自由(就是一直不干活,钱也够你花),就是通过进入这个象限来实现的。投资未必都是技术活,直接银行存个定期也算是投资,如果你钱够多的话,也能财务自由。对了,投行的投资经理是E象限的,他们其实是雇员。三当你在上边四个象限里选好了想要的人生区间后,就要设计一个可行的RoadMap来实现它。但既然你都读到这里了,大概既没有一个I象限的亲爹、也没有一个I象限的干爹,所以唯一可以推动你前进的,只能是自身的成长。技术人员的成长路径主要就分两条,技术线和管理线。总体来讲,选技术线的同学要选好技术方向;而选管理线的同学要把握好节奏。技术线这里的技术线是纯技术路线,是专家方向,做到最后title应该是首席科学家、首席架构师或者首席技术顾问之类。如果你对某个方向的技术非常感兴趣,又不喜欢做项目、团队管理工作,那么技术线就是不错的选择。选技术线的同学一定要选对技术方向,因为你会在自己选择的这个细分市场里投入三年、五年、甚至十年的时间。和大家讲讲我自己的经历。我是2002年开始学习PHP的,当时ASP非常流行,而我只是一个计算机系的学生,并不具备对行业趋势的判断能力,只是因为ASP太受欢迎,以至于图书馆的书都被借完了,我只好借了一本放在旁边的PHP。于是在大学时我用PHP写了很多开源项目:留言板、相册、CMS;靠这些东西得到了一家建站公司的兼职工作,除了把学费挣回来以外,还轻松进入新浪实习。到新浪刚过了几个月,受雅虎影响,新浪也全面转向了PHP——而我正好是我们组最懂PHP的。你可以想象接下来我是多么如鱼得水,我和我的小伙伴们用PHP写完一个人才项目后,又用PHP重写了PV近亿的手机新浪网发布系统,一切都风调雨顺有惊无险,以至于后来去另一家公司面试时,面试官问我经历过最失败的项目时,我完全答不出来。十年时间过去了,PHP依然如日中天,用我十年前学习的PHP技能,依然可以在一流互联网公司找到一份不错的工作,而ASP——现在谁还知道ASP是什么?好了,我无意来仇恨,其实我只是想说同样是一门语言,它的投入产出比是非常不同的。选择技术方向时一定要谨慎。那么,怎么选择技术方向呢?我给两个建议。学会观察技术潮流有一本老外写的书里边讲,如果你要知道什么语言流行,就去看看技术Guru们都在用什么。这话固然不错,但知其然不知其所以然并不是件好事。从根源上讲,一个技术是否流行,和人们使用技术的方式密切相关。PHP能大规模流行,并不是因为它的语法好看,而是因为人们使用技术的方式从单机转向了网络,而PHP正好是所有语言里边最专注于Web的。苹果手机大规模流行后,Objective-C 的使用量开始极速上升。在很多程序员眼里OC的语法完全是异端,但这丝毫没有影响他们用异端语言大把挣钱。仔细观察下周围,现在人类(是的,普通人类而不是其他程序员)是怎么使用技术的?很多人晚上回家已经不开电脑了,他们用电视盒看电视,用平板玩游戏,用手机吐槽。而这些设备很多都是Android系统,那么你觉得Andriod程序员会便宜吗?由于有了多个设备,个人的数据需要在多个设备之间进行同步、分散到各处的数据也需要统一管理,所以云计算尤其是云存储的需求会凸现出来。知道了多屏合一以及APP流行的背景,你还会觉得现在投入PHP会是一个好选择吗?我们来分析下。PHP最大的优势在于它的胶水特性——简单快速的把HTML和业务数据粘在一起然后显示出来。如果只有浏览器,那么PHP还可以通过响应式设计的方式来兼容移动设备。但是当我们有了手机APP的时候,服务器就必然需要API了。换句话说,多屏合一其实是要求数据和显示分离的——这不是PHP最擅长的,单纯写API接口的话,无论是NodeJS还是Go都更具优势。当然,作为PHP的铁杆粉丝,我要说明,PHP也有很多强化API性能的项目,比如Yar,O+。这些东西让PHP在全平台时代获得了新的竞争资本,具体的大家可以去看看鸟哥在今年infoQ大会上的PPT。http://vdisk.weibo.com/s/A0GI9rYhWVk6投资新兴市场和细分市场这是第二个建议。如果把选择一门技术当做一个投资的话,新兴市场和细分市场是特别值得留意的。新兴市场对程序员来说,就是一种新的语言、一个新的平台、一套新的框架。新兴市场因为刚刚兴起,所以几乎所有人都在同一个起跑线,特别适合后进者。我认识从一个2011年开始学习iOS开发的同学,他能力中等,但现在已经算是很资深的iOS工程师了,月薪超过2万;而如果他那时选择去学习PHP,那他现在只能算个初级程序员。并非只有一个平台的兴起才有机会,很多框架技术也会带来机会。比如说Cocos2d Javascript版。以前开发游戏需要学习OC或者Java,而Cocos2d Javascript版本的出现,让你可以用纯JS同时开发一套运行在浏览器、iOS和Android平台上的游戏——不用改一行代码,由于是把JS解析后直接扔给OpenGL运行,在手机上性能也很不错。这对JS工程师来讲,就是一个全新的、可以进入游戏行业的机会。如果你只能进入一个成熟市场,那么记得给自己确立一个细分的定位。前几天国内知名的漏洞报告平台乌云招聘PHP开发工程师,职位薪资不是很高,但是我觉得是一个很不错的机会。乌云平台每天被攻击一百多次, 在乌云工作几个月以后,你就能写出来可能是国内最安全的PHP代码,如果再适时的分享下你在乌云工作的经验教训,一个专注于安全的PHP专家就跃然纸上了。这就是细分市场,比你懂安全的没你懂PHP、比你懂PHP的没你懂安全。技术线属于那些赖得住寂寞,还得了房贷,喜欢风险最低化的同学。在自身技术实力不错,专攻的技术方向还未衰落的情况下,踏踏实实熬个五到十年,还是可以有车有房的。如果中间遇到公司上市、出售,那么时间可能更短。管理线用玩游戏来打比方的话,技术线比较单一,在同一个地方不停的打怪就好了;而管理线则有相对复杂的剧情。技术管理虽然有技术两个字,但更多的是和人相关的管理工作,所以在这条线上,职业逻辑也更不正常(在HR看来可能是更正常)一些——title和资历很重要。一个只在小公司上过班的PHP程序员,不管他能力有多好,是不可能直接成为一家500人规模还有半年就上市的企业的CTO的。即使CEO非常相信你的能力,他也需要拿出让投资人和团队其他人信服的证据,很显然一个大型互联网公司的技术总监职位更容易服众。所以别去相信那些没开过公司没当过高管或者就是别有居心的人说的,title很重要,它标记了你做过什么样的事、有怎么样的成绩。虽然它只能证明你的过去,但我们其实都是从别人的过去去判读一个人的将来的。不想当CTO的程序员不是好项目经理,所以庸俗的讲,管理线其实就是一个不断升级自己的title,直到CTO的游戏,它有点像某些排序算法的动画。当然,随着title越来越高,管理的人和资源就越多,对沟通能力、管理能力的要求也越高。在稍微扁平一点的互联网公司,职位分布大概是这样的:工程师 – 技术主管/技术经理/项目经理 -总监 – CTO。和技术线不同,管理线每一次升级除了能力,还需要机遇的。因为越是高级的管理职位就越少,如果你遇到一位年富力强又对公司衷心耿耿的直接上级,那这条线基本就被堵住了。好在我们生活的这个年代换公司比换衣裳还容易,所以我们可以通过跳槽来调节。除了可以跳到相同水平但是发展更好的公司外,也可以去稍微低一级的公司,这样你的title(还有薪资)就可以先调上来,等这家公司发展起来,你的价值就增加了。跳槽的时间间隔要把握好,一般两到三年为宜;不要太频繁,否则会让人对你的稳定性产生怀疑。每一次跳槽要设定好自己想要得到的空间、资源、薪资和title。对去创业公司的同学多说一句,虽然我不想承认,但的确99%的创业公司都会失败的,不过公司的失败未必是你的失败,你只要确保在每一家公司都能得到成长,就可以踩着河里的竹竿逆流而上。写到这里连我自己都觉得有些势利了,但大部分公司和员工本身就是赤裸裸的利用关系,你不替自己打算是没人帮你的,老实也未必能有好结果。当年有个和我一起入职的同学,因为是应届,所以月薪只有3k,她一直勤勤恳恳的工作了四年,期望能靠自己的努力得到认可,但最后薪水也只有7k,远低于行业平均水平。后来终于想开了,跳槽去了竞争对手那边,直接13k+。公司的人才政策很多时候取决于高管,即使你的直接主管想帮你,也未必能帮上忙。比如之前,我们部门一个技术的同学结婚后经济压力上来了,想找份报酬更高的工作,我们好说歹说愿意留下,但想调调薪资,但公司死活不乐意,宁愿花着同样的钱去新招一个……嗯,吐槽就到这里吧,总之,用多家公司作为自己职业生涯的调节杠杆,就像用并行进程处理高并发一样,是非常有意义的。你未必要真的跳来跳去,但多个选择总不是坏事。至于要怎么去选择公司,尤其是小公司,你只需要注意两件事:公司的业务方向靠谱不?公司的老板对员工好不好?前者关系到公司能不能挣钱,后者关系到公司挣的钱有不有你的份。四就写到这里吧,虽然不全面,但如果能在某些点上引发你的思考,那就不枉我打这么多字了。如果你有什么要和我讨论,或者有什么要和大家分享,可以发邮件到 easychen@gmail.com ,我会找时间整理出来的。—————-反馈回复关于能力很多同学都问到如何才能快速的提升自己的能力,其实你自己眼中的能力和别人眼中的能力是不同的。自己眼中的能力是你能做成什么事,而别人眼中(尤其是在非招聘的情况下)的能力是你做的事情能给他带来多少价值。比如LazyREST吧,它是一个非常简单的框架,因为写得匆忙,技术评分可能也就60分。但我经常收到它的用户夸我能力好 —— 其实只是因为LazyREST实实在在的帮到了他们。公司雇人也是一样,他们要找的是能干活的人,能帮他们解决问题的人,单纯能力好,就算你知道A标签有四种写法,那又如何呢。所以对于学习新技术、新知识,我一直有一个原则:用以致学。在学习一门新技术之前,先定一个目标——用它做一个日常生活和工作用得上的项目,然后根据项目的需求反向的去学习需要的知识。方便的话,把它开源出来,让大家都能用,慢慢的,你的实力和影响力都会成长起来。读者来信昨天收到了XiaoDong Miao同学的来信,分享了他的经历和想法。我觉得他提出来的几点思考都是大家经常会遇到的问题,写得非常好,在得到他许可的情况下,贴到这里供大家参考。再次感谢分享 :)easychen,你好。看完你的《程序人生的四个象限和两条主线》文章,感触颇多。你的这篇文章,其实可以算是探讨程序员职业生涯规划的文章。在我前一家公司离职之前,还没有接触过职业生涯规划的概念,当时公司加班很厉害,原因很多,首先是所在行业竞争激烈,加班确实是常事,其次公司的产品没有竞争力,利润很低,于是公司高层只是通过堆项目来保证公司的收益,最后公司的技术总监信奉加班至上的原则,只要你加班时间多就是好员工,至于你做的怎么样,是其次。于是乎,整个公司就只是在比拼加班时间,即使自己的事情做完了,也不好意思早走,非要坐在位置上假装看文档学习,熬到11点,当然大部分情况你都会忙到晚上1,2点才能回家,熬夜通宵是经常的事情。有次周末,跟团队里的小弟喝酒聊天交心,他跟我说:哥,我知道在这个公司,只要继续加班熬下去,我也可以坐到你那个位置,可是那不是我想要的生活。当时,我听完了很难受,因为我自己在我那个位置都不知道如何去发展自己,我又如何带领团队,让别人信服的跟着自己一起努力呢。我知道自己遇到瓶颈了,而且4,5年的这种朝九晚一的生活让自己的身体变的很差。去年在身心疲惫的情况下离职了,在休息的时候无意中看到了古典的《拆掉思维里的墙》,接触到了职业生涯规划的概念,后来抽空去北京参加培训,也做了一对一的咨询。拓展了不少的眼界,也认识了不少做职业生涯规划的朋友。这方面的知识其实不光是对自己有用,对于一个团队领导者来说,其实也有很大的帮助,当你能够帮助你的下属解决他的困惑和发展问题时,他对你会更认可,也会在工作中更努力主动,而职业生涯规划方面的知识对帮助下属解决这方面的问题有很大的帮助。现在仔细想来,或许这也是当今中国教育的缺失,只注重专业技能的培训,而忽视了这块意识的培养,很多人或许有不错的学校和专业背景,却对自己要做什么,如何发展很是迷茫。关于生涯规划的东西你讲的挺多,基本认可,我想讲讲自己的一些思考。1.虽然职业生涯规划很重要,可毕竟思考层面的东西会多一些,实际执行起来往往又会是另外一回事情。所以动态调整也很重要,这点倒有点像创业,就好像刚开始规划好了产品,做出来给用户用就发现很多问题,跟当初自己想的不一样,需要做出及时的调整。回到你文中的两条主线来说,假设开始你很想走技术路线,可各种机缘你进入了创业公司,而创业公司往往是需要多面手的,并且随着发展是需要有人可以带领团队,提高生产力的,这时就需要你向管理方向发展。如果你能改变自己原有发展路线,适应公司的发展,可能就会有更高的收益。说白了,就是当好的机会出现时,不用过分的拘泥于原来的路线规划。2.不管什么象限,不管什么路线,沟通能力都很重要。为什么我要单独提出来,这是因为程序员的沟通能力的名声不怎么好。见过不少的朋友都跟我吐槽过这样的问题,更甚至曾看到微博上的吐槽,招程序员:可以接受产品经理的需求变更而不会对其进行人身攻击。当然自己也走过这方面的弯路。我自己的感悟就是,改变自己的思维模式。由于程序员大部分时间是跟电脑打交道,严格的01,true or false,长期的惯性导致了他们会往往用同样的思维方式去和人沟通,去和人打交道,结果可想而知,最怕的就是还不知道自己错在哪里。细致,究根问底对于编程做技术来说,确实是好的性格或者说是处事方式,可当跟人打交道,场景就变了,再这样做原来的逻辑就错了。所以多跟不同行业的人接触交流能拓展自己的思维,让自己在跟人交流时不会再拘泥于程序员的思维方式上,那么沟通就会好很多。3.跨界。当你接触不同领域的知识之后,你才有可能走向更高的层次,然后考虑问题才会更全面。对于一个整天只接受需求然后实现的程序员来说,他只考虑到自己的技术要如何发展,代码要写的如何的漂亮,架构要做的如何得优雅,可这些往往就会需要很多的开发成本(不仅仅是时间)。而当某个需求很紧急的时候就需要去平衡时间和技术。如果程序员没有带过项目,那么他就只会从技术角度出发考虑问题,于是乎就会出现程序员不理解项目经理,项目经理不理解程序员的情况,而对于程序员自身来说职业发展也会遇到瓶颈。反过来对于培养程序员其实也是如此。记得有次跟朋友聊天,他跟我抱怨说,下面的程序员为什么只会考虑自己的那块东西。然后我就问,你有让他有机会去接触其他方面的东西了吗?他回到:没有。我说:你也是做技术出身的,但是你后来还经历过售前,售后,产品等不同的岗位,乃至后来了解行业的整个市场,自己出来开公司创业,这些跨领域的锻炼使得你可以从更高的层次去考虑问题,去平衡。而你抱怨的那个程序员没有让他有这方面的锻炼,他当然只会从自己单一的技术角度出发来考虑问题,因为他的见识就只有那么一些,在他的技术世界里那些逻辑确实是对的啊。当然你不一定需要让他像你那样去轮岗做不同的岗位,可以让他带个项目,或者直接跟客户沟通,或者让他了解其他方面的东西,到时说不定他就会像你一样去思考问题了而不会变得那么难沟通了。跨界并非是要让你做技术浅尝则止,而是让其他领域的知识对你的技术发展助力。借用大前研一的话说就是培养自己成为T字型人才-----T的竖是深度,可以代表程序员的专业技术;T的横是宽度,代表程序员的不同领域的知识面。前面说了接触更多领域的知识可以让你从更高的层次上去思考问题,这算是一个帮助。那又比如说去了解商业市场发展,了解这块资讯,你就会知道将来会是大数据时代,有意识的去培养自己大数据方面的技术,那么将来薪资待遇和发展就会比较顺利。
页:
[1]