Total Pageviews

Saturday 21 December 2013

程序员的人生路线图

很少有技术人员适合独立创业,不是说你能力不够,而是很多东西你都没接触过,需要补很多课。之前创业成本比较高,现在有了微博和微信这些开放平台、 有了App Store和Google Play这些开放市场,技术人员创业也开始有了一点的优势:自己做个小产品,不停的快速失败,直到成功。说得更直白一点就是你找业余时间开发一个商业应 用,放到市场上去卖试试,让客户骂试试。等你经过了共享软件的洗礼,你基本上就知道做生意是怎么一回事了。
上帝其实挺公平的,他还为程序员们准备了另外一条低风险的捷径——上市公司或者快要上市公司的CTO。在这里要和大家强调一点,同样是CTO职位,初创团队的CTO和相对成熟公司的CTO差别是非常大的。
A轮(不一定精确,但大致如此)以前的公司,主要在寻找商业模式,会频繁的变更需求,对开发速度要求更高,这时候CTO只要能敏捷的开发产品就 OK;A轮以后的公司,着力于规模化,会有大量的推广,可能在某些时间点遭遇高并发,同时技术人员、设备会迅速增加,这时候CTO需要考虑业务的高可用、 还要能处理好团队、资源的管理工作。如果原来的CTO没有大型互联网公司的背景,往往很难做好这些事情,所以一般会考虑从大公司去挖一个。
如果你的规划足够好,是可以从小公司到大公司再即将上市的公司,加薪升职迎娶白富美出任CTO成为人生赢家的,这个等下我们还会具体讨论。
I象限
这个土豪和高富帅的象限我还没有待过,所以不多讲。大体是钱多得没处花的人通过投资来保证资产增值的地方。所谓的财务自由(就是一直不干活,钱也够 你花),就是通过进入这个象限来实现的。投资未必都是技术活,直接银行存个定期也算是投资,如果你钱够多的话,也能财务自由。对了,投行的投资经理是E象 限的,他们其实是雇员。

唯一可以推动你前进的,只能是自身的成长。
技术人员的成长路径主要就分两条,技术线和管理线。总体来讲,选技术线的同学要选好技术方向;而选管理线的同学要把握好节奏
技术线
这里的技术线是纯技术路线,是专家方向,做到最后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系统,那么你觉得Android程序员会便宜吗?由于有了多个设备,个人的数据需要在多个设备之间进行 同步、分散到各处的数据也需要统一管理,所以云计算尤其是云存储的需求会凸现出来。
知道了多屏合一以及APP流行的背景,你还会觉得现在投入PHP会是一个好选择吗?我们来分析下。PHP最大的优势在于它的胶水特性——简单快速的 把HTML和业务数据粘在一起然后显示出来。如果只有浏览器,那么PHP还可以通过响应式设计的方式来兼容移动设备。但是当我们有了手机APP的时候,服 务器就必然需要API了。换句话说,多屏合一其实是要求数据和显示分离的——这不是PHP最擅长的,单纯写API接口的话,无论是NodeJS还是Go都 更具优势。当然,作为PHP的铁杆粉丝,我要说明,PHP也有很多强化API性能的项目,比如Yar,O+。这些东西让PHP在全平台时代获得了新的竞争 资本,具体的大家可以去看看鸟哥在今年InfoQ大会上的PPT。
投资新兴市场和细分市场
这是第二个建议。如果把选择一门技术当做一个投资的话,新兴市场和细分市场是特别值得留意的。
新兴市场对程序员来说,就是一种新的语言、一个新的平台、一套新的框架。新兴市场因为刚刚兴起,所以几乎所有人都在同一个起跑线,特别适合后进者。 我认识从一个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+。公司的人才政策很多时候取决于高管,即使你的直接主管想帮你,也未必能帮上忙。比如之前,我们 部门一个技术的同学结婚后经济压力上来了,想找份报酬更高的工作,我们好说歹说愿意留下,但想调调薪资,但公司死活不乐意,宁愿花着同样的钱去新招一 个……
嗯,吐槽就到这里吧,总之,用多家公司作为自己职业生涯的调节杠杆,就像用并行进程处理高并发一样,是非常有意义的。你未必要真的跳来跳去,但多个选择总不是坏事。
至于要怎么去选择公司,尤其是小公司,你只需要注意两件事:公司的业务方向靠谱不?公司的老板对员工好不好?前者关系到公司能不能挣钱,后者关系到公司挣的钱有不有你的份.