正常的软件项目中,项目的资源需求会随着项目的进行逐渐升高,然后在后期迅速的回落,对于程序员和测试来说,主要的工作内容在项目的执行阶段,也就是中期到中后期。
我们在计划项目的时候,自然是不会计划到加班这样的事情的,一般都会按照正常的8小时/天的任务来进行排期。但是,项目总是有他的特殊性,例如:客户要求某个时间节点必须交付,那么工期缩短了,对于项目负责人来说只有三个选择:要么降低质量标准,要么减少需求,要么加班。
但是,质量是底线,虽然可以降低,但是总有一根红线不能触碰,需求是客户或者产品经理说了算,并不是说砍掉就能砍掉的。所以,大部分时候,经过各种拉锯战后,还是只有加班。
对于前端和后端程序员来说,研发的中后期是加班比较多的时候。因为在前期时,产品经理自以为用户的需求已经挖掘得比较透彻了,研发基本就是按部就班的照着既定的计划研发,即使出现需求的变化,由于研发才刚刚开始,所以需求变化的代价很少,所以加班时候不多。到了中期和中后期,需求变化的代价越来越大,研发过程中可能发现需求中的一些不合理之处,从而产生了大量的沟通成本和调整成本,这时加班就开始越来越多,这个过程会一直延续到测试阶段。
而对于测试来说,只要研发开始大量加班了,就说明产品的质量可能有风险,那么测试阶段就没有好过的。如果情况良好,在测试阶段的中期,这个加班情况会有所缓解,但是很多时候,这种加班情况会一直持续到上线前。
所以,没有熬过夜的程序员一定不是一个好测试。
当然,加班对于程序员来说其实也是一种历练。曾经我也是比较反对加班的那一类人,能早点溜就早点溜。也有很多人说,加班时候的质量是得不到保证的,加班时候的效率很差等等,我承认,加班做出来的项目质量一定不高,但是个人觉得不是因为加班本身导致的,而是项目紧张到必须赶工的时候,那么一定不可能像不加班时那么的周全,可能单元测试能省就省,设计文档能省就省,自然就质量差了,这并不是加班的人的原因。