程序员的发展方向

时间:2021-01-17 11:53:30

下面一些程序员发展方向的相关文章给自已也给同样迷茫的战友们,希望能给你一些帮助:

程序员有哪些发展方向

提示:本文适合有2年及以上工作经验的程序员,对于刚入职或者即将职的程序

程序员职业生涯发展到一定程度都会面临一个选择,是走业务+技术方向,还是选择纯钻研技术。程序员职业生涯发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员。

绝大多数程序员最终的职业目标可能都是CTO,做到CEO的人估计会比较少,也有一少部分人自己去创业去当老板,也有部分人转行了,当老板的人毕竟是少数,转行的人都不在这行做了,自然没什么好说的了。一般来说,程序员的发展基本上都会经历这么几条路径。程序员-系统分析员-架构师-技术经理-CTO程序员-项目组长-项目经理-项目总监-CTO程序员-产品设计师-产品经理-CTO

当然这只是一个大致的路径,不是所有程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了。而最终做到CTO的程序员,也是非常少的一部分,原因很简单,这个世界上不许要那么多的CTO和CXO。

也就是说,许多的程序员最终可能是做技术经理、项目经理或者项目总监之类的,那么到底我们职业生涯要选择哪一种呢?我觉得这个问题没有一个统一的答案,因为每个人的性格不一样,际遇也不一样,就像你从小希望当贪官,可是命运却偏偏让你做了一个程序员。所以应该根据你的兴趣、性格与际遇选择一条道路,比如说你正好有机会带一个项目,而你又不是很讨厌项目经理这个位置,那么你就可以选择向项目经理方向发展。

实际上很多时候,有些公司并没有明确的技术经理、项目经理、产品经理之分,在许多的公司里,他们经常是由一个人承担。在外包公司里,通常会有项目经理和系统分析员(也可能是技术经理)。在一些非IT公司里,可能会是部门经理,而做自己产品的公司可能会分得比较详细一些。我大致说一下这三个职位的区别,让正在徘徊的程序员有一个大致的了解。

项目经理是项目的直接负责人,这个角色相当于一个中间接口,不管是团队成员还是需求方(客户),或者是上级领导,有事都直接找他,所以这个职位着重于管理与沟通。一般来说,项目经理的工作重点在同客户沟通需求、项目进度的把控、团队的沟通方面,有些公司也会需要项目经理承担团队建设的工作,不过貌似很多国内公司都忽略了团队建设这个工作了。对于项目经理来说,重点会要求沟通能力、协调能力、危机把控能力、执行力、团队管理能力,着重于沟通、管理与计划。当然也有些公司还要求项目经历要参与招标谈判,这就要求项目经理有一定的商务谈判能力。

技术经理有时候也可能叫系统分析员,一些小公司可能会整个部门有一个技术经理。技术经理承担的角色主要是系统分析、架构搭建、系统构建、代码走查等工作,如果说项目经理是总统,那么技术经理就是总理。当然不是所有公司都是这样的,有些公司项目经理是不管技术团队的,只做需求、进度和同客户沟通,那么这个时候的项目经理就好像工厂里的跟单人员了,这种情况在外包公司比较多。对于技术经理来说,着重于技术方面,你需要知道某种功能用哪些技术合适,需要知道某项功能需要多长的开发时间等。同时,技术经理也应该承担提高团队整体技术水平的工作。

产品经理这个职位一般在有自己产品(不管是软件还是网站产品)的公司比较常见,产品经理主要会负责产品的设计、产品的改良等工作。需要注意的是,产品设计与设计师是两个不一样的工作,产品设计主要会从用户体验、业务需要等层面去设计产品,而设计师更多是从用户的视觉上去做。产品经理应该是最懂业务的人,比如说你在设计一个微博的产品,就要求你对微博这个东西非常熟悉,从用户习惯、用户体验、公司的发展战略上去设计这个产品,还要对比同类产品会有什么优势等等。

不管是项目经理还是技术经理与产品经理,都要求要熟悉业务,业务是需求的来源,没有不谈业务的技术,所以不管你从哪个方向发展,都要求对业务熟悉。产品经理要求对业务最熟悉,项目经理次之,技术经理排最后。对于程序员来说,刚开始工作的前几年可以埋头扎到技术里面,一般这个时间在2-3年的时间,然后就应该多关注业务了。这个业务不一定是指某个具体的业务,因为具体的业务的范围太少,而且也需要机遇。

我见过许多的程序员,他们是做Web开发的,但对互联网很不熟悉,对于互联网流行的趋势基本上不闻不问。不知道现在大家都在使用微博,也不知道SNS,也可能从不使用网银。我觉得这样很不好,程序员应该多多去关注互联网的发展,多多去玩一些新的网站。

 

 

 

程序员的未来在何处

