蜜蜂职场文库 > 求职面试 > 职业规划 >

程序员的职场生涯规划划书

时间: 小龙 职业规划

程序员做好职业生涯规划能让你减少在人生路上的徘徊犹豫,那你知道程序员的职业生涯规划书该怎么写吗?下面是小编为大家带来的程序员职场生涯规划书,相信对你会有帮助的。

程序员职场生涯规划书(一)

程序员的职业生涯发展规划指导,其职业发展的方向,可以分为以下的四点:

1、 走向软件设计师

其实很多程序员走到这个阶段已经在做软件设计师工作了。这是绝大多数程序员发展的必经之路。因为,程序员在编程序的时候,一方面会实现设计的功能,另一方面也在对设计有一个理解、认识、熟知的过程。进而慢慢地从学习别人设计,转向到自己参与或独立设计。

这个转变很大程度是程序员意识的转变,就是说要把编程的时间,逐步分摊到软件设计上,英才招聘网建议要把重点从编程实现转变到项目的功能设计上。我这里强调的是“逐步”的一个过程,程序员要逐步减少编程的时间,增加设计的时间,要克服编程的强大吸引力,要主动地攀上设计这个台阶。很难有一个设计师是完全不编程的,而且我认为,会编程的设计师才是真正的设计师。完成这个职业目标需要花上一到两年时间。

2、 走向项目经理

程序员的职业生涯发展可以审视一下自己,是否具备项目经理的要求,项目经理职位承担着项目管理的职责,对项目负主要责任。它和程序员的作用也不相同,项目经理的重点已经从编程转移到对人、对技术、对进度、对项目的管理。

由于软件的项目经理与软件项目的相关性太大,因此,他必须要了解软件开发的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。所以他依旧和程序员脱不了干系。从程序员到项目经理可以使得项目经理更好地理解程序员在项目中的地位和作用,了解软件开发的各种规律性的东西。从而保证项目的正常完成。而且,项目经理的收入在公司中的地位也是比较高的。

因此,程序员到项目经理的职业规划是不错的选择,但是提醒,程序员在担任项目经理之前最好要把软件设计工作做好,这样在做项目经理的时候,就会有很好的基础。

3、 走向管理者

很多程序员希望自己能成为公司中的主管、经理、老总、老板,这样无论是收入和在公司的地位都相对比较高一些。另外,一方面程序员可能厌倦了年复一年的编程工作,对工作产生了抵触情绪,希望能摆脱这种步步紧逼的工作状态。走向管理者其实要求程序员要比一般人做更多的准备,要做更多的转型工作,并不是想当管理者就能成为管理者的。

但是,这个职业生涯发展规划的实现,不仅需要这方面的工作经验,更重要的是有这样的机会,因此,我的建议程序员最好要把编程、项目设计、项目管理基础打打好。这样转型到管理者成功率就会高一些。

4、 走向软件营销

程序员最大的缺点之一,就是眼光只盯在技术上。程序员在入门阶段和成长阶段,这种情况还是属于正常的。但是,到了成熟阶段这种缺点将严重影响了程序员的职业发展。程序员在工作中不免会接触到用户,不免会了解到用户的需求。从而了解到软件实际发挥的作用,进而了解了自身的工作价值所在。将自己的专业知识和产品营销结合在一起,推动软件的销售和服务,转向软件营销职业。

这个职业将是一个比程序员更有发展的职业,它可以直接反应程序员的工作能力和工作成果,程序员的收入和销售会直接挂钩。因此,可以让有才华的程序员获得更高的收入,接触到更大的软件市场,看到更广的职业发展空间。

所以总体来看,程序员的职业生涯发展前景还是不错的,有四个主要的发展方向,但是要实现这些职业目标,不断的学习不断的成长,才是最为关键的,也是英才小编,对程序员职业生涯发展规划指导的重点,当然也可以从计算机/互联网行业招聘动态,了解更多的职位招聘情况,制定科学合理的目标,完成自我职业规划。

程序员职场生涯规划书(二)

在中国有很多人都认为IT行业是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。

明确入行的目的

很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为了很多高校毕业生的选择。如果您只是抱着这样一个心态来入行的话,那阁下可真的要小心。因为干IT这一行竞争本来就比较激烈,特别是页面设计这方面,能够开发的人很多,所以为了节省成本在大部分公司都会在需要的时候才招聘这类人员,在没有订单的时候一些小公司还可能找各类的借口或者以降薪的手段去开除这类员工。而在招聘信息上常常会看到“招聘页面设计师,条件:30岁以下……欢迎应界毕业生前来应聘”这样一条,因为这一类工员对技术上的要求并不高,找应界生可以节约成本。所以在下觉得“IT行业是吃青春饭的”这句话只是对着以上这类人所说的,如果阁下缺乏“进取之心”,而只抱着“收入高,容易找工作”这样的态度而入行,那“IT行业是吃青春饭”将会应验了。

