1.做什么
2.怎么做
1.做什么
通常,软件技术人员的职业发展有几个选择:专注于技术,成为技术专家;转型到技术型销售、技术支持等;随着技术成长,从技术性管理到高级管理。这是大家都看得清楚的方向,也都在向这些方向的金字塔尖努力。
归根结底,都是以技术为基础。在扎实的技术基础上(高级软件工程师),如果有着比较强的抽象设计能力,又打算专注于技术开发,架构师是个好的选择;如果性格更适合做管理,情商能力突出,技术型管理应该是下一步的方向。这种发展规划属于‘瘸腿走路’的类型,各有侧重主攻发展的职业方向,也是目前一般程序员普遍采用的发展路线规划。
决胜点在于长期的点滴积累,认证证书、成绩、丰富的经历是求职的表面文章,在目前软件行业里不是很看中这个,真正的‘内功’是需要规划的。至于培训,我倒是很建议直接加入软件公司,你就会学到很多实际的东西。不过,学历教育虽然在职业生涯里不是主要的,但是随着职位的提升却有很重要的意义,能辅助拓展你的职业发展空间,而不是以此为阻碍从而失去更多的机会。
已经工作两年以上的程序员可以有几种基本的职业规划:技术专家、软件架构师、实施顾问或销售。其中程序员最主要的发展方向是资深技术专家,无论是Java、.NET还是数据库领域,都要首先成为专家,然后才可能继续发展为架构师。尽管 架构师的职位可以工作一辈子,待遇也非常好,对于科班出身的程序员最为适合,但这种工作职位非常有限,因为在中国目前的IT行业,架构师需要的条件比较复杂,而且需求量也比较少,这也是我国软件行业走向国际并有待成熟的因素之一。
我听说目 前国内缺乏的是管理能力和专业知识技能并驾齐驱的IT人才。是不是指着这种复合型人才?
是的,特别是懂得运用目标管理技术的项目管理人才,既掌握核心技术又有全局掌控能 力的项目管理人才,非常难找。我建议对于大多数人来说,首先是要专,只有在技术方向上做得比较深入,才能适当做工作调整,把自己转变为某个领域的专家。
然后,根据自己的情况,决定自己做软件架构师还是高级的顾问销售,另外一部分人可能就会走向管理,这和个人性格与情商有关。软件优秀的管理者都必须懂得技术,掌握核心技能的人才向管理岗位转型有很大的优势,因而提升管理能力成了转型的 关键。譬如,当唐骏还是微软一名普通程序员时,就从公司发展的角度考虑,向老板提议开发了中文版Windows,最终使他从几万名工程师中脱颖而出,成为部门经理。正如他所说,虽然是程序员,但自己不能只把自己当程序员,你可以为老板和公司着想。
调查研究后,带着解决方案去找老板,就会得到老板的重视和信任,所以一定要增强工作主动性和参与性。无论是软件开发还是项目管理,国内员工大多只是做好份内事或完成交派任务,很少能主动发现问题。其实,只有拥有更高眼界,才能谋取大发展。
在未来发展上首先确定自己的发展方向和研究方向,在学习技术的同时还要为以后做准备,做好以后的技术转型。广度和深度是相对的,先广还是先深实质上从某种意义来说取决你的工作性质,如果你是从事单一工作的,多半你会短暂先深,因为这是你立足的根本;而如果你选择的职业是综合性的,比如管理、讲师等,那么你必然要先有广度才可以,但一段时间后,你都要转入深度,只有你在某一方面或领域有一定的深度后,你才能继续寻求广度,否则,你将什么都会,但什么都不精,这样的人在市场上是最难以立足的。
随着国际化相互联系 越来越紧密,那么国际化人才可以说是当前更为便捷的程序员职业规划发展之路。目前,国际化软件项目经理是人才市场上炙手可热的人才,有丰富经验、外语口语好的软件项目经理是抢手的香饽饽,供不应求,薪水自然也是水涨船高。最重要的是,一个优秀的项目经理可以在这个岗位上长久工作下去,并且有向高层进一步提升的可能。外语好、技术又好的程序员发展路线很广,是目前国内外软件企业需要的热点人才。
要想正确地选择,你得必须充分地了解、分析自己,你要学会SWOT职业规划自我分析法
Bett 建议
如果你想培训架构师,那么:
发展团队中的好苗子
给他们安排一些设计工作
鼓励互相交流
让整个团队都考虑设计问题
鼓励设计方面的培训
如果你想成为架构师,那么:
找一位资深的架构师做导师
寻找可以设计的项目,甚至可以是自己的项目
参加正式培训并多交流
Bett 特别强调,只有亲自参与设计,才会真正了解应该如何设计。起初有很多想法,但是开始设计了,才发现很多都是不切实际的。通过课程或者书籍来培训自己是必要的一步。
总结与提升
成功与失败的区别在于,成功者选择了正确而失败者选择了错误。因此,我们常常能够看到一些天赋相差无几的人,由于选择了不同的方向,人生却迥然相异。选择正确的方向尤为重要,希望不同的程序员根据自己不同的优势和特点能画出适合自己的程序员职业规划图。
软件开发也是有层次区别的,比如,按层次从高到低通常可分为:
系统开发:如操作系统、数据库系统、服务器系统开发;
专业开发:如网络安全、游戏、人工智能开发;
应用开发:如MIS、BI、ERP等系统开发;
普通开发:如网站、简单应用系统开发。
不同的层次,难度系数不一样,对技术要求、个人素质要求也不一样。要成为系统开发者、专业开发者、高级应用开发者,需要有很高的专业知识和很强的逻辑、抽象、空间思维能力,这就要求具有很好的基础,同时具有较大的提升潜力。而要成为简单开发者和初级应用开发者则相对容易些,正是这样,才使很多人走上了软件开发的道路。
2.怎么做
一:
SWOT职业规划自我分析法
二:
选择方向
三:
看书(列书单按指标完成 要写笔记和更新技术博客)
四:
实践多做项目(包括工作中的和外包网的和自己设计的)
五:
考认证
六:
深造学习(考研读博)