被 @gashero 的回答逗乐了。我因为有遇到难以复现、且不能用科学解释的神仙 bug 体质,而被程序员朋友善意地建议可以考虑做测试工程师,并在认真考虑这一可能性。(而我恰好就是 @gashero 回答所说的,21 天学会 Hello World 的类型。)
回答提到:
开发工程师做了个玻璃杯并告诉测试工程师说这是用来喝水的。那么一个合格的测试工程师会在杯子底下打个孔去喝水,并反馈杯子不好用,撒了一脸的水,嘴里还有玻璃碴会伤害用户。
这个例子还可以扩展一下,合格的测试工程师会:
就先瞎扯这么多吧,李姐万岁!
有的,一个典型的IT企业里,研发部门分为3类职位:开发、运维、测试。
开发就是你说的编程工作,典型工作内容就是设计和实现各种bug。
而运维和测试两类职位的典型工作是不需要编程的。
运维也叫重型设备搬运工程师,基础职责是把各类沉重的设备搬来搬去,并可以蹬着椅子把几十斤的大箱子放到机柜里。细分工作方面,又分为系统工程师和网络工程师。系统工程师除了搬运服务器以外,还要负责给服务器安装操作系统,就跟电脑城里给电脑装机的小哥是一样的工作。网络工程师则主要负责搬运各类交换机、路由器之类的,以及把各种绕成一团的网线拆开,用来捆绑各种不听话的其他工程师。
运维工程师通常刚入行时就要每天搬运各类设备。网络工程师搬运的交换机和路由器比较轻,所以是比系统工程师更吃香的。不过网络工程师和系统工程师都对一个人的腰椎有一定的天赋要求。系统工程师最怕的是存储服务器,一台4U存储服务器装上12块硬盘绝对不是开玩笑的,能独立抱起一台跑上一百米是典型的入门要求。而网络工程师虽然对腰椎的负载程度要求不高,但对腰椎的柔软程度要求高,毕竟要经常钻到各种管线里去做网络布线。从医学的角度将,系统工程师容易患上静力型腰肌劳损,网络工程师容易患上动力型腰肌劳损。而腰间盘脱出则是两者共同的话题。
另一类通常不需要写代码的是软件测试工程师,也叫软件折磨工程师。通常的工作就是用各种难以想象的角度折磨初生的软件。举个例子,开发工程师做了个玻璃杯并告诉测试工程师说这是用来喝水的。那么一个合格的测试工程师会在杯子底下打个孔去喝水,并反馈杯子不好用,撒了一脸的水,嘴里还有玻璃碴会伤害用户。一个经验不够丰富的测试工程师可能仅仅是把嘴伸到玻璃杯里,用舌头舔水,并反馈用户体验不好。
如上可见这类萌萌的测试工作通常是妹子在做,所以题主可以根据自身情况考虑。总的来说,测试工程师还是需要很多脑洞来找茬的。毕竟用户更可能作出很多匪夷所思的行为,远远不止舌头舔水这么萌。
回头说加班的问题,想在IT企业又不加班,那你就想多了。这三类职位只有加班方式的区别,没有加班与否的区别。通常在一个项目的初期,是开发在加班。平均3个月的项目,开发通常报上去5个月,而老板通常只给1个月。结果就是加班赶工。在开发的中后期,测试工程师才开始进入工作,并开始参与该项目的加班。但通常的公司会有多个项目在进行,而测试工程师并不属于特定的项目,所以只能说在一个项目里测试与开发的加班存在时间差。但总体而言,考虑到多个项目后,加班其实也没差多少。如果赶上开发的加班不够努力,项目稍微延期,PM是会压榨测试的时间,要求测试更没人性的加班来追回工期的。
项目开发后期到上线后,运维才会开始加入。通常来讲,在办公室里看着运维貌似比开发和测试要闲一些。但这只是表面。运维的工作方式是遇到线上故障了,无论何时何地都要第一时间连上服务器去处理问题,用各种dirty的方式把问题对付过去等着开发修bug。所以运维的加班风格不是平均的,而是突发性的。一旦出了问题,下半夜从被窝里爬起来处理问题也很正常。开发的加班多了可以躺尸,测试的加班多了可以病假,但对运维这些理由都不成立,不管任何理由都要立即去处理问题。
很多时候计算机专业读完了,具体从事哪个分支方向与个人天赋有关,而并非主动选择的结果。比如大学时有熬夜天赋的,并可以写个三五十行代码的,毕业了去做开发。写代码不灵光,但有膀子力气的去做了运维。萌萌哒的女生去做了测试。需要21天才能写出Hello World,且身材不足以应付运维的,去做网页(前端)。当然了,还有更废的一些,21天都写不出个Hello World,没力气也不萌,最后如果不是去转行卖保险,就只能做产品经理了。
所以,题主Good Luck?