软件求职指导

发布时间:2022-08-19 浏览( 25724 )
目录
  1. 一、软件技术支持工程师
    1. 什么是软件技术支持工程师?
    2. 软件技术支持工程师的工作内容:
    3. 软件技术支持工程师需要具备的技能:
  2. 二、测试工程师
    1. 什么是软件测试工程师?
    2. 软件测试工程师的工作内容
    3. 软件测试工程师需要具备的技能
  3. 三、软件开发工程师
    1. 什么是软件开发工程师
    2. 软件开发工程师工作内容
    3. 技术要求
    4. 业务能力要求
    5. 素质和其他要求
  4. 软件行业简历注意事项

前言:软件业的发展关系到一个国家的政治和未来,软件产业将成为21世纪拥有最大产业规模和最具广阔前景的新兴产业之一。而我国目前的国民经济信息化建设为软件和信息服务业带来良好的发展机遇;在人才需求方面,由于IT技术在通信、医疗、教育等各个方面的全面发展促进了各个软件开发方向的发展,从技术支持、开发到测试对人才的需求旺盛。

一、软件技术支持工程师

什么是软件技术支持工程师?

软件技术支持工程师主要是在软件方向从事售前或售后技术维护、应用培训、升级管理、解决投诉,从而提升客户满意度,扩大用户群体对自有品牌的良好口碑。

软件技术支持工程师的工作内容:

软件技术支持工程师的工作内容分为2部分,分别是技术支持和软件维护。其中技术支持部分包括:

  • 对客户端操作系统及常用应用软件进行调试、管理、更新、升级、故障检测及排除;
  • 接听技术支持电话,尽快判断故障并进行排除;
  • 负责公司客户的呼叫中心系统的安装与维护;
  • 负责所有IT基础设施的支持及维护,确保IT系统的平稳运行;
  • 负责实施后技术保障,解决一般性技术问题,提供技术咨询

软件维护部分包括:

  • 对计算机的软件系统进行必要的检查、维护;承担软件售前支持与用户安装实施;
  • 对建立的软件库进行更新;
  • 病毒防护系统管理:
  • 安装、管理、维护客户端计算机的病毒防护系统;
  • 定期对服务器上的病毒库进行更新,培训用户计算机病毒的防护知识以及防病毒软件的使用;
  • 建立用户的防病毒意识,升级、更新、优化用户已有的病毒防治系统;
  • 定期提供病毒检测、告警及最新预防措施,提供紧急病毒故障处理服务,对突发的新计算机病毒进行及时响应。
  • 数据、文档整理及其他:
  • 编写产品和技术问题报告,负责技术方案、技术类文档的编写工作。
  • 执行产品推广活动负责公司内部员工的技术培训,提高销售人员的技术水平。

软件技术支持工程师需要具备的技能:

  • 大学专科以上学历,计算机及相关专业。
  • 熟悉计算机软硬件和网络知识、SQL SERVER数据库、常用工具软件,掌握一般的编程知识。
  • 具有良好的客户服务意识和良好的沟通能力,耐心细致,能吃苦。

二、测试工程师

什么是软件测试工程师?

软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性(Robustness),写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时纠错及时更正,确保产品的正常运作。

软件测试工程师的工作内容

软件测试工程师简单的说是软件开发过程中的质量检测者和保障者,负责软件质量的把关工作。软件测试工程师具体工作有:

  • 使用各种测试技术和方法来测试和发现软件中存在的软件缺陷。
  • 测试工作需要贯穿整个软件开发生命周期。完整的软件测试工作包括单元测试、集成测试、确认测试和系统测试工作。单元测试工作主要在编码阶段完成,由开发人员和软件测试工程师共同完成,其主要依据是详细测试。集成测试的主要工作测试软件模块之间的接口是否正确实现,基本依据是软件体系结构设计。确认测试和系统测试是在软件开发完成后,验证软件的功能与需求的一致性、验证软件在相应的硬件条件下的系统功能是否满足用户需求,其主要依据是用户需求。
  • 测试人员将发现的缺陷编写成正式的缺陷报告,提交给开发人员进行缺陷的确认和修复。缺陷报告编写最主要的要求是保证缺陷的重现。
  • 测试人员需要分析软件质量。在测试完成后,测试人员需要根据测试结果来分析软件质量,包括缺陷率、缺陷分布、缺陷修复趋势等。给出软件各种质量特性包括有功能性、可靠性、易用性、安全性、时间与资源特性等的具体度量。最后给出一个软件是否可以发布或提交用户使用的结论。
  • 测试过程中,为了更好地组织与实施测试工作,测试负责人需要制定测试计划,包括有测试资源、测试进度、测试策略、测试方法、测试工具、测试风险等。
  • 测试人员为了更好更有效地进行测试,保证测试工作质量,需要在执行测试工作之前首先需要设计测试用例,形成测试用例报告。
  • 为了提高工作效率或提高测试水平,测试工作需要引进自动化测试工具,测试人员需要学会使用自动化测试工具,编写测试脚本,进行性能测试等。

软件测试工程师需要具备的技能

软件测试工程师需要具备哪些技能呢?首先,计算机领域的专业技能是每个软件测试工程师都应该“熟练掌握”,它包含“测试专业技能”、“软件编程技能”、“网络、操作系统、数据库、中间件知识”三个方面。在专业技能之外,“深入地”了解行业知识是测试人员做好测试工作的又一个“前提条件”。测试工作是“枯燥的”,“专心、细心、耐心、责任心、自信心”这“五心”的具备,才能让你“更容易”做好测试工作。

计算机专业技能。 计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包含三个方面:

测试专业技能。测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。

软件编程技能。“软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据资深测试工程师的经验,测试工程师至少应该掌握Java、C#、C之类的一门语言以及相应的开发工具。

网络、操作系统、数据库、中间件等知识。与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。

在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。

操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。

数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、MSSqlserver、Oracle等常见数据库的使用。

行业知识。 行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。行业知识与工作经验有一定关系,通过时间即可以完成积累。

个人素养。 作为一名优秀的测试工程师,首先要对测试工作有兴趣:测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”。

  1. 专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。
  2. 细心:主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。
  3. 耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。
  4. 责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来完成,很可能引起非常严重的后果。
  5. 自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。

“五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果——开发出来的产品。

三、软件开发工程师

什么是软件开发工程师

软件开发工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位。这些岗位的分工不同,职位和/或级别不同,但工作内容都是与软件开发生产相关的。软件开发工程师是IT行业需求量最大的职位。软件开发工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术、C#、C/SB/S程序开发,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEBSERVICE、STRUTS等前沿技术。

软件开发工程师工作内容

  • 指导程序员工作。
  • 参与软件工程系统的设计、开发、测试等过程;
  • 编写关键模块、关键算法的程序,编写开发文档,配合测试维护和完善相应的程序。
  • 解决系统疑难问题和性能问题,独自或者指导别人解决开发过程中遇见的各种问题。
  • 协调各个程序员的工作,并能与其它软件工程师协作工作。
  • 软件开发工程师需要具备的技能

作为一名软件开发工程师,在技术方面,你需要“熟练掌握”两到三种开发工具,“熟知”数据库,对操作系统“有一定了解”,最好懂得“网络协议TCP/IP”;在业务能力方面,你要具有“规范化”、“标准化”的编码能力和“较强”的动手解决实际问题的能力,持续的学习能力能让你“与时俱进”,“较强”的英语阅读和写作能力对于你的工作和学习“极有帮助”;在素质和其他能力方面,“良好”的团队精神和沟通能力都是“必备”的能力,你要“踏实敬业”、“认真负责”、“耐心细致”地完成你的工作,应该“善于”吸取教训和总结经验,最后,“强烈的好奇心”是你不断前进的动力源泉!

技术要求

  1. 熟练掌握开发工具。做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
  2. 熟知数据库。为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
  3. 对操作系统有一定的了解。当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
  4. 懂得网络协议TCP/IP。在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEBServices(网络服务器),再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
  5. 明白DCOM/CORBA/XML/WEBServices存在的意义。随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。

不要将软件工程与CMM(能力成熟度模型)分开。现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。

业务能力要求

  • 具有规范化、标准化的编码能力。
  • 较强的动手能力和解决实际问题的能力。软件开发时理论和实践结合的过程。
  • 持续的学习能力,掌握最新的IT实用技术。软件业是一个不断变化和创新的行业,面对层出不穷的新技术,软件工程师应具有较强的学习能力、需求理解能力和对新技术比较敏感,在行业领域要与时俱进,适应软件的开发工具和环境,不断适应客户的需求变化。
  • 较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与世界各地编程高手交流、发布帮助请求同样离不开英文。作为基础软件工程师,具有一定的英语基础对于自身的学习和工作极有帮助。

素质和其他要求

  • 具有良好的团队协作能力。对于一个集体、一个公司甚至是一个国家,团队精神都是非常关键性的,尤其是在软件开发行业。每个人都必须在编好自己程序的同时,估计整个项目的质量和工期,为其他同伴创造条件。没有高度统一的团队精神,没有全部参与者的默契与分工合作,这项工作是根本不可能完成的。
  • 具有良好的沟通能力,你必须善于把自己对项目的理解以及在开发过程中的问题告诉大家、告诉用户,这是基本的素质,也是必备的能力。
  • 踏实敬业、认真负责、耐心细致的能力。心静才能发现问题,否则遇到开发和测试问题就会越改越乱。必须得坚定信念,不怕麻烦,从细节到全局考虑周全,不然软件产品就会漏洞百出。
  • 坚持守信、正直的原则。一个人品不完善的人是不可能成为一个真正有所作为的人。
  • 遵守职业道德规范,树立正确的技能观。决不能利用自己的技能去从事危害公众利益的活动,包括构造虚假信息和不良内容、制造电脑病毒、参与盗版活动、黑客活动等。具有良好的工作责任性,不能以追求个人利益为目的,不随意向他人泄露工作和客户机密。
  • 善于吸取教训和总结经验,做到时时都有新长进。
  • 拥有强烈的好奇心。什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。

软件行业简历注意事项

应聘软件行业工程师的人很多,有些人的简历让企业HR看了一眼就丢到垃圾桶,有些人的简历却能给HR留下深刻的印象。那么,应聘软件工程师个人简历怎么写呢?下面一起来探讨交流一下。

首先,软件行业很看重求职者的本身所掌握的技术,所以在谈到你做过的技术时,应该提到用的程序语言、你的个人贡献和产品细节。有时人把过去的经验在简历上一笔带过,比如说:“在三人小组里,为电子邮件软件写了些 features.”这是远远不够的,看简历的人希望了解你做的工作的难度和对本公司有多少联系,所以你最好写的具体一些。简历需突出自己的经验。详细描写自己的项目经验,尤其在项目测试工作中遇到关于技术或技能问题,你是如何通过怎样的技术/技能解决这些难题!这个一般的简历中很少看见,可以简单的加进去,作为你简历的亮点。譬如:“用 C++ 语言写了网络电子邮件的自动 backups.在三人小组里,专门负责设计和写储存服务器。从设计开始, 一年后把这个功能 feature 的用户推到了三千。”也可以参照下面的写法:

其次,多讲事实, 少用形容词。看简历的人读你的简历时,需要做判断,所以在简历里需要事实和数目。如果你写“迅速的提高了软件的操作效率”,看简历的人很难判断你成就的难度。但如果你写“在3个星期内,把软件的操作效率提高了40%” 就好多了。

有些谦虚的朋友们不愿意把话说满,所以你也可以用这个办法。你如果说自己“突出”或“在项目上常常被请去救火”,听起来难免会有点骄傲。但你也可以用不能否认的事实来说明你的观点,如“公司项目组评这个产品为‘突出’”,或“加入了三个原本已落后于计划的项目小组,但经过努力和组员一起把它们都按时完成了。”

再次,你获得的奖、商业的荣誉或表扬、受用户欢迎的产品和你做过的有难度的业余项目都该包括在简历里。有些在学校期间能力很突出的同学,在写简历的时候不注意描述自己的荣誉或参加的项目,这是不可取的,要知道你的这些荣誉都是你的优势啊,可以让你的简历在众多简历中脱颖而出的。

有人问,业余时间做的项目可不可以写?只要你的项目有代表性能说明对你的能力,都该包括。
  

最后,要分清主次,删掉相比之下不起眼的成绩,以免冲淡更加突出的成绩。有的同学问,简历制作技巧是什么,写简历是不是写的越多越好?譬如某同学在甲公司做暑假实习生,他的描述如下:

  • 改善电子游戏的数值分类算法, 减少了内存要求 10%;
  • 用 Java 写了 3000 行用户界面程序;
  • 每周做两小时的人工测试;

你在申请软件工程师的职位时,前两点比较相关,第三点其实就不必写了。有时HR看到有的简历里会提到,“按时完成了任务,产品符合原计划规格”。但读简历的HR通常会认为这是理所当然的,而你把这些声明出来反而减弱简历的效果。

写一份简历不容易,但写好了也会带来成就感和好工作!所以,用心写一份好简历吧!