程序员职业

1.程序员

          从事程序开发,维护的专业人员.一般分为程序设计人员和程序编码人员,但两者的界限并不清楚.

          作为一个合格的程序员,应具有的素质:

          1)团队精神和写作能力(2)文档习惯,文档是一个软件系统的生命力。是知识的继承,程序员必须将30%的时间来用于写技术文档。(3)规范化的代码编写习惯(4)需求理解能力,正确理解任务单中的需求,软件的功能需求和性能需求,要正确评估自己的模块对整个项目中的影响及且在威胁。(5)模块化思维能力,看自己负责的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模快汇中直接使用。这样可以使代码的重复利用。(6)测试习惯,测试不仅是正常的程序调试,也要进行有目的有针对性的异常调用调试,结合需求理解能力。(7)学习和总结能力,总结自己的技术,对自己的技术层面要有良好的定位,这样才能有目的性的提高,从程序员升级为软件设计师,系统分析员。

           作为高级程序员,乃至设计师而言,除了应该具备上述全部素质外,还应该有:(1)需求分析能力(2)整体框架能力(3)流程处理能力(4)模块分解能力(5)整体项目评估能力(6)团队住址管理能力。

2.架构师

            架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。

      架构师实际上就是软件的总体设计师。首席设计师就是总设计师,打个通俗的比方:邓小平是中国改革开放的总设计师,我们用现在的说法可以讲,邓小平是中国改革开放的首席架构师。架构师的形成一定是在实践中积累起来的,而并非上了几次培训班,读了几本书就可以成功的,架构师是在工程实践中培养出来的!

      架构师也并非是万能的。架构师是客户需求和开发者之间的桥梁。在软件行业中,一般提到的架构师是技术架构师,而忽略了领域架构师或者讲是领域工程师的概念。一个好的领域专家一定是业务领域的架构师,他能够给出某一个业务领域的架构,我们可以称为业务架构,只有技术架构和业务架构紧密结合才有可能真正创造出一个好的系统!

      近年来,软件领域也渐渐地流行起架构师的角色,特别是对一些大型软件产品或项目的开发,这一角色显得很关键,因为缺乏好的软件架构师而导致项目失败的例子不胜枚举,一个没有经验和能力的架构师也会使项目失败的速度加快。

    

软件架构师的重要作用

  软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查和客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。

      

如何成为优秀的软件架构师

  显而易见,在软件开发过程中,一个优秀软件架构师的重要性是不应低估的。那么如何成为优秀的软件架构师呢?

  首先必须具有丰富的软件设计与开发经验,这有助于理解并解释所进行的设计是如何映射到实现中去。

  其次要具有领导能力与团队协作技能,软件架构师必须是一个得到承认的技术领导,能在关键时候对技术的选择作出及时、有效的决定。

  第三是具有很强的沟通能力,呵呵,其时这一点好像什么鬼角色都最好具备,软件架构师需要与各路人马经常打交道,客户、市场人员、开发人员、测试人员、项目经理、网络管理员、数据库工程师等等,而且在很多角色之间还要起沟通者的作用。在技术能力方面,软件架构师最重要也是最需求掌握的知识是构件通信机制方面的知识,比如远程过程调用、JAVARMI、CORBA、COM/DCOM、各种标准的通信协议、网络服务、面对对象数据库、关系数据库等等,另外,架构师应时刻注意新软件设计和开发方面的发展情况,并不断探索更有效的新方法。开发语言、设计模式和开发平台不断很快地升级,软件架构师需要吸收这些新技术新知识,并将它们用于软件系统开发工作中。当然,行业的业务知识对软件架构师也是很重要的,有助于设计出一个满足客户需求的体系结构,优秀的软件架构师常常因为要尽快获得对行业业务的理解而必须快速学习并且进行敏锐的观察。

 