选择合适的工具

JAVA、C、PHP、C++、VB……10多种热门的开发语言,哪一种最有发展潜力呢?其实开发语言只不过是一个工具,“与其分散进攻,不如全力一击”,无论是哪一种开发语言,只要您全力地去学习,到有了一定的熟悉程度的时候,要学习另一种的语言也是轻而易举的事情。开发语言主要分为三大类:

1. 网络开发

现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面

2. 企业软件开发

JAVA、C、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发

3. 系统软件

C语言、C++、Object-C这些软件更多是用在系统软件开发,嵌入式开发的方面。

当然,这分类不是绝对,像JAVA、C、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。但所以在刚入门的时候,建议您先为自己选择一种合适的开发工具,“专注地投入学习,全力一击”。

明确发展方向

当您对某种开发语言已经有了一定的了解,开始觉得自己如同“行尸走肉”,成为一个开发工具的时候,那您就应该要明确一下自己的发展方向了。

平常在公司,您可以看到做UI层的开发人员大多数都有20多岁,他们充满干劲,而且没有家庭负担,在两年前ASP.NET MVC 、Silverlight等刚出现的时候,他们可以在晚上回家的时候买几本书或者直接上网看看,研究三五个星期以后,对需要用到技术就已经有一定的了解了。而年过30的人多数是已经成了家了,他们每天9:00点上班唯一的希望就是快些到6:00点,能回家吃饭。吃完饭只想陪孩子玩一下,看看孩子的功课,对新增的技术缺乏了学习的欲望。所以很多接近30岁的程序员都有着一种逼迫感(包括30岁时候的我自己),再过几年应该怎么办?这时候,您就更应该明确一下目标,努力向自己的发展方向前进了。归纳一下,可从下面几项里选择适合自己的一条道路:

1. 从技术向业务过渡

在国外,很多发达国家都很重视人才,一个高级的程序员与一个Project Manager收入相差一般不超过15%。(注:关于收入差距,请参见伯乐在线报导的这篇资讯《年美国IT从业人员的薪资调查》,有的甚至超过项目经理。)但中国是世界上人口最多的国家,国内人才众多,所以人才滥用的情况经常可以看到。一个小公司的开发部里面经常会见到新面孔,但PM却不会常换。因为做老板的对技术是一窍不通,依他们看来只到拉住PM的心,那技术方面方面就能搞得定,至于技术部要换人,他们根本不需要费力气去管。所以从一个技术员过渡到一个PM是一条向前发展的一个选择,但开发人员也需要知道,要成为一个PM不单单是使用技术,而更重要的是对管理方面认识。一个PM主要的工作是组织团队,控制成本,管理业务,控制项目进度,与客户进行沟通,协调工作,定期进行工作报告等。所以要成为一个成功的PM更要重视组织能力,PM必须能提高团队的积极性,发挥团队所长,在有限的开发资源前提下为公司得到最大程度上的利润。成为一个PM后,通常不需要直接接触技术开发,而着重管理的是业务发展,但PM对技术也需要有一定的了解(在下曾经为PM对技术了解的必要性写过一篇文章,得到很多支持但也惹来不少的争议)。在这里我还是要强调自己的观点:要成为一个成功PM最重视的是管理能力,但对技术也应该有足够的了解,因为这是与团队成员沟通的桥梁,只有这样才能与整个团队的成员有着紧密的结合,让团队成员感觉到他们自己存在的意义,从而调动团队的积极性,而不是漠视技术人员的存在。技术并非成为一个成功PM的充分条件但却是必要条件!

2. 从程序员向技术管理发展

其实一个Team Leader的职责与Project Manager相像,但Team Leader更着重于技术开发方面,通常一个大型项目都会有一两个开发团队由Team Leader带领,负责开发核心部分,而其它部分分派给不同开发小组或者分派给外包公司。在网上常看到几句话,贴切地形容了PM与TL的区别:“技术人员乐于被领导;但他们不喜欢被管理,不喜欢像牛一样被驱赶或指挥。管理者强迫人们服从他们的命令,而领导者则会带领他们一起工作。管理是客观的,没有个人感情因素,它假定被管理者没有思想和感受,被告知要做什么和该如何做。领导是引领、引导,它激励人们达成目标。领导力是带有强烈个人感情色彩的,它不是你能命令的,也不是你能测量评估和测试的。”