程序员未来只有两条出路,这是中华软协大陆合作委员会副主委,中华软协共享平台协会会长,*讯光科技董事长,微软.NET开发平台专家与特约讲师,从事软件工程技术研究达20年之久的高志明的观点,有那两条呢?

 

简述如下:
“程序员转型的两个路线:朝向研发和知识专业化。”

高先生说:“朝向研发,可以做控件,架构师设计控件,程序员来进行实现。大家的目的要想把编程的代码减少,就要进行控件化。控件化的概念就是品质和生产力,一开始都是最差的,当你提升起来的时候,他将超过那些从第一行写到最后一行的“编程王子”。在经过一些项目之后,这个品质是纯代码所无法比拟的。”
高先生说:“程序员如果始终只知道编程,而不去深入理解客户的需求,那结果做出来的东西永远不能符合用户的要求。程序员应该多去了解产业知识,这样才能变得更有价值,形成第二专业知识加编程的能力结构。”
高先生说:“程序员在一定程度上也会被取代。今天的程序员是存在的,但是他们绝对不是用来写application的,未来将会由架构师来产生 Application。应用80/20法则,未来80%的工作将会由架构师来设计完成,程序员来完成剩下的20%工作。具体做什么呢?程序员主要来完成客户的一些个性化定制,比如软件外观颜色的选择,一些特殊的属性等等。所以程序员还是有存在的价值,但他的工作是比较简单的。”


    看到以上的说法感觉心头披上一层阴影,不过整体来说软件行业的前途还大好的。那就是看自己如何规划和去拼搏了。

程序员的未来在何处远不是一个人说了就算的。
下面也是收集的一些说法:
出路一:向IT培训师转型

分析:IT企业在招聘新人后,一般都须经过培训才能上岗,这个培训有时是在岗位上进行的,由富有实践经验的“老人”负责。年轻人想要进入IT行业,必须接受这样的专业培训。如今IT培训市场蛋糕相当大,利润空间可观,行业发展前景看好。根据国际数据公司(IDC)统计数据显示,2004年中国IT培训市场共实现销售额24.4亿元,相比2003年增长了22.1%,2005年市场前景发展更为可观。Smith无论是在IT公司内部转型担任培训工作,还是到 IT培训机构担任教师,都应该有发展空间。这样的工作不会有太大压力,且比较稳定,对年龄也没什么要求。更何况,这还没有脱离Smith所喜欢的IT行业。


优势:在这个行业工作了8年,拥有丰富编程、项目经验,曾参与过许多成功案例,这都是Smith的优势。而8年积攒的行业人脉关系,还可以帮助他发展企业客户,顺便担任市场拓展工作。


挑战:Smith在过去8年中一直埋头苦干,只是在公司培训新人时担任过培训工作,缺少培训工作经验。如果要向培训师转型,Smith需要接受一些专业训练,提高担任培训师的能力。

 

出路二:向IT营销转型


分析:IT与其它行业不同,由于技术性较强,营销人员一般也须有较强的技术背景,且最好有着丰富经验。互联网公司、


电子商务公司、软件公司目前都需要有技术背景的营销人员;另外,电子商务的再度火爆,使得传统企业开始重视电子商务营销,也需要有技术背景的营销人员。这类工作薪水不低,加上提成应该可以拿到高于程序员的薪水,同时也比较稳定。


优势:深厚的技术背景仍然是Smith的核心竞争力,在8年的从业经历中,Smith广泛涉猎了各种编程软件和工具,对IT行业也有相对深入的了解,这些都为他转向营销提供了平台。


挑战:Smith过去的工作主要是跟机器打交道,而营销工作恰恰需要跟人打交道,这对Smith来说是最大的挑战,要求他彻底改变工作方式,加强沟通能力与人际交往能力;此外,营销工作会面临销售指标的压力,这些问题都是Smith转型前必须深入考虑的。

 

 

出路三:向项目管理努力


分析:如果说前面两条出路转型的成分多,那么项目管理可以说是Smith更为便捷的发展之路。目前,软件项目经理是人才市场上炙手可热的人才,有丰富经验、外语好的软件项目经理是抢手的香饽饽,供不应求,薪水自然也是水涨船高。在上海市劳动部门新发布的2005年软件行业薪资调查中,项目主管的薪水是同层次主管中最高的,年薪高位数达到211011元,平均年薪达109414元。最重要的是,一个优秀的项目经理可以在这个岗位上长久工作下去,并且有向高层进一步提升的可能。


。。。。。。。。。。。。
从职位来看也不过下面一些了,不知道能算的上是出路么
初级程序员。当你做完一个项目的时候,你会了解这个项目的整个流程,此时可以在简历中填写中级程序员的角色,把很多中级程序员做的事情写到你的履历里(前提是你要了解这些),跳槽的时候,你的目标自然就是中级程序员,而招聘公司看到你的情况也会觉得合适。

