程序员、码农、996名词的首发代言人,曾经是我们这个世纪最大的幸运儿,因为目前这行业最吃香最赚钱。走在高科技园区的路上,如果对面走过来一位意气风发的20多岁小伙,眉目间精神饱满,但是头顶上却毛发稀疏甚至中央见秃,路人们会投去羡慕的眼神,看!那位小伙一定是996的程序员,而且是神级的,因为在996的码农行业,比的不是代码堆多少行,比的是谁的头发少,谁就是码农中的大神。
但是,你有没有发现,在996码农行业中,基本都是20多岁出头的青年为主力军,很少见到有40岁以上的码农吧?有人说了,40岁以上头顶见秃的中年人应该都是老板了呀。没错,在高淘汰率的程序员行业,还有一条不成文的潜规定:35岁以上的程序员基本上已是“明日黄花蝶也愁”。
35岁,成了众多程序员过不去的一道坎:被降薪,被调岗,被明升暗降,直至被“优化”。在程序员行业中,为什么会有这样的年龄规定?
都说40一枝花,35岁恐怕还是花骨朵,正值事业发展的高峰时期。可是在IT行业,很多的“35岁以上免谈”的条款似乎为花骨朵们浇了一盆凉水。事实是35岁以上的程序员是否被需要,不仅仅和企业研发项目知识密度有关,也和本身自己知识储备有关。
导致目前不少程序员在35岁以后不再从事研发工作的原因主要有以下几个方面:
第一:软件开发岗位的工作压力较大。程序员的工作压力普遍偏大,尤其是互联网公司更是如此,项目的开发周期短,加班更是家常便饭。
第二:程序员的知识结构更新速度快。程序员不仅要承受较大的工作压力,同时还面临知识结构更新的问题,这就导致程序员在忙碌的工作中还要抽出一定的时间来进行自主学习,这是对程序员工作能力和学习能力的双重考验。
第三:职位提升。由于我国在互联网领域发展速度非常快,导致人才培养速度明显跟不上行业的发展速度,所以不少程序员在35岁以后普遍走到了管理岗位上,以便于培养更多的专业开发人才,这也是一个比较常见的情况。
那么,已经进入了程序员这行后,该如何面对35岁的危机问题?
职业规划的思考
确定方向
做职业规划的目的是避免迷茫,而避免迷茫最有效的方式就是确定明确的方向和目标。
对于任何一个技术岗位,都有固定的两个方向:技术和管理。
管理:
测试方面的管理岗位主要是测试组长,测试经理(主管),测试总监。
对应的主要职能:
测试组长(2年左右):测试计划的制定和执行,带新员工。
测试经理(主管)(4,5年左右):测试计划的指定和执行,对产品质量进行评估,对产品发布给出建议。(signoff)
测试总监(10年以上):理解产品的商业目标,对整个产品线负责。负责资源的计划和分配,人员的招聘和更新。测试的技术和架构的选择,测试团队的发展,团队测试能力的提升。
技术:
功能测试:测试执行(大部分外包的小伙伴的阶段)->UI自动化测试。在这个阶段的小伙伴是体量最大的,也是最容易被替代的,所以大家都很有学习UI自动化的热情,感觉好像会自动化竞争力就有了很大的提升。很多公司招聘的时候也会要求,会UI自动化,会selenium或者QTP。而事实是,大部分情况下API自动化比UI自动化投入产出比高,很多公司招聘的时候写了要求会UI自动化,实际上招你进去还是点点点。这个要求只是公司为了提高测试门槛,找个稍微会点代码的。
性能测试:性能测试有点像C语言程序员,做的人相对功能测试少很多,市场需求也少很多,但是真正会的人还是很受欢迎的,待遇也普遍高于功能测试。
接口测试:测试执行->API自动化测试。接口测试很多是从功能测试转过来的,手动的有,自动化的也有。跟功能测试和性能测试都有很大的交叉部分,是大部分测试人员应该了解的一个部分。
安全测试(渗透测试):门槛较高,收入目前是最高的吧,市场需求量在慢慢增大。是有不错的技术基础的小伙伴可以考虑的方向。之前大部分公司都是交给了第三方专业的公司和评审工具,现在开始越来越多公司做自己的安全测试了。
测试开发:开发测试工具,偏开发类工作,我觉得性价比挺高,对代码质量要求没开发高,收入水平不比开发低。
TestOps:这是最近圈里的测试大大们在推的(主要是云层大大),类比devops,我粗浅的理解是把测试和运维的工作结合起来,让测试流程更顺畅和高效。我没有学习过这个课程,总之不明觉厉,但是又有点像之前TDD的理论啥的,高大上,但是落地的少,有些公司里甚难推动。毕竟测试人员话语权弱,地位低不是一天两天了。
接下来,是极有可能被问到的面试题预测:
1.自我介绍(应该算必问了)
主要考察你的综合素质、专业技能等。自我介绍都是要提前准备的,体现好自己的专业能力和学习能力,不要等到所有的内容都现场想。
2、平时怎么学习技术或专业知识
主要考察你的学习能力,学习的途径都可以说,比如看书,视频,论坛,博客等等。说得具体一点,说服力会直线上升。比如经常看的书有《Google 软件测试之道》《软件测试的艺术》…
3、说说你们公司的测试流程
主要考察是否真正熟悉软件测试,通常需要在标准的软件测试流程上加入一些公司的具体实施情况。
4、频繁更改需求你会怎么处理?线上出问题了你会怎么处理?
主要考察是否重度参与项目发布,以及能否从之前的工作中总结经验和教训。
5、自动化测试的覆盖率
主要考察是否有过自动化测试经验,以及对自动化测试的理解。
如果你没有足够的时间准备,优先这些极有可能问到的面试题是非常有必要的。但是测试相关的面试题非常非常广泛,基本上是不可能穷举的,在一次面试当中你需要准备的知识储备主要分为:
1,简历上提到的技术点,这些会优先问;
2,测试理论相关
3,网络知识相关
4,自动化测试相关
5,操作系统相关
6,编程语言相关
7,其他
下面分别列举一些常见面试题,你可以按照自己的时间安排多看看:
测试理论
1,如何编写测试计划?
2,常见的黑盒测试方法有哪些?并用其中一种方法举例
3,列举一些登录功能的测试点?
4,Web 测试和 app 测试的区别?
5,对于复现率不高的 bug 怎么处理?
6,什么是稳定性测试?
网络相关
1,三次握手和四次挥手是什么?
2,当在浏览器地址栏输入 url 后,会发生什么?
3,网络的 OSI 七层模型
4,GET 请求和 POST 请求的区别
5,session 和 token 的区别
6,session 和 cookie 的区别
7,常见的状态码有哪些?
自动化测试
1,什么是 PO 模式,为什么要使用它?
2,什么项目适合做自动化测试
3,影响 ui 自动化测试脚本运行的稳定性因素有哪些?
4,如果一个元素无法定位,你一般会考虑哪些方面的原因?
5,selenium 的工作原理
操作系统
1,什么是多进程
2,什么是多线程
3,如何终止进程
4,怎么查看 CPU 使用情况?
5,如何查看系统性能?
编程语言(Python)
1,unittest 和 pytest 用起来有什么不同?
2,什么是装饰器
3,实例方法和类方法的区别
4,字典和元组的区别
5,你用什么技术栈做自动化测试
其他
1.说一下,你对性能测试、负载测试、压力测试的理解
2.如何用 jmeter 找出某个接口的最大并发用户数?
3.冒泡排序的原理
4.什么是缓存雪崩?
5.什么是缓存穿透?
6.数据库索引有什么好处?
7.为什么会有分库分表
面试是对所掌握技能一次系统的检查,有的公司会非常全面,有的公司会比较片面,在面试之前,通常需要一段时间有针对性的突击,对自己掌握得不太牢靠的领域系统的复习。
合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
分享技术
下面是我整理的这份2022年最全的软件测试工程师发展方向知识架构体系图,会很明确的告诉你该往哪里努力:
这些资料,对于做软件测试的朋友来说应该是最全面最完整的备战仓库!你可以在公众号:豆子熊,获取上方网盘资源完整版及自动化资源详细解析。作为一位过来人也是希望你们少走一些弯路。
以及一份216页软件测试工程师面试宝典文档资料,还有相对应的视频学习教程:其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。