无论是PM与TL,对业务与技术都要有深入的了解,只是PM更侧重于业务的管理,盈利的多少,风险的大小等等,而TL则侧重于项目的成本,开发的难度,软件的架构等技术方面的问题。在某些人眼中,技术与管理就像鱼与熊掌,不可兼得,但依在下看来,两者却是秤不离砣,密不可分。只要及时提升自己对技术与管理的认识,不断地向深一层发展,要从程序员提升到技术管理人员只是时间的问题。打个比方,一个普通的.NET程序员,开始可能限制于ASP.NET的页面开发,但一旦他有了发展之心,他自然会对ASP.NET MVC、Silverlight、WinForm、WPF这些UI的开发手法感到兴趣,学习不需要多少时间,他可能就会认识这些UI开发只不过是一些工具,其实在开发原理上没什么区别。接着他就会向深一层的通讯模式进行了解,认识TCP/IP、Web Service、WCF、Remoting这些常用到的通讯方式,这时候他可能已经感觉到自己对开发技术有了进一步的了解。进而向工作流、设计模式、面向对象设计、领域驱动设计、面向服务开发等高层次进发,最后成为技术的领导者。上面只是一个比喻,但要注意的是,在学习的时期必须注意的是与同事之间沟通,很多的开发人员喜欢独来独往,开发的项目总想一个人搞定,不受外界的干扰。但要明白,就算你有天大的本事,一项大型的项目也不可能由你一个人全扛着。所以团队的合作性与同事间的沟通是必要的,这也是成功一个TL的必要条件。

3. 单方面向技术发展

能成功技术开发的尖端人才,这是在下最向往的工作,却也没本事登上这个位置。很多从事开发的人都会认为,业务总会带着“金钱的味道”,老板从来不管开发是否合符开发原则,有否经过必要测试,他们只会在客户面前无尽地吹嘘,项目到期能成功交货,只要不出什么大问题那这个项目就算成功了。其实我们也要明白:开发项目最终目标是为了赚钱,在开发过程中对项目成本的限制和效率的控制这也是必须,所以这才需要管理人员对项目进行管理。但开发人员也很想避开这 “金钱的尘嚣”,全情投入到技术的世界的当中。所以对技术有着浓厚兴趣的人,往往会深入地研究某一项技术,成为技术上的精英。但在这里说一句令人心淡的话:中国已经属于是世界上第二大经济体同盟国,但国民生产总值主要来源于第三方加工产业方面。中国可以说是人才济济,但却在高新产业上却比发达国家落后。这几年的确看到我们国家在高新科技上有着质的飞跃,但跟欧美发达国家还有着一段距离。所以想在中国成为尖端技术的人才,无可否定比在国外要难。依在下看来,要想成为尖端的开发者,必须对C、C++、汇编语言、嵌入式开发、Windows API、Linux API这些底层技术有着深入的了解。要知道解JAVA、.NET……等这些之所以称为高级开发语言,并不是指它们比C、C++、汇编语言更高级,而是指它们封装了C、C++等等的功能,更适合用于企业软件的开发,使开发变得简单。但如果要开发一些底层的软件,大型的系统的时候,就必须用到C、C++、汇编等开发语言,这是成功尖端人才的一个条件。

确定未来的目标

人是从历练中成长的,古人云:三十而立,形容的不是一个人的社会地位,经济来源,而是形容一个人对未来的目标,对人生的意向。要成为一个成功人,就应该早日为自己定下长期的发展目标,作为一个开发者也当如此。随着人的性格,取向各有不同,大家为自己所选择的路也有不同:

1.自立门户,勇敢创业

快30岁了,很多人会认为要想真正赚得了钱,就应该自立门户,为自己创业建立一个基础。像北京、上海、广州这些一级城市,要买房子,一手楼基本要在 2万~4万元/平方米左右,而在一家普通的IT公司当上一个项目经理,基本收入一般都在1.5万~3万之间(除非在大型的跨国企业内工作,那另当别论),要买一间100平方米左右的房子,就算不吃不喝也几乎要10年的年薪,所以选择自主创业,是很多IT开发人员的一个未来目标,想要达到这个目标,就应该更多地把业务作为重点。不可否认的一件事,在中国社会里很多时候讲的是“关系”,即使这30年的改革开放使中国的经济蓬勃地发展起来,但几千年来留下的歪风还是不能完全的磨灭。所以想要创业的人事建议你要多跟客户打好关系,与合作伙伴保持互利互动的模式,这将有利于日后事业的发展。

2. 急流勇退,退居二线

