测试类:测试工程师,产品测试经理;
项目管理类:项目经理,QA工程师;
系统类:网络工程师,基础设施工程师;
安全类:安全系统管理员,网络安全管理员,安全开发工程师;
维护类:数据库管理员,系统管理员,系统运行维护管理员
开发类:需求分析师、开发工程师、人机系统开发工程师、系统分析师、架构师;
1、随着软件的复杂度越高,软件业中的职位进一步细分。有利于合作,以更好地解决问题,提高效率。越来越细分的软件职位对与有志从事软件业的人员来说是个不好的消息,不知道将来向上往哪个职位奋斗!帮助大家了解目前软件业有哪些职位,这些职位具体承担哪些工作,这些工作大致需要哪些技术知识或素质。确定从业信心,看到从事软件行业自己会有哪些可能的选择。在大家的软件职业生涯中可能会遇到各种各样的工作机会,每种职位的发展各不相同,每个人的特点或性格都不同,对于日新月异的IT业发展,提前确定目标并规划是非常有益的。
在介绍每类职位的同时,我们来了解一些业内常用的工具比如:测试类会用到:WinRunner、LoadRunner、TD;项目管理会用到SourceSafe、StarTeam、ProjectManager;开发设计类会用到Enerprise Architect、Rose Rational。对于有志向未来从事某类职位的人了解一些业内使用的工具和一些工作情况,避免闭门造车、盲目学习,或是在面试中能够提出这些工具表明自己用过或者接触过这些提升自己的竞争力。Zc530.coM
2、帮助大家了解典型的软件企业的技术组成,当看到一个陌生的企业发出的招聘时能够真正理解这些职位的技术要求,在应聘时良好的心理准备。每个软件企业专著的领域不同,比如有的主要业务电信通讯业,有的专著医药软件,有的主要做物流软件。虽然这些企业的主要业务和客户都不相同但是工作机制基本相同,总归都有类似的组织结构,各个职位和技术力量可能分配的比重不同而已。不要看到招聘中的要求有些自己没有掌握也没有接触过就退缩,只要你以前确实为这类职位类型准备过经过刻苦的学习积累过工作经验,那就去试试。
3、既然已经了解典型软件技术类职位组成,这些职位要求的技术要求的性格素质各不相同,有着不同的职业特点,你在哪方面有兴趣,你的特点更适合在哪方面发展,希望此次讲座对你有所帮助。
售前工程师:
软件行业与其他行业一样都有类似的营销人员,相比那些在商场、电视购物中推销产品的销售人员,软件业的销售类职位要求很高的技术知识、对软件产品详尽掌握(包括产品应用的范围、技术特性、同类产品的技术比较、客户技术应用的环境、软件的行业特点、性价比的演示),售前工程师之所以是工程师就在于他要掌握非常专业的专业技能,不像商场销售电视、电饭锅的导购员经过几天的培训就能上岗,一个优秀的售前工程师可能做过多年某个行业软件开发,积累了多年对此行业软件的理解,非常了解这类软件的行业需求,在各类企业中的应用情况,他会知道如何配置或者实施自己的软件来满足用户的需求,当用户问起一些技术特点时他能从容应对并且展示出自己对销售软件的信心,还能将销售的软件的某些技术优势潜移默化的传递给客户。现在的软件市场巨大多数是买方市场,客户的业务需求被软件公司挖掘的都差不多,如何使自己的产品在客户的客户的心理中的技术面上占据重要的地位,不仅要完全掌握当前流行的技术,还得充分了解客户的详细需求,能将这些产品的技术和功能和客户的需求合理亲切的吻合在一起,这些是一个优秀的售前工程师要具备的基本素质。还有一些公关方面的能力。
举个例子:有一个客户是国内一家著名的电器制造企业,正准备上一套计算机管理系统。售前工程师在拜访客户的之前详细地准备了一套产品ppt来演示涉及生产计划、采购、制造、仓库、销售、财务、考核等各方面的功能。由于系统实施很复杂,用了将近一星期的时间来准备材料,自以为得很充分了。在客户那里给客户演示产品刚开始一段时间,客户就打断了售前的介绍问了三个问题:
你知道我的企业管理中有那些问题吗?你的软件具体能解决我企业的什么问题?
你有多了解我这个电器行业你的软件在那些方面有所体现?
我花几百万买你的软件我的投入值不值得?
由于事先只关注自己的产品没有深入了解该客户,对整个行业又不是很有经验,只能支支吾吾地回答了一些类似有效降低库存,提高订单的反应速度,提高客户的满意程度等套话。客户很客气地终止了我的演讲婉言谢绝了这次推销临走时他告诉笔者,他需要的是一套适合电器行业的能解决他公司实际管理问题的软件系统而不是我们这套软件。
售前的工作不仅是上面所提到的,他的工作越来越像咨询工程师,好的售前拥有卓越领悟力优秀的客户沟通能力。给客户强大技术优势感和信任感。同时真正能够发现、理解、解决客户的问题。
举个例子:像Oracle 、IBM 、MS、华为的售前工程师,技术能力、行业知识、穿着举止、收入;国内小公司售前就差一些。
zc530.com推荐
需求分析师
在确定项目后需求分析师和客户进行深入和细致的沟通。理解业务和客户在他们中业务中用到交互方式;还需要理解这个项目中牵涉到的各种利益相关人员,要充分的从他们的想法中得到规范的业务需求。重要的是深入的理解业务需求,梳理出需求的各个功能点,每个功能的业务性质,另外还需要挖据出系统的非功能性需求。因为客户并不懂软件专业,他们的口述完全是对未来系统的模糊想法,有些客户可能前后描述的需要自相矛盾,好的需求分析师不仅能清晰的掌握业务需求,不仅将需求从业务人员的口述的功能提炼出需求分析报告,这份报告在不需要接触客户的情况下,开发人员都能清晰一致地理解,高级的需求分析工程师还能从需求中抽象出本质的内容,对于不稳定的需求找出其中的本质问题,可以给出各种重用的方法。能够挖据出潜在的需求问题,对于业务能够提出可兼容、可扩展的需求解决方法。除对需求本身的分析,还得能够理解客户的组织机构、人员组成,关键人物的业务要求。他作出的分析报告,不仅客户中的基层人员能够接受,还能满足高层领导的要求。经过需求分析师的辛苦劳动,最后会给出一份《软件需求规格说明书》,这份说明书为以后的工作奠定了重要的基础。它详细的描述了系统有哪些功能点,每个功能点的操作和数据格式,系统使用者的分类,功能点的优先级,系统的非功能性需求,数据字典,系统的应用环境,扩展点,维护功能,甚至界面要求。
需求分析方法:
1。 绘制系统关联图,这种关联图是用于定义系统与系统外部实体间的界限和接口的简单模型。同时它也明确了信息流和实物流。
2。 创建用户接口(系统操作界面)原型,开发一个可能的局部实现,这样使得许多概念和可能发生的事更为直观明了。用户通过评价原型将使项目参与者能更好地相互理解所要解决的问题。注意要找出需求文档与原型之间所有的冲突之处。
3。 分析需求可行性,在允许的成本、性能要求下,分析每项需求实施的可行性,明确与每项需求实现相联系的风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍。
4。 确定需求的优先级别。以优先级为基础确定产品版本将包括哪些特性或哪类需求。当允许需求变更时,在特定的版本中加入每一项变更,并在那个版本计划中作出需要的变更。
5。 为需求建立模型,需求的图形分析模型是软件需求规格说明极好的补充说明。它们能提供不同的信息与关系以有助于找到不正确的、不一致的、遗漏的和冗余的需求。这样的模型包括数据流图、实体关系图、状态变换图、对话框图、对象类及交互作用图。
6。 创建数据字典,数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。在需求阶段,数据字典至少应定义业务数据项以确保客户与开发小组是使用一致的定义和术语。分析和设计工具通常包括数据字典组件。
7。 使用质量功能调配,将产品特性、属性与对客户的重要性联系起来。该技术提供了一种分析方法以明确那些是客户最为关注的特性。QFD将需求分为三类:期望需求,即客户或许并未提及,但如若缺少会让他们感到不满意;普通需求;兴奋需求,即实现了会给客户带去惊喜,但若未实现也不会受到责备
使用的工具:UML,VISIO,思维导向工具MindManager。
每当公司接下一个单子,为了能够按时保质的完成合同的交付物,老板就会将这样重要的任务交给项目经理,这是一个要求综合素质的职位,既要懂技术又要懂管理还得性格适合。从这三方面我们逐一了解一下项目经理的工作。为什么会有项目经理这样的职位呢,很简单一个项目总得由一个人来计划调度实施,如果是个小公司那么项目经理就是老板,但是到了一定规模的软件公司老板哪有这么大的精力同时管理多个项目,所以他就将项目分配给合适的项目经理来负责。一般的来说老板要求项目经理确保项目顺利实施,保证客户满意,只有顺利实施客户满意公司才能拿到钱。这也是老板衡量项目经理工作能、水平高低的基本标志。再者老板会让项目经理报告整个项目的评估包括工作内容、工作量,人力安排分配,经费预算,项目总体规划,如何分阶段实施。看过项目经理的报告老板再加入自己的意见,再和其他部门,比如测试部,开发技术部,系统部项目的相关部门一起讨论这份报告项目,确定如何实施项目,最后由项目经理来综合管理这个项目。似乎在这里好像除了老板就是项目经理厉害了,其实不然。项目经理只是综合管理这个项目并不是老板有着绝对的控制权,他要从开发技术部、测试部等相关部门的职员中找到合适的人来成立项目组,要想组织起一个成功的项目组,这不是想象的那么简单,需要这么项目经理有适合的性格,一个脾气大有抠门的项目经理是组织不起来好的队伍,但是脾气好由大方的也不一定能,需要一个合适的性格。来管理那些属于不同部门的同事一起同甘共苦完成项目。既然队伍拉起来那就干吧,既然是这个项目组项目经理很多关键问题需要他来决策。项目经理要亲自决策的问题包括实施方案、总体技术方案、重大技术措施、奖惩、设备采购方案、资源调配、进度计划安排、合同及设计变更、接待客户等。 是她来决策干活的可能是架构师、测试部工程师、也可能就是他自己做的文档。在实施的过程中不断的监督进度,检查质量,修正方向,修改方案,和各部门扯皮最多的是系统部和测试部,向老板汇报,联系客户展示阶段成果和客户沟通,还得犒赏组员吃吃饭喝喝酒。最后按时按要求的交付。我们来看看项目组的成员,一般项目组都会有架构师,系统分析师,需求分析师,开发工程师,测试工程师,一半个系统部的人,QA,项目经理就是要哄着这些人好好努力工作,不惜加班,带病工作。
但这样人都不是好惹的,他们中有些人的级别比项目经理的级别高,薪水地位比他高,怎么能带好这支队伍,这就要求项目经理有个合适的性格。在别的行业项目经理可能不会遇到这样的问题,但是软件行业这是常有的事,甚至有的老板都不了解这个问题,随便招来一个自吹自擂的家伙就让他来负责,结果组员告状,消极怠工,项目失败或者不成功。可见项目经理要有好的EQ。其次还有具备项目管理知识,项目管理已经发展成一门的管理学科,它不仅仅要项目经理具备软件开发过程管理,熟悉CMM知识,还得具备较深的开发技术功底,不然要是一个笨蛋架构师提交了一份糟糕总体设计若是没有相关的知识不能及时纠正项目实施出现了问题再从头来。可见一个合格的项目经理要具备懂技术甚至是技术高手能够代领大家走出技术困境,发现错误还得懂管理运用科学的项目管理知识经验最后还得有个合适的性格。要介绍项目经理的工作和如何做一个好的项目是一个非常大课题,但是从讲座的目的我只想大家了解下项目经理的工作,如果有志在这个方向发展的朋友,我的建议就是项目管理是干出来的,不是学出来的不要以为去参加个软考拿个证书就能干这行,同样我早大一的第二学期就认识到我的本科专业管理工程不会让我在毕业时找到好工作,同理管理是干出来的,不是学出来的,所以我马上纠正了自己,通过考研究生换了专业。
职业规划就是对职业生涯乃至人生进行持续的系统的计划的过程。一个完整的职业规划由职业定位、目标设定和通道设计三个要素构成。
系统类、安全类、维护类
将这三类放在一起,一方面是我在这方面工作经验比较少,只是平时在工作中接触,另一方面我觉得在这几类职位的工作内容是很多职位都需要掌握的技术只是这几类职位要求的技术更精,承担的工作量更多,比如系统管理员每天都会监控服务器,会将给加入团队的同事建帐号授权,将离开的旧同事帐号注销。现在我们来一一介绍这几类职位,最后的重要的原因是这类职位与软件职位有关系但与软件职业有些距离。
网络工程师
一定规模的软件公司或者大型的单位都需要将本单位的计算机联网,建设网络不仅需要布线,调试网络设备如交换机、路由器、放火墙、VOIP设备、存储设备等,还需要管理接入网络的各种设备比如服务器ip地址,一组计算机的IP,网络打印机等等。具体来说网络工程师从事的工作有以下几类:
1. 负责机房内的网络联接及各网段的划分配置。
2. 负责系统网络的拓扑图的建立和完善,并做好系统路由的解析和资料的整理。
3. 负责机房线路的布置和协议的规范工作。
4. 负责计算机间的网络联接及网络共享,并负责网络间安全性的设置。
5. 负责对网络障碍的分析,及时处理和解决网络中出现的问题。
6. 利用网络测试分析仪,定期对现有的网络进行优化工作。
根据网络工程师的专长大致有:配置管理类;布线施工类。
喜欢网络的不是喜欢上网的同志可以投身到这个职位的发展中,我研究生是学习网络的,研究的是网络协议一致性测试,但是后来并没有一直在这个方向上发展,并不是网络工程师没有发展,只是我的工作没有遇到这样的机会,我的一些同学后来一直从事网络方面的工作。在后来的工作中网络技术知识给与了我很大帮助,经常性的在一些和开发人员的技术讨论会中提出专业的术语让同事惊讶。现在简单来说一下网络工程师的职位发展,一种是直接进入专业的网络技术公司如华为,你的工作可能是售前,也可能是做网络工程师,客户比如电信、移动买了设备你要去帮助他们安装调试,随着技术积累和工作经验你可能会成为公司某个部门的主管,这个部门负责某类企业的业务。第二种你应聘去了非网络专业的公司甚至非IT类的,你可能会从基础做起在实践中积累经验发展到侧重某类技术比如网络存储工程师、综合布线工程师、网络安全工程师等。最后进阶到专家级别,如IT项目经理、网络主管或者技术专家等。
系统管理员
很多公司可能不会专门设置这么一个职位,但是系统管理员确实是不能缺少的,有时是由高级别的主管兼职,工作主要负责服务器的管理维护工作,服务器是每个公司的重要资源,他的计算、存储、组织管理域控等等,如何让它稳定、安全、高效的运行是需要专业的技术知识和丰富的经验。
系统管理员的工作大致分为两类硬件和软件。硬件类的:比如服务器安装操作系统时,根据这台机器运行的业务如何创建磁盘阵列,做raid1还是做raid5;最近服务器总是慢运用日志工具检查问题出在哪里,需要升级那些部件;有一天突然看到某台设备出现的报警,但是服务器还在运行,如何安全的换下报警的部件决不能让服务器宕机。软件类,最典型的就是AD的维护,管理和维护帐户,或是某个重要的软件系统的维护,比如我在的单位有个资深的测试工程师就兼职管理维护StarTeam服务器。
测试技术经过这么多年的发展,在大学已经有软件测试的专业,在很多年前就有软件测试研究方向。我读硕士研究生时的研究方向就是网络协议的一致性测试。在这里只是介绍测试职位在实际工作中的具体工作是什么。一个测试工程师的工作大致上是在完全理解软件的业务需求后根据每个功能点和它的分类;编写功能测试例,将测试例分组归类成测试套件。测试例是测试文档中最基础的组成部门,测试工程师根据测试例去测试软件,测试的软件是在经过开发部门单元测试后提交给测试部门用来做集成测试和系统测试。随后咱们介绍一下测试工作的种类:单元测试、集成测试、系统测试、回归测试、性能测试、安全测试。测试软件可以是人工操作通过鼠标点击键盘录入来实现,也可以编写测试脚本,或者在人工操作测试的过程中通过专业测试软件录制测试脚本,然后再手工修改部分代码,以后就可以自动执行测试,不用再手工测试。提高了测试效率和测试的准确性。因为一个软件的测试例在编写的时候软件业务需求、技术需求等文档基本都已定稿,所以测试文档确定以后是很少修改或变更。测试脚本或测试程序也变化不大,每次的回归测试如果都是手工测试那么工作量可想而知,回归测试一般都是由测试脚本来自动测试。因为编写的测试脚本最终运行后要给出测试结果,一般的测试结果分三类:通过、失败、未决。
关于测试的分类一般分为以下:单元测试、集成测试、系统测试、回归测试、性能测试、安全测试。单位测试一般有开发部门自己完成,主要测试自己编写的代码实现的功能、组件接口是否符合设计文档,输入输出是否正确。在完成单元测试后提交给测试部门。管理规范的公司或者通过CMM3级的组织都会有代码管理工具如StarTeam SourceSafe等。测试部门会在开发部门提交代码后下载最新版的代码,集中编译上传到测试环境中,进行集成测试。集成测试用来测试软件的各组成部分是否能按设计要求组合在一起实现预定的功能,做各模块联调测试,检查各模块的接口是否一致、各模块间的数据流和控制硫是否按照设计实现其功能、以及结果的正确性验证,可以是整个产品的集成测试,也可以是大模块的集成测试。集成测试之后就是系统测试:它是针对整个产品的全面测试,既包含各模块的验证性测试(验证前两个阶段测试的正确性)和功能性(产品提交个用户的功能)测试,又包括对整个产品的健壮性、安全性、可维护性及各种性能参数的测试。回归测试是当软件需求发生变化,程序代码也完成更新,这时要测试一下修改或新增的代码对已有未变化的功能是否有影响。防止修改了旧bug增加了新bug。或者增加了新功能原有的功能却不能用了!性能测试一般会测试软件并发用户数,响应时间,大数据的处理,长交易处理能力,宕机恢复能力等一般会使用LoadRunner。安全测试主要基于工具分析和扫描,检查是否存在危险如:注入攻击、拒绝服务、配置操纵、访问控制、日志伪造等等。
产品测试经理
属于测试工程师的老板或上级,具有丰富的产品测试经验和需求领悟能力。曾经的一个测试事故让我对产品测试经理的能力有了非常深的印象。有一次系统新增加了一项与之前功能相关且名称相似,测试工程师没有理解业务需求编写出来的测试例几乎没有覆盖新增加的功能,被产品测试经理检查出并纠正。敏锐的洞察力和良好的分析、研判能力来分析市场发展趋势,可以提出软件的发展或进步方向。把握用户需求,完成需求分析到测试转变,对产品设计的生机和改进要能提出关键的意见。负责或配合其他部门,持续改善产品。负责测试团队的日常管理工作。
测试类职位的特点
职位的重要性和地位在稳步上升,与开发类平分秋色。在前些年人们往往看不起测试职位,一方面它位于整个项目的下游,如果没有开发就没有测试,测试总是跟在开发后面。另一方面软件系统的复杂性和应用环境简单,测试在项目起的作用较小。但是这两方面随着开发技术的发展尤其测试驱动开发TDD,还有是人们对软件质量的关注使得测试逐渐和开发地位基本持平。我原来在的单位技术性的员工有100多,开发技术部的有40人,项目部30人,测试部30人。
且职业寿命在积累中逐渐增长类似医师。自动化测试、一致性测试、互操作测试等等技术的发展使测试工程师在工作中不断积累了经验,不像开发类的技术和工具都不断更新。而测试类的工程越来越值钱,越老对软件的理解越丰富。
在软件业技术是非常重要的,在从事技术类高级职位的工程师,不仅有非常好的技术,还能带领一支技术队伍,像导师一样帮助他们给于技术支持和指导,确定工作方法,指明工作方向,解决队伍在项目过程中遇到各种技术问题。同时还要具备领导能力。我在读研究生的时候老师让我给本科生带辅导,我对这样工作一点不重视,觉得不就是看着他们做实验出错的时候去给调试一下,但是我的老师很严肃的对我说:你要给别人一滴水,你自己要有一桶水,我有又了一句,如果你只有一滴水,你只会给别人一头雾水。
职业规划是对职业生涯乃至人生计划的过程,职业生涯规划的好坏可能将影响整个生命历程。感谢您阅读《软件业职位总结5 开发类[2]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。
开发工程师
俗称程序员,流传一句话恭喜,你选择开发工程师做为自已的职业;悲哀,你选择开发工程师做为自已的职业。这句话真的是非常有意思,好的开发工程师,可能从写代码做起,掌握了丰富的开发技术(c,c#,java)很快的做到系统分析师,架构师,产品设计师,走向管理层作部门主管或是CIO。辛苦的工程师可能从c到c++,再到java,开发使用的工具也是经常变化。技术在不断进步,工程师也得不断学习,从COM,DCOM,COM+,.netRemoting,WebServices,WCF等等,总是跟着技术跑。在日常工作中也是废寝忘食,非常疲惫,而且还经常让测试人员呼来喊去,偶尔还会被老板教育。我曾经的一个同事做了7、8年开发,非常优秀有一次出差回来,发现他不在了,辞职走人,以为跳槽到大公司去了,后来同事告诉我他出去开了家陕西面馆。软件开发工程师有一般来分:.net、java。我本人做.net开发,属于微软阵营。本人不太喜欢讨论哪个阵营好哪个有前途,之所以没有做java一直在微软的.net阵营混,完全偶然,工作和项目上的需要。目前也没有计划去做java。但是会经常关注java的发展,了解一些新技术。
日常工作包括:
1、根据项目具体要求,承担开发任务,按计划完成任务目标。
2、独立完成软件系统及模块的编码。
3、负责编制与项目相关的技术文档。
4、配合系统分析人员完成软件系统及模块的需求调研与需求分析。
5、配合系统分析人员完成软件系统及模块的设计。
6、协助测试试人员完成软件系统及模块的测试。
一个公司内的开发工程师都会分等级,高级开发工程师、开发工程师、助理开发工程师。一个正常运行的软件公司不是那种从零开始的,都会有自己的技术积累、成熟的开发框架、公共开发组件。一般的工作都是在此基础做开展。新项目开发了,高级开发工程师可能分到的任务都是系统技术核心部分,如开发框架,公共代码,数据库设计,数据字典管理等;开发工程师会做一些一般功能的实现,比如系统中的几个模块;助理开发工程师等级较低,会在前辈的基础上使用公司的技术基础开发一些简单功能或模块,一般是照着前辈的代码抄。高级开发工程师为公司的技术打下坚实的基础,写一些公共组件和代码。或是应用新技术作些示范,教大家如何使用。开发工程师能够独立的完成自己的任务,提出一些好的想法。助理工程师会好好学习,融入到整体技术环境中。
开发工程师是系统最终实现的实施者,工作有很强的成就感。他掌握的开发技术很多,掌握数据库系统Oracle、MySql、MS SqlServer,基础开发语言C、C++,JAVA,C# ,系统建模语言UML,XML,开发环境VS、ECLIPSE、JDEVELOPER、NetBeans,服务器环境Win2003、Redhad、Unix等,应用服务环境IIS、Websphere、weblogic,开发框架。net framework、java容器、Hibernate、Spring,流行的实现技术设计模式、三层结构、COM+、webServices、WCF、WPF,SLIVELIGHT。实事求是的将说开发工程师是一种中间职业状态,原因很简单谁也不原意每天爬在键盘上废寝忘食狂敲代码。在项目经理的不断催促下赶进度,不断的接到测试工程师的错误报告,惭愧的说不小心做错了,马上改。偶尔还会和不懂事的客户纠缠如何操作。但是不是所有人都能突破开发工程师晋升到高级职位。但是反过来说开发工程师是系统实现的最直接的工程师,就像一个宏伟的建筑,设计者只是在纸上画画,但是需要施工方辛苦的劳作,最终拔地而起。可想在你的辛苦劳动下一点一滴完成的了这项工程,成就感是非常大的。而且在编写代码作开发的阶段会积累很多很多的经验,需要不断的学习新的技术,在有的时候高级职位还需要向你请教。所以另外一方面开发工程师可能是很多高级职位必须经历的过程,几乎所有的软件高级职位的招聘都有几年的开发工作经历,丰富的开发和实施经验才能使你在高级职位上,在系统还没有开发时,就能预见和分析出系统的技术需要等等问题,带领大家成功的完成任务。
系统分析师
经过几年的开发工程师经历,积累了丰富的开发经验,在不断的努力下你的职位得到提高已经不用再每天Coding了,可以写写文档、画画图做设计了。
系统分析师主要参与或主管以下工作:包括业务需求、实现功能、性能要求的分析和总体技术设计工作。参与并指导开发工程师完成详细设计文档和代码编写,解决系统关键部分的设计和开发工作,制定技术文档的格式、内容。对系统实现的程序代码、脚本、数据库等交付物进行审计和质量管理。
系统分析员要不断的学习,不断的实践,不断的更新知识,不断的优化自己的知识结构,这一切都使得系统分析员成为稀有人才。在软件组织中属于高级职位。好的系统分析员师都是从优秀的开发工程师中产生的,有着坚实的开发功底,丰富的编程经验。没有对系统本身进行过透彻剖析和编码实践,很难领会到其中一些难以言述的精华。
系统架构师
在软件和硬件系统没有发展到现在的应用规模时,人们普遍的认为,教科书也在说程序=数据结构+算法。但是随着系统的发展,程序处理数据量、并发介入客户、系统的需求变更、运行维护等等的工作使得大家对软件的架构越来越重视。不仅数据结构(数据库设计、类、字段等)算法的实现技术有很大的进步,而且对系统技术结构,系统各组件的设计,系统的部署等等方面更加重视了。随着计算机网络操作系统、虚拟化技术、WEB服务器、应用服务器、中间件、应用程序容器,SOA,企业服务总线等技术的推广架构设计已成为软件系统的首要考虑。在经过一些项目的实施之后,人们逐渐意识到,即使你对系统有良好的分析和设计,但是由于没有在软件架构方面做深入的分析在随后的系统运行中,麻烦越来越多。比如我们怎么在不影响业务运行的情况下将需要更换的组件撤下,将新开发的组件上线。一个大单位中上线的系统越来越多,怎么统一管理这些系统共享的数据资源,使各系统在任何时候都能拿到同样的数据又能及时地更新。系统架构师是要站在系统之上和企业所有系统系统之间去分析,在未来多少年之内采用何种技术企业的信息系统能够轻松应对业务需求。
结束
经过了解以上这些职位,我想大家对一个软件公司都有些什么样的人有了一定的了解,在一个有一定规模的软件组织中分工是非常详细的。希望这次讲座大家对软件公司的技术类职位不再陌生,不要只知道我我将来就要搞软件呀,能够清楚自己的目标。
高级项目经理
同他的名字,就是比项目经理更厉害的项目经理。有时高级项目经理是老板对跟随自己多年的老功臣的安慰,有时只是为了让薪水拉开距离,有时是只有高级项目经理去做大项目,也有的时候高级项目经理来管理项目经理,它是项目经理的老板。总之具体的工作还是那些只不过更高级了,就像有些人的职务前加个资深。我在公司做的就是高级架构师但是做的就是架构师的工作,给个高架的职位是老板对你安慰,而且他还不让你写代码,如果不做开发时间长了很多东西就会逐渐流失落后。
我们来说说项目管理类的职位会用到哪些工具,最基础的就是Word和Excel,不要小看这两样,他为项目管理提供了最基础的数据,每份统一了格式的文档,每份精心设计的Excel都是项目的重要成果,包括各个项目周报,个人周报等等。然后就是专门用于项目管理的软件如MS Project。软件生产是智力密集型的活动,其产品无物理外形,生产状态也不可见,因而难于检查和驾驭。如何管理项目的计划、调度、通信、费用估算、资源分配以及质量控制等。软件项目管理工具就是要使这种生产过程成为可见、可控的过程。使用它能帮助进行成本估算、作业调度和任务分配,并制定出成本较低、风险较小的项目开发计划;同时能设法在预计工期和经费之内适当调整项目的安排,以节省时间和人力,从而对软件生产的各个环节进行严格、科学的管理,使项目开发活动获得最佳的进程。 使用专业的项目管理工具不仅有效的帮助项目管理,而且它还能规范你的管理过程。
QA工程师
如果一个软件企业正在实施CMMI或者已经建立了研发管理体系都会在项目组中加入一名QA工程师。在我的工作经验中只有到达软件企业的公司,组织规模在300人以上,才可能去实施CMMI,就算去实施CMMI,最后也只不过是为了拿个CMMI的证书,QA工程师很多时候都是为了CMMI才存在的。不知道是咱们的软件公司不重视研发管理还是CMM和CMMI不适用于中国人。CMMI标准文件说,QA是高级经理的ears and eyes。研发人员眼中的QA往往也是警察,QA的作在于发现和报告项目的问题。一个合格的QA在项目中会充当三种角色:
角色1-老师,具备学习和培训的能力。
角色2-医生,通过度量数据对项目过程进行诊断,帮助分析原因,开处方。
角色3-警察,以企业流程为依据,但要告诉大家流程背后的原因;如果和项目组针对某些问题意见相左,可以直接汇报高层。
但在我的工作经验中却没有看到过这样的QA,虽然我的项目组也有为QA,但是主要为了实施CMMI而设置的,她是一位女性,不参与我们的讨论,只是默默地看着听着,然后回去写她的文档,只有在项目组研究去哪里吃饭庆祝阶段成果时就是看到她积极踊跃发言。
这些年前后带过很多新人,仔细算下来估计有近100个以上了,每年大概带10人左右,把带新人的感受写下来供大家参考借鉴,由于我从来没有在一流牛B软件公司呆过,只能说是中下游的草民软件公司的带人经验了,总的来说,还算是规范的专业软件公司了虽然与世界知名的软件公司无法攀比。
01.不要指望成长过快、迅速见效
首先不要指望新人成长太快、不要总是跟自己现在的能力比,我们毕竟是写程序有10年8年了,他们还刚毕业、刚进入这个行业,有很多应该知道的常识都不知道,当然也不知道天高地厚,想想我们自己10年前是什么水平?每个人的提高成长都需要漫长的、弯曲的折腾着前进的漫长路程,拔苗助长是未必都能见效的、大跃进理论上是可行的实际是残酷的,脚踏实地一步一个脚印才是真,再说了,牛人还会来我们公司打工嘛?早被牛公司盯上录用了。
02.嘴巴讲没用、要真刀真枪实际例子
不要以为给他们把事情都讲明白了、详细要求都提好了,他们就可以做出来了,他们不是老员工、不是高级程序员,要在纸上给他们画清楚页面详细效果,每项注意事项都记录好,不光这些弄好了就可以了,还要给他们找个实实在在的参考的例子程序复制粘贴,他们会更容易上手完成工作任务,说白了你自己做比他们还快,但是他们总需要一个成长的过程。不可能是一步就博士毕业了,还得从幼儿园、小学、初中一步步进步,他们毕竟是实习生、新员工。
03.要靠培训、规范、公司的规章制度来约束
不要指望那些简单的道理他们都懂,你要把他们当成傻瓜,给他们仔细的上基础技术知识培训、例如管理方面的常识,然后让他们每个人都讲解一遍,确认他们真的懂了,公司的行政管理上的规章制度、薪资制度等都最好培训一下,我们部门是每个人把公司的规章制度打印出来读一遍,然后签字,表明他们都已经了解了这些,当然我们更以技术上的培训为主。
04.每天安排明确的工作任务、完成的工作任务及时检查验收
时间是宝贵的,活了一天就是少了一天生命,而且是很多人浪费一天,那对公司来说更是残忍的事情,每天都需要布置明确的工作任务,每次布置任务后,你不要指望最乐观的效果,要指望最糟糕的情况,就是你自己动手做绝对比他么快5倍以上,但是还是要让他们自己折腾折腾,给他们及时检查程序、修改程序,然后让他们做纪录,给他们讲解为什么要这么写才对。
工作任务越细腻越好,你总不能给一个新来的,3个月,做一个进销存,那是不实际的,或者1个月做一个OA出来,若真的这么好管理,那公司养你干啥,早让新人来替换你的工作岗位了,新任更听话、成本更低。
没有检查验收通过的工作,都可以视为0,因为很可能全盘被推倒,或者帮的是倒忙,开发人员往往说开发了90%了,接着还有10%的工作,但是后来发现,这个10%才是真正的90%,因为后面花了9倍的工作时间,才真正把这项任务完成,所以我从来不相信开发人员报的进度,我只会当个参考值,真正检查验收过的,才是真正的进度。
我已经做了三年,学校做过,公司做过。确实遇到大家讨论过的各种情况,杂,累,烦。
但这个不能怪公司/职位,我觉得该调整好自己的位置和心态。
一个正规的公司,一般都有岗位说明书,有相应的义务和权利。但是网管这个职位刚刚出现,很新,现在对它的定位也没到明确的一步,大家/公司内的同事对它也没有什么认识。好象基本是和电/电脑有关的都得负责。产生那些累杂的后果是因为 职责没有明确和执行,同事对网管的职责根本不清楚。
网管的职责:公司信息化规划与实施、维护公司网络稳定、服务器的管理和客户端技术支持、资产的管理以及公司要求的相关IT管理规定的执行、IT培训。
目前看到大多人的工作都是怎么对客户处理怎么杂的事情,其实这些根本就不是正规IT管理员或网管该做的,大家说的那些故障都是员工自己该掌握,属于基本IT技能;如果公司内部比较特殊/复杂,公司应该有相应的培训让员工熟练掌握。
IT/网管/系统管理员 主要的内容是负责 系统的整体稳定,做好IT培训,起到前期的预防维护和IT相关规定的严格执行为主;如果这些做好了根本不会常出现大大小小的问题。
网线掉了/配置个OUTLOOK/重新下/电脑迁移安装/这些是个读过书的人,经过简单培训1-2次,不可能不会掌握。如果这些都做不了,那打字都不需要打了!
想想看,英语读了那么多6级都过了,基本两个英语单词都用不到,还那么卖命学,没有1个老外在身边,还要表现下自己的英语单词。每天都要接触的电脑,连安装QQ都不会装,是网管/IT的职责范围么?
很多公司内的网管/IT/系统管理员,之所以大部分的工作都浪费在这个方面,还有原因是网管是服务性职位,而且大多年轻人刚进入职业生涯的,没有多少地位,怕得罪人,容易被人使唤。
其实都是心理的偏差,造成惹上很多根本就不是职责范围内的任务。
可以负责任说:基础的IT技能自己搞定,实在搞不定协助指导您,真的搞不定,请打开远程管理服务,我帮您搞定! 如果这次故障是他自己违反规定乱装东西造成的,通知老板/行政下过失书,看下次他是大爷,还是您大爷。
移动位置,搬电脑根本不是网管该干的事情--想想?报销发票,是不是出纳到您座位上,拿您的发票,再给您到领导那签字后将现金给您呢?好象没有会计是这样做事情的。
系统故障,第一个要看是不是违反规定造成的!-- 想想?如果上班没打卡/迟到了,是不是该通知行政取消打卡/到11点才算迟到呢?
系统故障,第二个要看是不是自己该会,该掌握的电脑基本技能!-- 想想?如果有员工打字都不会,让您给他打?他敢向老板/行政投诉您么?如果老板不理解,那您就不要干了,这个公司员工素质太差,大学都没念过。
电脑主板坏了/硬盘烧了/鼠标坏了,叫 电脑公司来保修!叫快递送到维修站-- 网管不是电工,不会修;(很多网管都是自己惹上的货,总觉得自己修下才能显示自己的技术高超,但是告诉您,修理后,别人就当您电工! 也可以肯定地说,能修理个主板装个风扇,是小学生都会的)
在公司做IT管理/系统管理/网管,第一要学会做人,2要学会做事 ,3要学会怎么将系统当着项目去做。
靠玩几个技术表现高超没意思的。任何工作都是公司的一个螺丝钉,都没意思,但是当着一个项目去规划,去管理,去维护,就是小小事业了。也是企业信息化真正的意义所在。
公司业务的信息化规划并实施,公司的IT系统安全,IT系统管理维护,IT系统的行政管理。
我始终认为:做IT,不是做技术,是做管理,是项目管理做IT,不是简单的维护,是公司业务发展的支持和公司信息化的主导(没有人比您更专业)
做IT是也工作,也是一个螺丝钉,您不想做一个螺丝钉就去创业做老板吧~~~做IT的人也是职业人,工作职责,待遇,地位,得和其他工作一样,要靠自己奋斗争取自身的利益。
问:我去年大学毕业(专业是通信工程), 觉得自己虚度了光阴,而且自己性格有点内向,觉得该从事技术,所以我毅然放弃了应届毕业生的优势,找了家培训机构去学习java和。net开发。经过一年的学习,发现自己对技术不是特别感兴趣,没有专研精神,觉得自己应该很难在技术上达到一个很高的高度。因此,我想从事与业务相关的工作,但是又觉得自己学了那么久技术,放弃又太可惜了。而且,我还不知道自己在销售这方面能不能做好。这让自己更加迷茫了!我该如何在两者中取得一个平衡,又该怎样选择工作?我已输在了起点,不想在终点时还是落后别人一大截。未来我想好好规划,好好度过,不管是为了自己,为了父母,还是社会。我可以忍受平穷,但是不能容忍自己平庸。
前方的路到底该怎么走?自己花费了那么多时间与金钱是否值得?未来自己能否达到自己想象的高度?我完全迷失了。在有几个月我就要培训完了,将要再次找工作,再次面临抉择。所以我恳切的想知道老师的建议,非常感谢。
回答:
我先讲个故事吧,是古代的一个墓志铭:
吾表兄。
年四十余,始从文。
三年不中。
遂习武。
校场发一矢,中鼓吏。
逐之出。
改学医。
自撰一良方,服之,卒。
好笑不?这个人可以说是一类人的代表,就是做事情缺乏恒心和毅力,我们说做事情靠天分,但是,我个人的理解,恒心和毅力也是必要的,我还记得小时候学习的一篇课文,讲一个小猫去钓鱼,结果它一会儿捉蜻蜓,一会儿捉蝴蝶,总是钓不到鱼。不知道你看过这篇课文没有?
我看了你的信,你说大学没有学习好,虚度了光阴,现在培训班,觉得自己缺乏钻研(注意,不是专研)精神,不想做技术了,想做业务,我根据你的文字,理解这个业务就是销售工作。但是又觉得自己这么多年在技术上投入过多,舍不得。
这里我说几点:
1、不管选择技术和销售,其实都是可以的,这个世界有很多行业,每个行业都有自己的英雄人物,你选择任何一行都有道理,我支持你选择的态度。
2、不管是技术还是销售,其实都需要钻研精神的,技术上,可能针对一个问题,钻半天,销售上,针对一个客户,也需要不断钻研,去仔细研究客户这个人,他喜欢什么,不喜欢什么,然后投其所好,但是,提醒你,销售上,不会针对每个客户都有一本教科书,因此,钻研起来更加看天分,很多时候,你怎么了解一个客户的喜好,都是一个大难题。
3、感觉你想转行的目的不明确,有畏难情绪,好像主要是因为技术太难,就不想学,想转行,我认为这不好。任何一个行业都有风光的一面,也有艰辛的一面,你因为害怕技术艰辛,就跑去转行,那你想想,哪天感到销售艰辛,又转行,是不是就变成上面的我表兄了?那一辈子是不是就事事无成?你想过这种生活吗?
4、但另外一方面,你觉得自己技术投入很多,选择的时候舍不得,我也不赞同,男人大丈夫,死就死了,怕个P啊,选择讲究的是决断,一旦选定,虽千万人吾往矣,做事情不要瞻前顾后,患得患失。
5、永远不要因为怕什么而改变自己的生活,你选择职业,就是选择一种生活方式,但是,如果你是因为怕技术上很苦,那么,很不幸,我得告诉你,你到销售上会更苦.销售是一门很辛苦的行业,我做过一点点,这么说吧,以常规的学生思维,恐怕很难坚持下来。
得其精而忘其粗,在其内而忘其外;见其所见,不见其所不见,视其所视,而遗其所不视--《列子说符》
1.语言只是工具
我曾经是非常执着的开发人员。我有连续几天几夜做Coding的经历,也曾经为了一个技术问题耗上三、四个星期而导致项目一再延迟,还曾经为了一个实现细节与项目相关的人员逐一争论。
我也曾经像大多数开发人员一样热衷于争论语言之间孰优孰劣。我在论坛上写过一个简介,其中个人特长是擅长TPascal、Delphi、TASM系列语言,痛恨C/C++.我至今保留这段文字,因为那的确是真实的经历。
如今我已经不再专注于语言,正如我在第一章中写到的一样:成天讨论这门语言好,或者那门语言不好的人,是可悲的。
然而就在我写这段文字之前的一年,我还是无止尽地深入语言细节,深入操作系统细节,以及深入开发的细节。
就在2004年3月间,我接受一个朋友的邀请,去北京做一个专题培训。我用了近两周的时间,做了50页的幻灯,全面讲述Delphi和Delphi.NET.然而在临行前的一晚,我辗转反侧,思考着一个问题:我究竟做了些什么?或者说,我究竟想告诉学员些什么?
凌晨5点,我在幻灯的末页后插入了一张幻灯,标题是语言只是工具,而幻灯的内容是一张图。这是与培训完全无关的一张幻灯。然而,这是自1997年我接触到管理,以及从1998年我接触到工程以来,第一次正视软件工程这四个字。我第一次看清楚代码、方法、过程、工程与组织的关系!
对于一个程序员,或者以程序员自命的人来说,看清楚这一切的第一步,竟是一句语言只是工具!
猿之于为人,学会制作和使用工具是最重要的标志。因而我不知道语言只是工具这句话,究竟是对语言的膜拜,还是漠视。然而从那一刻开始,我才真正地知道工程。
2.程序
在我的那个图中,在最内层的环里,是程序=算法+结构.这是编程的本源定义,也是原始的状态。与代码相关的任何工作,最终仍旧会落足于这样的一条规则。
编程的精义于此。从有开发行为开始,它就存在。挖山不止的愚公在数千年前就在用类似的行为做编程实践,而几十万年前的智人,也在循环与分支所构成的逻辑中打转。
3.方法
推动这种逻辑向前发展的是方法和方法论.长期编程实践,自然的推演与总结,必须沉淀为某种(软件开发)方法,于是过程出现了,对象出现了,相关的方法论也就出现了。
这是实践的成果。方法不是某个人或者某个组织创造的。瓜熟而蒂落,实践积累达到一定的程度,就算微软不提出某个方法,IBM也会提出这个方法。即便他们都不提出,可能你自己已经在使用这个方法了。
方法并不神秘,因为它就是你今天正在做的、从事的和实现的。正如模式是一种方法,而模式就是你昨天书写代码的那个行为。只不过,GoF归纳、抽取、提升了这些行为的内在规律。你看不到你做事的行为,也就不能理解模式作为一种方法的价值。所以大师们众口一词:模式需要一定的编程经验才能理解。
同理,理解过程也需要编程经验,理解对象也需要编程经验,理解MDA与SOA还是需要编程经验。
这可能就发生在你回顾上一行精彩的代码,或者上一个失败的项目的一瞬息。经验来源于回顾、理解与分析,而不是你将要写的下一行代码。
有人在寺院扫了一辈子的落叶而得道,也有人因为一句话而得道。
GoF因为无数次的代码回顾而得道。
4.过程
过程随生工程出现。过程解决的是工程中角色间的关系问题。
过程说的是很多人(团队)如何组织在一起进行开发。它首先把工程中的各个环节分解出来。这样,有了环节,就有了角色;有了角色,就有了沟通。因此过程中的问题,就是角色、沟通和环节的问题。
哪些环节更重要取决于具体的编程行为,也就是具体的项目。
例如产品开发的周期可以一再拖延,因为对产品来说,更重要的是其品质和技术壁垒。因此你可以看到暴雪公司的游戏总是一再跳票,而它从来都是将大量玩家测试和开发人员的个性特征放在第一位。相类同的,DOOM与QUAKE系列的灵魂就是在游戏引擎的开发和设计上。
如果用这样的模式去做项目,可能软件公司没死掉,工程需求方也被拖死。试问你有看见客户因为你对技术的远景描述而憧憬吗?不,你只会看到他们因为项目的一再延迟而懊恼,而沮丧,或暴怒。
憧憬这种事情,只会发生在那些铁杆玩家身上。
分不清玩家与客户的区别,对项目经理来说,是可怕的。这将意味着他不能清楚地知道哪个环节更加重要。
角色的确定,以及角色间的沟通问题,在项目过程中同样重要。工程组织是否合理,相互协作是否紧密,是这个项目成功的保障。
合作无间通常是流于书面报告中的措辞。真正的无间,应当是沟通的结果。然而UML,则可能是你与客户,以及项目经理与开发人员被离间的第一因素。
以上《软件业职位总结1 销售类[1]》一文,由编辑精心撰写而成,希望对您的职业规划有所帮助,更多精彩请访问“职业规划总结”专题!
相关文章
最新更新