构架师自我培养过程

  构架师不是通过理论学习可以搞出来的,不过不学习相关知识那肯定是不行的。总结构架师自我培养过程大致如下,仅供参考。

  1、构架师胚胎(程序员)

  学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。

  2、构架师萌芽(高级程序员)

  学习分布式系统、组建等内容,可以在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生可以研究网络计算机、高性能并发处理等内容)

  3、构架师幼苗(设计师)

  应该在掌握上述基础之上,结合实际项目经验,透彻领会应用设计模式,内容包括设计模式(c++版本、java版本)、ejb设计模式、J2EE构架、UDDI、软件设计模式等。在此期间,最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理。

  4、软件构架师的正是成型在于机遇、个人努力和天赋软件构架师其实是一种职位,但一个程序员在充分掌握软构架师所需的基本技能后,如何得到这样的机会、如何利用所掌握的技能进行应用的合理构架、如何不断的抽象和归纳自己的构架模式、如何深入行业成为能够胜任分析、构架为一体的精英人才这可不是每个人都能够遇上的馅饼……

 

3.软件工程师

         软件工程师主要进行软件前期的项目需求的分析,然后对项目进行风险评估并试图解决这些风险,然后开始进行软件的开发,后期对软件的进度做相关的评估。

4.软件架构师

         软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员

  在技术全面、成熟练达、洞察力强、经验丰富,具备在缺乏完整信息、众多问题交织一团、模糊和矛盾的情况下,软甲架构师能迅速抓住问题要害,并做出合理的关键决定的能力 l、具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考; 主要包括如下:

  1、对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等

  2、具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策

  3、拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;

  4、以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美)

  5、精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);

  6、具备系统设计员的所有技能,但涉及面更广、抽象级别更高; 活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议等。

 

5.软件设计师

        能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档;组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平。

6.数据库管理员

  DBA的一些职责:

  安装和升级数据库服务器(如Oracle、MicrosoftSQL server),以及应用程序工具。

  数据库设计系统存储方案,并制定未来的存储需求计划。

  一旦开发人员设计了一个应用,就需要DBA来创建数据库存储结构(tablespaces)。

  一旦开发人员设计了一个应用,就需要DBA来创建数据库对象(tables,views,indexes)。

  根据开发人员的反馈信息,必要的时候,修改数据库的结构。

  登记数据库的用户,维护数据库的安全性。

  保证数据库的使用符合知识产权相关法规。

  控制和监控用户对数据库的存取访问。

  监控和优化数据库的性能。

  制定数据库备份计划,灾难出现时对数据库信息进行恢复

  维护适当介质上的存档或者备份数据

  备份和恢复数据库

  联系数据库系统的生产厂商,跟踪技术信息。

 

7.网络工程师

网络工程师有好多种,

  就路线而言,有:路由交换型、无线型、布线型等。

  就认证而言,有:华为认证、中国的软考,cisco认证、锐捷认证等网络工程师认证.

  不管哪一种都需要掌握这些知识

1:网络

  基础知识:深刻理解网络基本概念,例如>ISO/OSI、TCP/IP、VLAN、各种LAN、WAN协议、各种路由协议、NAT等等

  Cisco:熟悉Cisco产品线;会配置主要型号的交换机和路由器,不熟悉的设备能构独立查资料配置;熟悉Cisco一些主要的技术例如VOIP、Qos、ACL等;

  Nortel:熟悉Nortel产品线;会配置主要型号的交换机和路由器,不熟悉的设备能构独立查资料配置;

  Huawei-3com:熟悉Huawei-3com产品线;会配置主要型号的交换机和路由器,不熟悉的设备能构独立查资料配置;

  Foundry:熟悉Foudry产品线;会配置主要型号的交换机和路由器,不熟悉的设备能构独立查资料配置;