中级程序员。你需要在项目中了解高级程序员的工作范围,并不要求你全部掌握,但需要你能表达出来,这个很重要。比如后台的设计模式、软件架构、接口设计等,把这些写到你的履历中,给自己定位成高级程序员,自然的,高级程序员的职位会找到你。

高级程序员。你所需要了解的就不仅仅是程序设计,而是整个项目的运作和管理流程。包括项目管理、系统架构(软硬件)、系统集成等,整个环节不一定都要会,但需要知道是什么,比如,什么是交换机,什么是硬件负载均衡设备,什么是反向代理,什么是缓存服务器,什么是WEB服务器,什么是集群、负载均衡、分布式、数据库优化、大数据存储、高并发访问等等,都是你需要了解的,面试的时候能表达出来,那么你就成功了。同样的把这些写到你的履历中,给自己定位架构师或项目经理,更新简历后,猎头会来找你。

系统架构师。既然选择了架构师的角色,那么肯定是向技术方向发展了。技术总监、研发总监甚至CTO就是你的目标。想知道技术总监、CTO都在做什么吗,看看丁磊在做什么,你就要去模仿去做。想成为一个角色人物,首先要从身体力行上模仿的像这个角色,时间长了那么你就是这样的人。技术总监需要负责整个公司的技术部运作,包括对人员的管理、绩效考核、各语言组之间的协调、各项目间的协调,各部门间的协调,除此之外,你还需要考虑所运营的项目如何发展的更好,网站如何才能更加优化,产品如何能更上一个层次,公司的技术发展如何规划,各种方案如何快速的编写和实施,如何与老板打交道等,都是你需要掌握的。

项目经理。在中国,项目经理分两种,
一种是TEAM LEADER的角色,需要很强的技术;
一种是负责招标、流程控制的偏商务角色,要懂技术。
发展到这个层次的,我想应该不用我来告诉他们出路在哪里了,这样的人一般都有自己的规划,但凡事都有例外,如果没有规划或发展迷茫的,TEAM LEADER角色可以重点把项目管理、人力资源、系统架构等环节再强化一下,紧跟当前发展形势学习新知识;偏商务角色的,可以考虑往总经理、CIO、 CEO等方向努力,到这个层次的,需要的不仅仅是知识,更多的是一种理念和个人魅力。

 

程序员的出路,其实并不难寻找,低中高各等级且听我来分析


从我做小程序员开始,就从未间断的在论坛看到有人在问程序员的出路在哪里,其实我很能理解这些人的想法,在行业做了几年,有些感想跟大家随便聊聊。

俗话说,365行,行行出状元,此话也适用于IT行业,尤其是程序员。

当你迷茫找不到出路,又想快速成长和提高的时候,有两种方案可以供你参考:
1、努力成为你工作环境中最优秀的人(技术最好的人);
2、跳槽,去另外一家公司做比你能力要高的工作。

针对工作环境的不同,分为大环境和小环境(人多和人少):
1、小环境,寻找技术最好的人,努力不断向他接近,当你通过努力觉得超过他的时候,我相信你就不会再来问“出路在哪里”的问题了。
2、大环境,人多优秀的人也多,想短时间超越所有人是有相当难度的,能与每个优秀人都交流的概率低,所以你可以选择跳槽。

跳槽,在我看来是程序员成功的必经之路。跳槽是有技巧的,同时也需要一定的运气,如果想跳槽就要果断。当你觉得不如意时,当你觉得没有出路时,当你觉得待遇不满意时,当你觉得成长不够快时。。。都可以考虑跳槽。

跳槽有利有弊,对企业来说,跳槽是不好的;对于打工者来说,跳槽是很完美的。企业培养一个程序员不容易,辛苦的带起来一个人,熟悉了业务,掌握了技术,这时候走人,损失最大的当然是企业,花时间培养人和熟悉业务也是需要成本的。对程序员来说,跳槽几乎是利大于弊,首先待遇上肯定立竿见影的体现,如果没体现出来那就是跳的失败,除非有其他想法和目标。

不要误会我的意图,跳槽对于技术人员来说并不是坏事:
1、一般的IT公司都有自己的常用的模式,该模式经过一个项目之后,就可以基本掌握,相关覆盖的知识、架构等大概也可以了解,此时可以换个环境寻找更高的发展;
2、跳槽相当于变向的升职,这个可以从你的简历中体现出来。

假如你是一个初级程序员。当你做完一个项目的时候,你会了解这个项目的整个流程,此时可以在简历中填写中级程序员的角色,把很多中级程序员做的事情写到你的履历里(前提是你要了解这些),跳槽的时候,你的目标自然就是中级程序员,而招聘公司看到你的情况也会觉得合适。

