三到五年Java⼯作经验的程序员未来该如何发展
在中国有很多⼈都认为IT⾏为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样⼦的,在下从事.NET及JAVA⽅⾯的开发的也有8年的时间了,在这⾥在下想凭借⾃⼰的亲⾝经历,与⼤家⼀起探讨⼀下。
写在前⾯:
⼤家本时⼯作忙,应该没有太多的时间整理体系的学习资料,⼩编趁着在准备⾯试的⼀段时间,收集整理⼀套最新的BAT⾯试真题,以及Java核⼼知识点笔记,Java架构进阶视频,需要免费资料的朋友,关注:Java程序员聚集地 即可获取免费的架构资料。
明确⼊⾏的⽬的
很多⼈⼲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%。但中国是世界上⼈⼝最多的国家,国内⼈才众多,所以⼈才滥⽤的情况经常可以看到。⼀个⼩公司的开发部⾥⾯经常会见到新⾯孔,但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.⾃⽴门户,勇敢创业
0岁了,很多⼈会认为要想真正赚得了钱,就应该⾃⽴门户,为⾃⼰创业建⽴⼀个基础。像北京、上海、⼴州这些⼀级城市,要买房⼦,⼀⼿楼基本要在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询问项⽬的进度,所以只有晋升到这个层次,才有机会进⼀步提升管理能⼒,让⾃⼰有上升的空间。置于要成为⼀个技术总监,那要求就不再单单是对单个项⽬的管理,⽽应该更则重于新兴技术的引⽤,开发资源的合理利⽤,对开发项⽬敏捷性的处理等等,对此在下也在试探当中,未敢多⾔。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论