2:主机

  基础知识:熟悉服务器的基本知识,例如各种RAID、各种外设、SCSI卡等等

  SunSolaris:熟悉Sun小型机产品线,掌握各个版本的Solaris使用

  IBMAIX:熟悉IBM小型机产品线,掌握各个版本的AIX使用

  HPHP-UX:掌握HP-UX的基础知识

  Linux:熟悉主流版本的Linux的安装、使用、配置

  MSWindows:熟练掌握Windows NT、2000、2003的安装、使用、配置、排错

3:数据库与中间件

  基础知识:深刻理解数据库的基本概念,会使用简单的SQL语句,了解数据库复制、数据仓库等高级概念

  SybaseASE:熟悉Sybase数据库的基本概念、体系结构、安装、配置、维护、排错、复制

  OracleDB:熟悉Oracle数据库的基本概念、体系结构、安装、配置、维护、排错、复制

  MS SQL Server:熟悉MSSQL Server数据库的基本概念、体系结构、安装、配置、维护

  IBM DB2:了解IBM DB2

  MySQL:了解MySQL数据库在Windows和linux下的安装和维护

  SybaseEAserver:熟悉Sybase EAServer在各个平台的安装、配置和使用

  OracleAS:了解Oracle应用服务器的安装和配置

  IBMWebSphere:熟悉IBM Websphere各个版本在各个平台的安装、配置和使用

  Tomcat:了解Tomcat在Windows和linux下的安装和维护

4: 英语

  在一般人的概念中,网络不过就是通过拨号上上网,发个E-Mail,聊聊天,计算机组装与维护、组建局域网就以为是网络工程师了!其实网络工程师所具备的知识远不只这些,具备了上述所提的只能算是具有电脑维护能力。真正的网络工程师须具备以下几方面的知识:

  让学员了解完整的计算机网络系统如何工作

  深入学习网络中最核心的路由技术和交换技术

  全面掌握网络管理和网络安全知识

  全面学习一个网络应用的建设过程

  配置和管理你的计算机系统

  使学员能够设计一个完整的IT系统

  对技术有不一样的追求,有理想,有目标。

 

8.系统分析员

1)名词定义

  对大型、复杂的信息系统建设任务中,承担分析、设计和领导实施的领军人物。

(2)基本素质

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

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

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

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

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

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

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

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

(3)职责

  做好与客户之间的关系,同时对客户的需求要正确的理解,要选择合适的开发技术,同时做好与客户间沟通交流,学会说服对方。

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

 

9.系统集成工程师

合格的系统集成工程师应该具备的素质

  1:通晓计算机以及网络基础理论,熟悉网络技术系统基础。

  2:精通网络设备调试技术,服务器调试技术,基础应用平台调试技术或其中之一。掌握一种售后调试技术,是系统集成工程师必备的技能。

  3:精通网络平台设计,服务器平台设计,基础应用平台设计或其中之一。能够设计相应的网络系统和应用系统,是售前技能掌握情况的重要指标。

  4:良好的口头语言表达能力和文字表达能力。在系统集成实施的各个阶段,诸如用户交流,方案与标书撰写,述标与答疑,用户培训和竣工文档编写等工作中,写作能力和口才是重要的基本素质。

  5:较高的计算机专业英语水平。越是高端的产品,英语使用的几率越高,有时还需要英语听说能力,而在某些国际招标项目中,英文写作能力将受到考验。

  6:良好的人际交流能力和与他人协同工作能力。系统集成工程师应是一个善于与人沟通,善于与人建立良好关系的人。

  7:在压力环境下现场解决问题的能力。尤其是在用户现场安装调试或售后故障维修时遇到技术难题的情况下,现场可用资源很少,打电话寻求支援又不方便,一旁更有用户审视的目光,这种环境是对工程师的智商,情商,技术水平和调试经验的综合考验。

  8:广博的知识面。系统集成涵盖的范围很广,工程师应该一专多能,一精多通。

 

10.硬件工程师

【职业名称】

  硬件工程师HardwareEngineer职位

【职业定义】

  1、电脑软硬件安装、调试工作;

  2、基于TCPIP协议的网络安装调试工作;

  3、周边产品的安装调试工作;