这也是不少人的选择。很多人在有了家庭以后,感觉到压力太大,人的一生并非只有事业,他们想把更多时间用于对亲人的照顾,对孩子的关心上。所以很多人会选择一份像系统分析、系统维护、高校教师、专业学院讲师这一类的工作。收入稳定,而且往往没有一线开发人员那么大的压力。

3. 不懈努力,更进一步

无论你是一个Project Manager或者是Team Leader,如果你想继续晋升一级,那还是会两极分化的。从一个PM到一间公司的管理层,那所面对的事件会有很多变化。一个公司的总经理,要管理的不再是一到两个项目的成本,而是整个部门的运作,整间公司的业务流程,所以要肩负的任务的会更重。在下曾经有一位上司彭博士,他是企业的最高领导人,年薪超过三百万,而且在报纸杂志上也曾经亮过相。平常只会在某些会议上轻轻地亮下相,说两句讲词,平常的公司运作与业务管理都不需要他直接执行。这并不是说一个作为管理层很清闲,因为他们要面对的是更多的社会关系,与公司合作企业的联系上。这跟一个PM的工作的很大的区别,所以要从一个PM晋升到管理层,那可是要负出更多的努力与汗水。

如果要从Team Leader上升为一个技术总监,那工作的方向也有所改变。像之前所说:一个TL可能更重视的是技术层面,讲求与团队之间的互动合作性,更注重的是开发的完善。而一个技术总监就无需要直接参加某个项目的开发,而注意的是开发的效率与成果,如何合理使用有限的开发资源,控制开发的风险和可能带来的效果。

发展感受

经历了8年多时间,在下从一个程序员到一个项目经理,之间经过很多的曲折,但因为每一个人的际遇都有所不同,所走的路也有不同,正所谓条条大路通罗马,成功的路不止一条,在下也不想令各位误解,而只想为大家说一下我的发展方向。如果您是一位开发人员 程序员->架构师->Team Leader(Project Manager)->技术总监 是一条不错路,这也是在下选择的路。在我国,想要进一步提升自己,无论你想是以技术为重点还是以业务为重点,都离不开管理二字。在一些大型的企业,一个团队往往会配备一个PM与一个架构师,尽管两个人负责的任务各有不同,但你会看到一个架构师的收入往往不如一个PM,PM往往是这个团队的核心领导者,是关键人物。因为公司能否赚钱,PM有着重要的作用。PM与TL并没有绝对的区别,而且在一些中小型企业,一个开发团队只有3~5人,一个TL往往会兼备业务处理、成本控件、架构设计、开发管理等多项任务。所以在下会把Team Leader与Project Manager定于同一层次,一个公司的老板往往不会知道团队的架构师、程序员是何人,而只会向PM询问项目的进度,所以只有晋升到这个层次,才有机会进一步提升管理能力,让自己有上升的空间。置于要成为一个技术总监,那要求就不再单单是对单个项目的管理,而应该更则重于新兴技术的引用,开发资源的合理利用,对开发项目敏捷性的处理等等,对此在下也在试探当中,未敢多言。p副标题e

程序员职场生涯规划书(三)

相对于国外那些年纪轻轻就能腰缠万贯的程序员们,我国的程序员一般都会被称为或自称为“码农”,他们虽然工资不算低,但是总是感觉自己是程序世界的农民工,做了有很多重复和低价值的工作,曾读过一篇分析原因的文章,很大部分是由行业结构和创业环境决定的,但是这并不代表程序员们只能乖乖做码农,如果有合理的职业生涯规划,程序员也能有一个美好的前景,以下这篇文章是我读过感觉非常不错的指导文章,逻辑清晰,作者也有相关的经历,所以值得分享。文章有点长,程序员们请耐心读完,必有收获。

程序人生的四个象限和两条主线

为什么我们要自己做职业生涯规划?记得电影《社交网络》里边,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。

投资新兴市场和细分市场

这是第二个建议。如果把选择一门技术当做一个投资的话,新兴市场和细分市场是特别值得留意的。

新兴市场对程序员来说,就是一种新的语言、一个新的平台、一套新的框架。新兴市场因为刚刚兴起,所以几乎所有人都在同一个起跑线,特别适合后进者。我认识从一个年开始学习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的横是宽度,代表程序员的不同领域的知识面。

前面说了接触更多领域的知识可以让你从更高的层次上去思考问题,这算是一个帮助。那又比如说去了解商业市场发展,了解这块资讯,你就会知道将来会是大数据时代,有意识的去培养自己大数据方面的技术,那么将来薪资待遇和发展就会比较顺利。

看过“程序员职场生涯规划书”

65447