软件技术支持工程师主要是在软件方向从事售前或售后技术维护、应用培训、升级管理、解决投诉,从而提升客户满意度,扩大用户群体对自有品牌的良好口碑。
软件技术支持工程师的工作内容分为2部分,分别是技术支持和软件维护。其中技术支持部分包括:
软件维护部分包括:
软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性(Robustness),写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时纠错及时更正,确保产品的正常运作。
软件测试工程师简单的说是软件开发过程中的质量检测者和保障者,负责软件质量的把关工作。软件测试工程师具体工作有:
软件测试工程师需要具备哪些技能呢?首先,计算机领域的专业技能是每个软件测试工程师都应该“熟练掌握”,它包含“测试专业技能”、“软件编程技能”、“网络、操作系统、数据库、中间件知识”三个方面。在专业技能之外,“深入地”了解行业知识是测试人员做好测试工作的又一个“前提条件”。测试工作是“枯燥的”,“专心、细心、耐心、责任心、自信心”这“五心”的具备,才能让你“更容易”做好测试工作。
计算机专业技能。 计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包含三个方面:
测试专业技能。测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
软件编程技能。“软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据资深测试工程师的经验,测试工程师至少应该掌握Java、C#、C之类的一门语言以及相应的开发工具。
网络、操作系统、数据库、中间件等知识。与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。
在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。
操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。
数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、MSSqlserver、Oracle等常见数据库的使用。
行业知识。 行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。行业知识与工作经验有一定关系,通过时间即可以完成积累。
个人素养。 作为一名优秀的测试工程师,首先要对测试工作有兴趣:测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”。
“五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果——开发出来的产品。
软件开发工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位。这些岗位的分工不同,职位和/或级别不同,但工作内容都是与软件开发生产相关的。软件开发工程师是IT行业需求量最大的职位。软件开发工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术、C#、C/SB/S程序开发,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEBSERVICE、STRUTS等前沿技术。
作为一名软件开发工程师,在技术方面,你需要“熟练掌握”两到三种开发工具,“熟知”数据库,对操作系统“有一定了解”,最好懂得“网络协议TCP/IP”;在业务能力方面,你要具有“规范化”、“标准化”的编码能力和“较强”的动手解决实际问题的能力,持续的学习能力能让你“与时俱进”,“较强”的英语阅读和写作能力对于你的工作和学习“极有帮助”;在素质和其他能力方面,“良好”的团队精神和沟通能力都是“必备”的能力,你要“踏实敬业”、“认真负责”、“耐心细致”地完成你的工作,应该“善于”吸取教训和总结经验,最后,“强烈的好奇心”是你不断前进的动力源泉!
不要将软件工程与CMM(能力成熟度模型)分开。现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
应聘软件行业工程师的人很多,有些人的简历让企业HR看了一眼就丢到垃圾桶,有些人的简历却能给HR留下深刻的印象。那么,应聘软件工程师个人简历怎么写呢?下面一起来探讨交流一下。
首先,软件行业很看重求职者的本身所掌握的技术,所以在谈到你做过的技术时,应该提到用的程序语言、你的个人贡献和产品细节。有时人把过去的经验在简历上一笔带过,比如说:“在三人小组里,为电子邮件软件写了些 features.”这是远远不够的,看简历的人希望了解你做的工作的难度和对本公司有多少联系,所以你最好写的具体一些。简历需突出自己的经验。详细描写自己的项目经验,尤其在项目测试工作中遇到关于技术或技能问题,你是如何通过怎样的技术/技能解决这些难题!这个一般的简历中很少看见,可以简单的加进去,作为你简历的亮点。譬如:“用 C++ 语言写了网络电子邮件的自动 backups.在三人小组里,专门负责设计和写储存服务器。从设计开始, 一年后把这个功能 feature 的用户推到了三千。”也可以参照下面的写法:
其次,多讲事实, 少用形容词。看简历的人读你的简历时,需要做判断,所以在简历里需要事实和数目。如果你写“迅速的提高了软件的操作效率”,看简历的人很难判断你成就的难度。但如果你写“在3个星期内,把软件的操作效率提高了40%” 就好多了。
有些谦虚的朋友们不愿意把话说满,所以你也可以用这个办法。你如果说自己“突出”或“在项目上常常被请去救火”,听起来难免会有点骄傲。但你也可以用不能否认的事实来说明你的观点,如“公司项目组评这个产品为‘突出’”,或“加入了三个原本已落后于计划的项目小组,但经过努力和组员一起把它们都按时完成了。”
再次,你获得的奖、商业的荣誉或表扬、受用户欢迎的产品和你做过的有难度的业余项目都该包括在简历里。有些在学校期间能力很突出的同学,在写简历的时候不注意描述自己的荣誉或参加的项目,这是不可取的,要知道你的这些荣誉都是你的优势啊,可以让你的简历在众多简历中脱颖而出的。
有人问,业余时间做的项目可不可以写?只要你的项目有代表性能说明对你的能力,都该包括。
最后,要分清主次,删掉相比之下不起眼的成绩,以免冲淡更加突出的成绩。有的同学问,简历制作技巧是什么,写简历是不是写的越多越好?譬如某同学在甲公司做暑假实习生,他的描述如下:
你在申请软件工程师的职位时,前两点比较相关,第三点其实就不必写了。有时HR看到有的简历里会提到,“按时完成了任务,产品符合原计划规格”。但读简历的HR通常会认为这是理所当然的,而你把这些声明出来反而减弱简历的效果。
写一份简历不容易,但写好了也会带来成就感和好工作!所以,用心写一份好简历吧!