【主要工作任务】

  1. 计算机产品硬件设计

  2. 了解计算机的结构及其发展趋势

  3.对计算机硬件的销售及市场有较深刻的认识

  4. 区域市场管理

  5.按照计划完成符合功能性能要求和质量标准的硬件产品;

  6.根据产品详细设计报告,完成符合功能和性能要求的逻辑设计;

  7.根据逻辑设计说明书,设计详细的原理图和PCB 图;

  8.编写调试程序,测试或协助测试开发的硬件设备,确保其按设计要求正常运行;

  9.编写项目文档、质量记录以及其他有关文档;

  10.维护管理或协助管理所开发的硬件。

【职业类别及要求】

  精通电脑软硬件、周边产品的安装调试及组网;

  作为一个硬件工程师,既需要塌实的硬件知识也需要很好的软件知识,现在随着使用器件的更新对软件的要求越来越高。

  学会并掌握主板芯片级维修的基础知识、仪器仪表的使用方法和维修焊接技术,熟悉主板故障现象和维修方法,熟悉主板维修的各种检测方法和器件替换原则,具有分析、解决问题能力,能够维修主板的常见故障。

  ① 硬件技术工程师课程

  学会并掌握系统的微型计算机硬件基础知识和PC机组装技术,熟悉市场上各类产品的性能,理解各种硬件术语的内涵,能够根据客户的需要制定配置表,并独立完成组装和系统的安装工作。

  ② 硬件维护工程师课程

  学会并掌握系统的微型计算机硬件基础知识和PC机组装维护技术,熟悉各种硬件故障的表现形式和判断方法,熟悉各种PC机操作系统和常用软件,具有问题分析能力,能够制定详尽的日常保养和技术支持技术书,跟踪实施所受理的维护项目。

  ③ 硬件维修工程师系列课程

  学会并掌握较为深入的微型计算机硬件结构及数码产品的电气知识,部件维修的操作规程,熟练使用各种检测和维修工具,具有问题分析能力,能够对硬件故障进行定位和排除。硬件维修培训分模块进行,包括主板、显示器、外存储器、打印机、笔记本电脑维修课程。

  ④ 硬件测试工程师

  学会并掌握硬件产品的硬件结构、应用技术及产品性能,熟练使用各种测试的软硬件测试工具,能够独立搭建软硬件测试平台,并评价产品、写出产品的测试报告。

  ⑤ 硬件设计工程师

  学会并掌握IC设计、电路设计和PCB布线标准规范,熟练使用各种模拟器和PCB布线软件,达到具有分析和调试操作水平。