假如你是一个中级程序员。你需要在项目中了解高级程序员的工作范围,并不要求你全部掌握,但需要你能表达出来,这个很重要。比如后台的设计模式、软件架构、接口设计等,把这些写到你的履历中,给自己定位成高级程序员,自然的,高级程序员的职位会找到你。

假如你是一个高级程序员。你所需要了解的就不仅仅是程序设计,而是整个项目的运作和管理流程。包括项目管理、系统架构(软硬件)、系统集成等,整个环节不一定都要会,但需要知道是什么,比如,什么是交换机,什么是硬件负载均衡设备,什么是反向代理,什么是缓存服务器,什么是WEB服务器,什么是集群、负载均衡、分布式、数据库优化、大数据存储、高并发访问等等,都是你需要了解的,面试的时候能表达出来,那么你就成功了。同样的把这些写到你的履历中,给自己定位架构师或项目经理,更新简历后,猎头会来找你。

假如你是系统架构师。既然选择了架构师的角色,那么肯定是向技术方向发展了。技术总监、研发总监甚至CTO就是你的目标。想知道技术总监、CTO都在做什么吗,看看丁磊在做什么,你就要去模仿去做。想成为一个角色人物,首先要从身体力行上模仿的像这个角色,时间长了那么你就是这样的人。技术总监需要负责整个公司的技术部运作,包括对人员的管理、绩效考核、各语言组之间的协调、各项目间的协调,各部门间的协调,除此之外,你还需要考虑所运营的项目如何发展的更好,网站如何才能更加优化,产品如何能更上一个层次,公司的技术发展如何规划,各种方案如何快速的编写和实施,如何与老板打交道等,都是你需要掌握的。

假如你是项目经理。在中国,项目经理分两种,一种是TEAM LEADER的角色,需要很强的技术;一种是负责招标、流程控制的偏商务角色,要懂技术。发展到这个层次的,我想应该不用我来告诉他们出路在哪里了,这样的人一般都有自己的规划,但凡事都有例外,如果没有规划或发展迷茫的,TEAM LEADER角色可以重点把项目管理、人力资源、系统架构等环节再强化一下,紧跟当前发展形势学习新知识;偏商务角色的,可以考虑往总经理、CIO、CEO等方向努力,到这个层次的,需要的不仅仅是知识,更多的是一种理念和个人魅力。

大概聊了聊上述这些,我想每个层次的人可以大概了解自己该做什么了。一定要有计划、有目标高效的做事情,有效的管理分配好自己的时间,只有这样你才可以成为一个优秀的人才。不要总让别人告诉你该做什么,而是自己不断推动手里的任务去更好的完成,处处体现出“我做的东西就比别人做的好”的信念,那我想,成功离你就不远了。

 

 

最近看了很多关于《程序员职业规划》,《再谈国内程序员做不到三十五岁!》之类的文章,发现还是有很多人对于“程序员发展方向”感到迷茫。

据我目前了解的情况来看,大致可以分为四类:

1.技术+技术(深入阶段)

 这算是一条纯技术路线,具体又可以分3个方向:

 技术(2年以上编程经验)+技术(软件测试,或系统分析师,或系统架构师)

 有软件开发的工作经验,再加软件测试,比刚开始就进入软件测试行业的人要更具竞争优势。软件测试工作经验越多越好,可以干到退休,不用担心年龄问题

如果选择“系统分析师,系统架构师”,则首先要打好扎实的“理论基础”(可以通过考证书,比如参加软考),以保证自己“后劲力十足”,这样等有了4,5年的工作经验后,才有可能能冲上这个高端领域。平时工作中要不断的锻炼自己的“发散思维”,培养善于发现业务需求的“眼光”。

2.技术+管理 :比如 项目经理。

 像雷军说的那样:“程序员象木工一样,熟能生巧。程序员必须写足够代码量(8万行以上)的程序,才会有感觉,这是一个苦力活,没有任何捷径可走。”项目经理大多是从“优秀”的程序员里挑选出来,想走这条路,平时就要疯狂的编码,迅速累积丰富的编程经验,然后再补充一些管理方面的知识。(本人打算走这条路,呵呵)

3.技术+销售:比如 技术销售工程师,技术支持工程师。

这类工作要有一定的技术背景(入门级也可以),具备较好的语言表达,沟通能力。工作比较轻松,月薪待遇主要看个人销售业绩等,个人收入差别可能比较大。

4.当培训老师

如果你“乐于分享”工作经验,传授知识,或者觉得自己年龄比较大,精力不够充沛,且往上升又比较困难的话,可以选择去培训机构当老师,就目前而言,当老师工作轻松,待遇也不错。

5.创业

程序员创业除了需要有商业头脑外,更需要具有较高的“胆商”(人有5商,包括智商情商),即有没有胆量去做别人不敢做的事情(抓住商机)。