您的位置:首页 > 职场人生

程序员的职业规划

2011-05-02 18:44 267 查看
一般程序员有这么几条职业规划:

1、技术路线,要求能力强智商高,把握公司核心技术和公司的技术发展。
初级程序员,中级,高级,系统架构师,技术部经理、技术总监。总经理

2、业务路线,要求知识面广,懂得大部分技术,并知道该怎么做,不一定会做,表达能力好,协调能力好,对某一个行业的业务精通。
初级程序员,中级,高级,系统分析员,项目经理、产品经理、研发总监,总经理

3、实施路线。
初级程序员,中级,高级,系统分析员,项目经理、实施经理,实施总监

4、销售路线
初级程序员,中级,高级,系统分析员,项目经理、实施经理,产品经理,售前顾问,销售经理

系统架构师应具备的能力

首先必须具有丰富的开发经验,是个技术主管。因为他必须清楚什么是可以实现的,实现的方式有哪些,相应的难度怎么样,实现出来的系统面对需求变化的适应性等一系列指标。另外,需要对面向过程、面向对象、面向服务等设计理念有深刻的理解,可以快速的察觉出实现中的问题并提出相应的改进(重构)方案(也就是通常说的反模式)。这些都需要长期的开发实践才能真正的体会到,单从书本上很难领会到,就算当时理解了也不一定能融会到实践中去。
在技术层面上,软件架构师最重要也是最需要掌握的知识是构件通信机制方面的知识,包括进程内通信(对象访问、函数调用、数据交换、线程同步等)以及进程外(包括跨计算机)的通信(如RMI、DCOM、Web Service)。在WEB应用大行其道的今天,资源的共享和整合已经成为今后信息技术发展的一个重要方向。进程外跨机器通信是构建分布式应用的基石,它是架构设计中的鸟瞰视图;而进程内的通信是模块实现的骨架,它是基石的基石。只有熟练掌握服务器内通信和跨服务器间通信机制的应用,才能让我们的产品富有竞争力。

其次,具有足够的行业业务知识和商业头脑也是很重要的。行业业务知识的足够把握可以给架构师更多的拥抱变化的能力,可以在系统设计的时候留出一些展的余地来适应可能来临的需求变化。有经验的设计人员可能都碰到过这样的事,一厢情愿的保留接口在需求变化中的命中率非常低。也就是说,在系统设计之初为扩展性留下来的系统接口没能在需求变化的洪流中发挥真正的作用,因为需求的变化并没有按照预想的方向进行,到最后还是不得不为变化的业务重新设计系统。这就是因为对业务知识的理解和对市场或者商业的判断没有达到一个实用的、可以为架构扩展性服务的水平。

再次,架构设计师对人的关注必须提升到架构设计之初来纳入考虑的范围,包括沟通以及对人员素质的判断。软件过程是团队协作共同构建系统的过程,沟通能力是将整个过程中多条开发线粘合在一起的胶水。大家都应该碰到过事后说“原来是这样啊,我不知道啊”或者某个开发人员突然高声呼喊“为什么这里的数据没有了”之类的。沟通的目的就是尽量避免多条开发线的混乱,让系统构建过程可以有条理的高效进行。另外,对人的关注还表现在对团队成员的素质判断上,比如哪些开发人员对哪些技术更熟悉,或者哪些开发人员容易拖进度等。只有合理的使用人力资源,让合适的人做合适的事情才能让整个软件过程更加高效。
另外,架构师应时刻注意新软件设计和开发方面的发展情况,并不断探索更有效的新方法、开发语言、设计模式和开发平台不断很快地升级,软件架构师需要吸收这些新技术新知识,并将它们用于软件系统开发工作中。但对新技术的探索应该在一个理性的范围内进行,不能盲目的跟风。解决方案提供商永远都希望你能使用它提供的最新技术,而且它们在推广自己的解决方案的时候往往是以自己的产品为中心,容易给人错觉。比如数据库,往往让人觉得它什么都能做,只要有了它其它什么都不重要了。但事实上并不是如此,对于小型应用可以将许多业务逻辑用script的方式放入数据库中,但很少看到大型应用采用这样的做法。对于新东西需要以一种比较的观点来判断,包括横向的比较和纵向的比较,最后得出一些性能、可移植性以及可升级等指标。另外,新入行的开发人员往往关心新技术动向而忽略了技术的历史,而从DOS时代一路杀过来的开发者就对现在的技术体系有较全面的把握。

系统分析员应具备的能力

  1.必须理解和明确系统建议、建设单位的经营管理目标及战略发展方向。

  2.要能与组织管理高层一起涉及确定信息系统建设的长期目标,并进行必要的分解。

  3.要在详细调查的基础上,正确判断组织内部现状和外部条件,进行可行性分析。

  4.能够根据现实条件确定组织信息系统开发策略。

  5.应具备选择适宜方法和工具并培训开发人员的能力。

  6.善于沟通,妥善协调决策者、开发人员与业务人员的观点,达成共识。

  7.了解信息技术发展,并能建立适合业务需求的技术模型。

  8.具备一定的行政管理能力,能够恰当调度人、财、物等要素,完成开发目标

工作职责

1.学会对客户的沟通:要正确理解客户的需求同时要保证相互之间的沟通顺畅。

  2.对了解来的需求要能用笔正确的描述下来,并能很好的传叙给其他人。这时要学会用如ROSE 等的软件建模的工具。和powerdesign等的数据库建模工具。和相关的UML,数据流程图及相关的内容的知识。

  3.不但要全面的了解客户的需求而且还要对需求进行未来的可能的改变要有相当多的了解。

  4.全面的了解客户的需求后,要选择合适的相关技术用于开发,:

  这时要学习各种知识

  a. 先择数据库:db2,infomix ,oracle ,sql server,mysql 的优缺点,可以从中选择最适合的数据库及理由。

  b. 设计数据库:要扎实在数据库的理论(数据库原理,数据库系统设计)及相关数据库设计经验,要尽量多的分析过去数据库设计,分析这么设计数据库的好处。这时可能要用到 powerdesign等工具。

  c. 写需求说明文档和概要设计文档,同时要学会要分析相关需求说明文档的需要的内容的相关知识,如人员工时的计算方法, 一般会用 project 来分析相关的项目的内容。

  d. 选择合适的程序语言及相关的架构,一般主流的架构是 J2EE和.net的相应的优点及它们之间的结合,如采用soap xml进行相关的结合,或用java-com 桥 进行相关的功能的调用。和它们之间的相关语言优缺点

  e. 还要根据b/s,c/s 结构对开发的网络影响的相关内容采取选择。

  5. 学会说服对方,毕竟客户都不是个个是软件专家,他们的选择有时未必是正确的所以学会说服对方,是系统分析员必备的能力条件.

工作内容:

1、参与用户需求调研、负责系统体系结构、功能、性能的分析和总体设计工作;

  2、负责项目的开发流程管理,进行项目的计划、管理、跟进工作;

  3、参与并指导开发工程师完成系统详细设计和开发工作,解决相应业务、技术难题;

  4、参与编制用户手册、协助客户的系统软件、硬件平台的安装实施工作;

  5、制定项目文档格式,编写项目管理规范要求的相关文档。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: