在程序员圈子里面,外包程序员似乎永远处于一个尴尬的角色,如果你说他们不是程序员吧,他们也是程序员。应该说是外包这个词比较尴尬吧。赶着和正式工一样的伙,待遇缺天差地别,没有福利,逢年过节也没有礼品啥的。平常也不好去融进正式工的圈子。工作中都是一个人。
经常会有朋友问我:面试通过了·,但是在纠结到底该不该去外包,看网上都在说“千外不要去外包”搞得自己也很纠结。我只能说
如果能力不够,就不要眼高手低,可以接受外包,但不要一辈子都是外包,不要心安理得,要把“外包”作为一种跳板。其实现在就业还是比较艰难的,失业的被裁裁的比比皆是。所以在没有其他更好的选择的时候,去外包也不是不可。当然有不好的外包,就像有垃圾的大学一样,进去后只会浪费青春,浪费精力。一旦进入这种只会压榨劳动力,却无法成长的外包,就是跳进了火坑。
就我自身而已,大学学的是计算机专业,毕业的时候,对于找工作比较迷茫,也不知道当时怎么想的,一头就扎进了一家外包公司,一干就是4年。现在终于跳槽到了互联网公司了,我想说的是,只要自身技术够硬,外不外包都没关系。
刚开始竟然外包,被派遣到大大小小的公司。但是我不会想着这个项目结束了就可以了,会不断通过自身的优势在不同的环境中去学习他们的优势,也可以多多学习,这个习惯也让我的简历好看了不少。后来被外包派遣到了华为,项目一完成就跳槽到了华为。现在也是正式员工了
告诉大家我的经历就是想要说明,机会都是自己去选择的,大家纠结去外包的原因有以下几点
1.缺乏长期的技术积累,掌握不到核心技术。一般雇主公司比较核心或者底层的东西是不会让外包人员作的。外包人员一般做的都是“边角料”。
2.缺乏长期的公司积累。在一个普通软件公司里面,资历是一个比较重要的指标。一个程序员在公司呆的时间越长,对公司的贡献越大。而在外包公司基本没有什么积累。最多的收益应该是项目经验了。
3.在雇主公司内部会受到“歧视”。不用说,一般雇主公司的人员挑大梁,外包人员也就做些边角料的工作,或者雇主公司的人员作需求和设计,外包人员编写代码。
4.项目做完后,会马上失业。当然了,雇主公司都把做项目的酬劳付给外包公司了。外包公司项目完成后,就没有钱进帐了,难道他们会把你养的白白胖胖的?
如果你现在在外包公司,多学习争取把自己的技术提升上来,你还要明确自己的职业规划,这样你才有跳槽的资本,才有跟别人竞争的机会。
并不是所有的正式员工都是趾高气扬的,瞧不起外包的;有些挺古道热肠的,愿意沟通,愿意交流,也愿意做朋友,我就遇到过这样的同事。所以,我对外包没有一点偏见。
想要转正,我觉得有必要做好下面几点:
- 努力工作。不管是黑猫还是白猫,总要逮住老鼠。如果正式员工解决不了的问题,外包员工却可以解决,我相信人生很快就会逆袭,对吧?
- 持续学习。一家公司,不管是好是坏,既然存在就有它的价值,我觉得不能非黑即白的下定义,外包就一定学习不到技术,公司用的什么技术很重要,更重要的是你愿意学习什么样的技术。
- 时间紧?不是问题,当前的大环境下,每个项目的时间都赶的挺紧的;技术烂,不是问题,我们可以学习新鲜的技术来对旧的代码进行重构。
- 如果抱怨说既没有时间,又没有精力可以学习,那不管是正式员工还是外包,都是没有前途的。
投资自己。不管处于什么样的环境下,哪怕糟糕到极限,也不要忘记投资自己。在人类历史上,有过特别黑暗的阶段,不仅物质上匮乏,精神上也匮乏,但总有一小撮人,他们坚持投资自己,那机会来的时候,出现转机的时候,他们就是那群熠熠生辉、光芒万丈的人。
linux系统是主要的服务端操作系统,也是从事IT岗位的大部分人员必须具备的基本技术之一。作为软件测试工程师,我们常常需要在服务器端查看日志,从而定位问题的源头。
linux系统基本知识:多用户,多任务,发行版本等
常见 linux操作命令:日志查看,文件压缩、解压,用户管理,文件权限等
会部署和配置基本的应用jdk、 mysql、 tomcat
docker安装使用
编写基本的 shell RAD本
远程终端工具使用: shell, xftps等
数据库作为软件系统必备的应用系统,在诸如接口测试、性能测试等等过程中往往需要操作数据库,验证数据正确性完整性,都离不开数据库的增删改查操作,在项目部署阶段数据库还需要配合项目部署。在性能测试、接口自动化测试中都需要数据库的支撑。
数据库基本概念
关系型数据库
MYSQL基本的增改查语句,存储过程
MYSQL复杂查询、多表查询
MYSQL索引及事务相关概念
数据库客户端工具使用:如 Navicat
4、软件测试功底技术——编程语言
推荐没有编程基础的朋友可以学习Python语言
Python语言的学习内容包含以下知识点:
Python基础:Python语言特点、运行环境、基本语法、代码风格、示例程序
数据结构:
接口测试本质也是功能测试的一种,通过脚本或者工具,模拟客户端对服务端接口进行调用。因为是从接口层测试,所以能更早的发现问题,从而提高测试效率,降低修复成本。
http/httpst协议学习
常见请求方法学习:GET、POST
cookie和 session学习
接口的基本概念
接口文档认识
接口测试用例编写
接口测试工具使用:postman、Jmeter、SoapUl
越来越多的项目和系统通过移动端来提供服务,移动端的软件质量越来越重要,App自动化测试已经成为自动化测试的重要内容。借助Appium,使得App自动化测试和Web自动化测试有很多相通之处,不过作为测试工程师,依然需要掌握移动端应用的工具和特性。
Appium移动测试环境搭建:Appium ServerAppium和 Desktop、 Android运行环境搭建、模拟器安装和连接、真机设备调试模式、adb、 weditor、 UiAutomator22、 Monkey
Appium元素定位:原生应用元素定位、纯web应用元素定位、混合应用元素定位
Appium元素交互:等待元素加载,元素的基本属性和方法、滑动、拖动、缩放操作、下拉选择操作、 toast消息处理、常见控件分析、常见布局分析
封装测试框架:集成Appium、adb等工具、预定义异常处理、记录Appium日志、屏幕截图、打造多用途测试框架
持续集成和持续测试是一个在迭代中构建、测试产品并修复Bug的过程。它有助于团队在开发阶段的初期发现缺陷,这时的缺陷通常相对不那么复杂,并且更容易被解决。通过持续集成和持续测试,可以尽早地将错误风险降至最低,并加快交付更好质量的软件。
版本控制Git:背景介绍、环境部署、工作区、暂存区和提交区、分支创建与合并、解决冲突、标签、 config与别名、本地仓与远程仓、 GitHub与码云
持续集成 Jenkins:背景介绍、环境部署、文件结构、远程仓库与私服、ja包依赖、插件管理
容器Docker:了解 Dockers的镜像、仓库、容器、 Docker Engine和架构图、网络设置、数据持久化