首先你要明确入行的目的,你是深深的热爱着编程还是只是因为程序员是个高薪的职业呢?如果是后者,那么不好意思,你需要慎重的选择。
在中国,程序员并不是一个很好地称呼。程序员似乎象征着邋遢,宅,甚至是IT民工。记得有一期非诚勿扰上面,上去一个男嘉宾,开场说他是搞JAVA的,台上女嘉宾的灯全灭了。是不是很可笑,很可悲?而且只有你真正的进入这个行业你才清楚,这个看上去还不错的薪水,你却付出了超过薪水价值的代价。创业型与游戏型公司里面的项目小组一般是5~10个人,因为他们需要快速的开发以应对多变的市场波动,所以程序猿的每天工作时长都在12小时以上,身体和精神收到摧残不说。作为程序猿的你很少有时间去陪陪自己的家人、自己的女友。
如果作为前者,你是因为深深的热爱着编程,那么恭喜你,你有着一颗hacker的心,属于那些愿意做一些有挑战性的事情的人。就如WhyTheLuckyStiff所说:当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题。
当你开始编程,开始创造的时候,开始享受的时候,一切外界的评论,都挡不住你对技术对创造的热爱。但是,我不得已要泼你一盆冷水,来提醒你一下。你是否准备好了忍受寂寞,也许你面对的是十年寒窗无人问,若你没有熬住,也许就等不到一朝成名天下知的时刻。技术是永无止境的,好的程序员必须保持对于新的技术敏感度,保持学习的热情。Stay hungry ,Stay Foolish。
明确了目的,那么你应该规划下自己的职业生涯。
宏观的讲,个人认为我们需要经历三个阶段:深度、广度、高度。
高度:这个层面往往体现在规划能力,能够看到未来业务的发展,设计出相对合理的架构满足未来业务的快速扩展。这个阶段应该是少参与到具体的编码中去,应该是一个公司的CTO或者首席架构师角色。这个方面的能力比较虚,相对来说也是最难炼成的。
广度:就是知识领域的广度。反映在IT技能上,就是所掌握的领域,比如.net,java,数据库,web,前端等等。不一定每个领域都能够精通,但是至少都能了解,能够在面对问题的时候能够拿出一个切实可行的解决方案。对于跨领域方面,可能是你的沟通能力,管理能力等。
深度:在某一领域有很深入的了解,旺旺是一门具体的技术。比如js代码写的很精通,数据库知识非常丰富,精通linux操作系统底层。
深度-广度-高度,越往上,要求的抽象能力越高,越往下,要求细节知识越具体。一个人往往具备了以上三样,就是一个成功的大牛。
微观的讲,.已经工作两年以上的程序员可以有几种基本的职业规划:技术专家、软件架构师、实施顾问或销售。对大多数人来说,首先是要专,在技术上做的比较深入,然后进行工作调整,把自己转变为某个领域的专家,第三步,根据自己的情况,来选择技术还是管理。
有了自己的规划,最重要的是执行。我认为很多漂亮的计划都会因为执行力不够而夭折。一个一流的计划经过二流的执行,甚至不如三流。而一个三流的计划,经过一流的执行,也许就能达到二流。所以从计划本身来说,执行往往更重要些。
如果你要走技术路线,那么就深入某一领域,培养程序员以下几个基本素质。
1.团队精神和协作能力;
2.良好的文档习惯;
3.规范化、标准化的代码编写习惯;
4.需求理解能力;
5.复用性、模块化的思维能力;
6.测试习惯;
7.学习和总结能力。
如果你要走管理路线,那么你首先需要向一个pM的目标前进,然后成为总监乃至CTO。我这里讲讲要成为一个pM需要哪些能力。
先看看下面的招聘启事吧,这只不过是一家几十人公司的一个招聘广告:
招聘职位1:软件项目经理
职位描述:
1、带领实施团队完成某软件项目;
2、制定项目计划和实施部署;项目进度、质量及范围管理与控制。
3、负责软件实施过程中与各方的沟通、关系协调与维护;以及实施人员的安排与管理
4、负责了解客户对软件的业务需求及意见,及时反馈、跟踪开发人员解决问题。
5、及时、有效协调资料解决项目实施过程中出现的疑难问题;
职位要求:
1、具备优秀的团队协作精神,良好的沟通能力,有较强的口头/书面表达能力;
2、熟悉企业信息化业务,百万企业信息化项目经验;
3、精通数据库系统和项目管理工具;
4、熟悉XYZ行业相关业务知识;有财务背景知识,快速理解和学习能力;
5、良好的客户服务意识,负责、敬业、细心。
6、有软件大项目管理经验或N年以上项目管理经历优先;
那么,让我们看一下这个招聘启事对软件项目经理能力的描述吧:
团队协作精神 高
沟通能力 高
口头表达能力 高
书面表达能力 高
IT技术 高
XYZ行业知识 高
理解和学习能力 高
服务意识 高
项目经验 高
我们概括一下,是不是差不多就5类:沟通(口头表达能力,书面表达能力,沟通能力,服务意识)、管理(团队协作精神)、技术(IT技术)、成本控制、行业(XYZ行业知识)。理解和学习能力是很综合的,无论是在学习过程还是生活中都能体现。最后一点,项目经验,这东西是学不来的,只有踏踏实实跟着团队做几个项目才能积累起来的。
如果你想成为一个项目经理,那么首先就要把自己定位成一个项目经理,拿项目经理的水准来严格要求自己。比如沟通,平时应该多锻炼和他的的沟通能力,不一定非要在项目中和客户沟通。还有如果没有技术,那么谁都不会信服你的。
从技术和非技术的角度来向项目经理看齐。
技术
1.有着一定的技术广度。首先你需要对现在有的技术有一定的了解。我认为,好的pM不一定是团队中技术最强的,但是一定能知道这些技术能拿来干什么。如果你不懂JAVA,你一定不知道你手下有没有偷懒,明明一个礼拜就可以完成的事情,他两个礼拜都没有搞定,导致你的计划全乱掉了。
其次你需要对新兴的技术有所了解 。IT行业每时每刻都会涌现出很多新兴的技术,谁也不知道某一项技术的出现会不会能改变IT发展的趋势。就如java语言刚出现的时候,谁也不会知道它会那么流行。
2.有着一定的技术深度。深入了解一门技术。这门技术是你的敲门砖,是你打开pM大门必须的钥匙。在网上那些当上项目经理,在IT行业走的很远的人都会对我们说,作为一个pM,技术不是最重要的,重要的是那些非技术的东西。可作为一个科班出生的程序员,我真的无法透过那层雾来看他们描述的pM的世界。直到后来,我和一个当过项目经理的老师谈话才明白。技术,其实是个敲门砖,当敲开这扇们之前,他还是挺重要的。可是当敲开后,那些非技术的东西才是pM的精髓。
3.了解技术发展的历史。个人认为技术发展有一种趋势,当我们能通过过去和现在之间的联系,推算未来技术发展的潮流。
非技术
作为一个pM,你的最终目的是:替老板赚钱。别说我庸俗,也许以后你成为首席技术总监以后你有资格谈技术本身,不然老板是你的衣食父母,你必须替他想。围绕着这个目的我们通过技术知道,达到技术设计最优化;通过管理团队,达到团队产出最大化;通过成本控制,达到经济效益最大化;通过和用户沟通交流,达到用户满意最大化。这一切一切概括的说就是你领导一个团队,使用一些掌握的技术,作出一个项目,使得客户满意,然后老板开心。老板一开心,也许你就升职加薪,那么你就开心了。
所以,pM要学习的非技术的东西很多,大致分为以下几个方面:
1.产品市场
2.产品设计
3.团队管理
其中里面又有很多相关的内容,比如拥有好的人脉也是很重要的。比如学习如何培养自己的创新思维等等。你需要学习营销和推广,需要了解消费心理学、行为心理学等等。
我无法告诉你具体该怎么学习,因为我自己也没有达到那个高度。以上这些内容也是借鉴一些行业的前辈的指导,以及自己的一些独特体会,所以难免见解有些狭隘。但是如果文中的某一点能给你一些启发,那么也不枉我写了那么多了。
程序工作二三年后,基本上都会考虑自己以后怎么发展。发展的路径不外乎程序员-系统分析员-架构师-技术经理-CTO,程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO.哪一条发展的路线更加适合你?
程序员职业生涯发展到一定程度都会面临一个选择,是走业务+技术方向,还是选择纯钻研技术。程序员职业生涯 发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员。
绝大多数程序员最终的职业目标可能都是CTO,做到CEO的人估计会比较少,也有一少部分人自己去创业创业去当老板,也有部分人说我转行去做业务 了,对于当老板的人毕竟是少数,对于转行的人来说,都不在这行做了,自然没什么好说的了。一般来说,程序员的发展基本上都会经历这么几条路径。程序员-系 统分析员-架构师-技术经理-CTO,程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO.
当然这只是一个大致的路径,不是所有程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了。而最终做到 CTO的程序员,也是非常少的一部分,原因很简单,这个世界上不许要那么多的CTO和CXO.
也就是说,许多的程序员最终可能是做技术经理、项目经理或者项目总监之类的,那么到底我们职业生涯要选择哪一种呢?我觉得这个问题没有一个统一的答 案,因为每个人的性格不一样,际遇也不一样,就像你从小希望当贪官,可是命运却偏偏让你做了一个程序员。所以应该根据你的兴趣、性格与际遇选择一条道路, 比如说你正好有机会带一个项目,而你又不是很讨厌项目经理这个位置,那么你就可以选择向项目经理方向发展。
实际上很多时候,国内并没有明确的技术经理、项目经理、产品经理之分,在许多的公司里,他们经常是由一个人承担。在外包公司里,通常会有项目经理和 系统分析员(也可能是技术经理)。在一些非IT公司里,可能会有部门经理,而做自己产品的公司可能会分得比较详细一些。我大致说一下这三个职位的区别,让 正在徘徊的程序员有一个大致的了解。
项目经理是项目的直接负责人,这个角色相当于一个中间接口,不管是团队成员还是需求方(客户),或者是上级领导,有事都直接找他,所以这个职位着重 于管理与沟通。一般来说,项目经理的工作重点在同客户沟通需求、项目进度的把控、团队的沟通方面,有些公司也会需要项目经理承担团队建设的工作,不过貌似 很多国内公司都忽略了团队建设这个工作了。对于项目经理来说,重点会要求沟通能力、协调能力、危机把控能力、执行力、团队管理能力,着重于沟通、管理与计 划。当然也有些公司还要求项目经历要参与招标谈判,这就要求项目经理有一定的商务谈判能力。
技术经理有时候也可能叫系统分析员,一些小公司可能会整个公司或者部门有一个技术经理。技术经理承担的角色主要是系统分析、架构搭建、系统构建、代 码走查等工作,如果说项目经理是总统,那么技术经理就是总理。当然不是所有公司都是这样的,有些公司项目经理是不管技术团队的,只做需求、进度和同客户沟 通,那么这个时候的项目经理就好像工厂里的跟单人员了,这种情况在外包公司比较多。对于技术经理来说,着重于技术方面,你需要知道某种功能用哪些技术合 适,需要知道某项功能需要多长的开发时间等。同时,技术经理也应该承担提高团队整体技术水平的工作。
产品经理这个职位一般在有自己产品(不管是软件还是网站产品)的公司比较常见,产品经理主要会负责产品的设计、产品的改良等工作。需要注意的是,产 品设计与设计师是两个不一样的工作,产品设计主要会从用户体验、业务需要等层面去设计产品,而设计师更多是从用户的视觉上去做。产品经理应该是最懂业务的 人,比如说你在设计一个微博的产品,就要求你对微博这个东西非常熟悉,从用户习惯、用户体验、公司的发展战略上去设计这个产品,还要对比同类产品会有什么 优势等等。
不管是项目经理还是技术经理与产品经理,都要求要熟悉业务,业务是需求的来源,没有不谈业务的技术,所以不管你从哪个方向发展,都要求对业务熟悉。 产品经理要求对业务最熟悉,项目经理次之,技术经理排最后。对于程序员来说,刚开始工作的前几年可以埋头扎到技术里面,一般这个时间在2-3年的时间,然 后就应该多关注业务了。这个业务不一定是指某个具体的业务,因为具体的业务的范围太少,而且也需要机遇。
我见过许多的程序员,他们是做Web开发的,但对互联网很不熟悉,对于互联网流行的趋势基本上不闻不问。不知道现在大家都在使用微博,也不知道SNS,也 可能从不使用网银。我觉得这样很不好,程序员应该多多去关注互联网的发展,多多去玩一些新的网站。
(一)java程序员职业规划步骤
java程序员职业规划第一步:
1、基础必备:至少看过2本语言基础书和一本领域技术书。
2、部分参与项目1-2个。
所需时间:3-12个月
java程序员职业规划第二步:
1、行业知识领悟、扩展相关应用知识。
2、完整参与项目1-2个。
3、可以指导新人完成工作。
所需时间:6-12个月
java程序员职业规划第三步:
1、深刻理解面对对象知识。熟悉常用架构,对公司采用的架构能提出改善意见。
2、参与需求讨论并能提出简化方案。
3、能为决策提出一些建议。
java程序员职业规划第四步:
1、能够对整体需求方案做出精确描述。
2、运用一种架构对项目、产品进行设计。
3、评估项目风险、以及预留方案。
4、实现核心组件、技术难关。
5、行业技术指导。
(二)java程序员职业规划要点
(1)只会编程是不够的
仔细思考在哪个商业领域投入时间。软件工程师(软件工程培训 )不能只会开发软件,应该要成为这个业务领域的专家。你的行业经历应该成为你的重要才能。有机会多与公司行业内人士接触,选择一本与你公司行业有关的杂志,找一个行业网站。只有了解了一个行业后,你才能创造性地有所建树。学习行业是如何运转的,了解一些财务基本知识。
(2)在思维上投资
要学会抓住机遇。
多学习新的技术,编程语言,可以改变你的思维方式。
(3)做一名通才
你的技术水平应该超越技术平台。
经常学习一些新技术。
(4)成为一名专家
不仅应该会处理高端抽象,同时也应该了解实现高端抽象的低端细节。
(5)切忌孤注一掷
不要把自己的职业发展完全依赖于一家技术公司。
(6)寻找良师
可以依赖别人,但要确保这个人是靠得住的。良师的首要任务是榜样作用,还可以将你的学习过程形成体系,也是值得信任的朋友,可以帮助你作出职业导向,帮助你磨练技术。
(7)安分守己
要有雄心,但不必路人皆知。专注于现在的工作,不仅让你更加快乐,也会让你身边的人更加快乐。你的同事,上司和客户都能感觉到。你的工作成绩会反映出你的态度。放弃你想要成功的期望可以提高你的能力,让你走向成功。不要关注结果,要关注做事的过程。
(8)每天都有进步
如果在改善自己的道路上,每一天都比昨天多作出一点改变,就会发现-拥有卓越的职业生涯,越来越容易达成,而不再像汪洋大海一样没有边际。
越多的人加入程序员这个行业,程序员已经不是以前人们向往的白领职业了,要想在这个行业有所发展,至少在中国,想有所成就,就应该有一技之长,对某一领域有所精通。
随着计算机行业的不断发展和分支学科的不断出现,很难像以前再出现一个对计算机各个领域都很精通的人了,所以,对某一方向有所精通很重要。很多人夸夸其谈,乍一听对于计算机各个方面都知道,但仔细一问他就说不出什么了。
随着软件流水线般的进行生产,程序员(我是指之会写程序的人)越来越成为工厂里面流水线上的操作工人,依靠越来越强大和方便的开发工具和越来越容易上手的开发语言。这些人拼得是自己的经历和体力,他们是软件开发的最底层人员,即使干的好也不过是熟练的操作技工而已,因为他们只会使用别人开发出来的工具,自己甚至只知道怎么用,而不知道为什么和具体实现。造成这种情况的主要原因是开发工具的自动化和教育上的失误,特别是一些短期的软件培训机构,他们只教会了学生如何使用.Net或者Eclipse这样的容易上手的开发工具,最多再学习一下语言,有些人甚至连语言和开发工具都分不清楚(例如C++和VC++)这些都是软件行业迅速发展所造成的一些不良的影响和某些人急于求成的心理。很多人的基础不扎实就去写程序,它们对多线程,语言的底层实现和算法都不了解,这样,很难写出结构良好,效率高的程序。
所以,总结我以往写程序的经验和教训,我觉得:
1。打好基础,学好本质的东西,分清什么是科学,什么是技术,什么是应用。最上层的东西是会经常变化的,不要把时间大都花在那上面。
2。精通而不是什么都知道,却什么也不熟悉。后者是大忽悠。前者在有可能从程序员过渡到技术主管或者研发核心人员。
3。不要总用别人的东西,要有自己的成果。
4。学计算机不要急,慢慢来,一步一步,不要追求新技术名词,一位会几个新名词就来不得了,高手对底层都很熟悉的。不要浮躁。
5。要理论联系实际,学到的理论要知道有什么应用和怎么实现,到动手编程。
6。要有毅力,真正的工作很枯燥,但如果你投入进去就会很有趣。要珍惜每一分每一秒。
本文主要介绍java程序员的职业规划 ,希望能给想在java程序发展,还没有职业规划的朋友一些启发。
(一)java程序员职业规划步骤
java程序员职业规划第一步:
1、基础必备:至少看过2本语言基础书和一本领域技术书。
2、部分参与项目1-2个。
所需时间:3-12个月
java程序员职业规划第二步:
1、行业知识领悟、扩展相关应用知识。
2、完整参与项目1-2个。
3、可以指导新人完成工作。
所需时间:6-12个月
java程序员职业规划第三步:
1、深刻理解面对对象知识。熟悉常用架构,对公司采用的架构能提出改善意见。
2、参与需求讨论并能提出简化方案。
3、能为决策提出一些建议。
java程序员职业规划第四步:
1、能够对整体需求方案做出精确描述。
2、运用一种架构对项目、产品进行设计。
3、评估项目风险、以及预留方案。
4、实现核心组件、技术难关。
5、行业技术指导。
(二)java程序员职业规划要点
(1)只会编程是不够的
仔细思考在哪个商业领域投入时间。软件工程师(软件工程培训 )不能只会开发软件,应该要成为这个业务领域的专家。你的行业经历应该成为你的重要才能。有机会多与公司行业内人士接触,选择一本与你公司行业有关的杂志,找一个行业网站。只有了解了一个行业后,你才能创造性地有所建树。学习行业是如何运转的,了解一些财务基本知识。
(2)在思维上投资
要学会抓住机遇。
多学习新的技术,编程语言,可以改变你的思维方式。
(3)做一名通才
你的技术水平应该超越技术平台。
经常学习一些新技术。
(4)成为一名专家
不仅应该会处理高端抽象,同时也应该了解实现高端抽象的低端细节。
(5)切忌孤注一掷
不要把自己的职业发展完全依赖于一家技术公司。
(6)寻找良师
可以依赖别人,但要确保这个人是靠得住的。良师的首要任务是榜样作用,还可以将你的学习过程形成体系,也是值得信任的朋友,可以帮助你作出职业导向,帮助你磨练技术。
(7)安分守己
要有雄心,但不必路人皆知。专注于现在的工作,不仅让你更加快乐,也会让你身边的人更加快乐。你的同事,上司和客户都能感觉到。你的工作成绩会反映出你的态度。放弃你想要成功的期望可以提高你的能力,让你走向成功。不要关注结果,要关注做事的过程。
(8)每天都有进步
如果在改善自己的道路上,每一天都比昨天多作出一点改变,就会发现-拥有卓越的职业生涯,越来越容易达成,而不再像汪洋大海一样没有边际。
展开全文
相关推荐范文