【硬件工程师必备知识】

  目的:基于实际经验与实际项目详细理解并掌握成为合格的硬件工程师的最基本知识。

  1) ;基本设计规范

  2);CPU基本知识、架构、性能及选型指导

  3);MOTOROLA公司的PowerPC系列基本知识、性能详解及选型指导

  4);网络处理器(INTEL、MOTOROLA、IBM)的基本知识、架构、性能及选型

  5) ;常用总线的基本知识、性能详解

  6);各种存储器的详细性能介绍、设计要点及选型

  7);Datacom、Telecom领域常用物理层接口芯片基本知识,性能、设计要点及选型

  8) ;常用器件选型要点与精华

  9);FPGA、CPLD、EPLD的详细性能介绍、设计要点及选型指导

  10) ;VHDL和Verilog;HDL介绍

  11) ;网络基础

  12);国内大型通信设备公司硬件研究开发流程;

  二.最流行的EDA工具指导

  熟练掌握并使用业界最新、最流行的专业设计工具

  1);Innoveda公司的ViewDraw,PowerPCB,Cam350

  2);CADENCE公司的OrCad, ;Allegro,Spectra

  3);Altera公司的MAX+PLUS ;II

  4);学习熟练使用VIEWDRAW、ORCAD、POWERPCB、SPECCTRA、ALLEGRO、CAM350、MAX+PLUS;II、ISE、FOUNDATION等工具;

  5);XILINX公司的FOUNDATION、ISE

  一. ;硬件总体设计

  掌握硬件总体设计所必须具备的硬件设计经验与设计思路

  1) ;产品需求分析

  2) ;开发可行性分析

  3) ;系统方案调研

  4);总体架构,CPU选型,总线类型

  5);数据通信与电信领域主流CPU:M68k系列,PowerPC860,PowerPC8240,8260体系结构,性能及对比;

  6);总体硬件结构设计及应注意的问题;

  7) ;通信接口类型选择

  8) ;任务分解

  9) ;最小系统设计;

  10) ;PCI总线知识与规范;

  11);如何在总体设计阶段避免出现致命性错误;

  12);如何合理地进行任务分解以达到事半功倍的效果

  13) ;项目案例:中、低端路由器等

  二. ;硬件原理图设计技术 ;

  目的:通过具体的项目案例,详细进行原理图设计全部经验,设计要点与精髓揭密。

  1);电信与数据通信领域主流CPU(M68k,PowerPC860,8240,8260等)的原理设计经验与精华;

  2);Intel公司PC主板的原理图设计精髓

  3);网络处理器的原理设计经验与精华;

  4) ;总线结构原理设计经验与精华;

  5) ;内存系统原理设计经验与精华;

  6);数据通信与电信领域通用物理层接口的原理设计经验与精华; ;

  7);电信与数据通信设备常用的WATCHDOG的原理设计经验与精华;

  8);电信与数据通信设备系统带电插拔原理设计经验与精华;

  9);晶振与时钟系统原理设计经验与精华;

  10);PCI总线的原理图设计经验与精华;

  11) ;项目案例:中、低端路由器等

  三.硬件PCB图设计

  目的:通过具体的项目案例,进行PCB设计全部经验揭密,使你迅速成长为优秀的硬件工程师

  1);高速CPU板PCB设计经验与精华;

  2) ;普通PCB的设计要点与精华

  3);MOTOROLA公司的PowerPC系列的PCB设计精华

  4);Intel公司PC主板的PCB设计精华

  5);PC主板、工控机主板、电信设备用主板的PCB设计经验精华;

  6);国内著名通信公司PCB设计规范与工作流程;

  7);PCB设计中生产、加工工艺的相关要求;

  8);高速PCB设计中的传输线问题;

  9);电信与数据通信领域主流CPU(PowerPC系列)的PCB设计经验与精华;

  10);电信与数据通信领域通用物理层接口(百兆、千兆以太网,ATM等)的PCB设计经验与精华;

  11);网络处理器的PCB设计经验与精华;

  12);PCB步线的拓扑结构极其重要性;

  13);PCI步线的PCB设计经验与精华;

  14) ;SDRAM、DDR;SDRAM(125133MHz)的PCB设计经验与精华;

  15);项目案例:中端路由器PCB设计

  四.硬件调试

  目的:以具体的项目案例,传授硬件调试、测试经验与要点

  1);硬件调试等同于黑箱调试,如何快速分析、解决问题?

  2) ;大量调试经验的传授;

  3) ;如何加速硬件调试过程

  4) ;如何迅速解决硬件调试问题

  5);DATACOM终端设备的CE测试要求

  五.软硬件联合调试 ;

  1) ;如何判别是软件的错?

  2) ;如何与软件进行联合调试?

  3) ;大量的联合调试经验的传授;

  目的:明确职业发展的方向与定位,真正理解大企业对人才的要求,明确个人在职业技能方面努力的方向。

  1) ;职业生涯咨询与指导

  2);如何成为优秀的硬件开发工程师并获取高薪与高职?

  3) ;硬件工程师的困境与出路

  4) ;优秀的硬件工程师的标准

你可能感兴趣的:(程序员)