我们最近的多次软件发布都出现了问题。或是因为某个代码低级错误发生回滚;或是因为SQL未仔细检查导致发布出现线上问题;或者是流程响应不及时导致客户业务不可用;甚至还有Copy代码导致资损。
面对这种情况,团队处理了问题,进行了回顾总结,还制订了一些措施。你看,我们及时的处理了问题,纠正了错误。我们还战胜了自己,敢于把问题暴露出来,直面问题。这些问题的发生都不是存心故意,属于不小心的偶然遗漏,不是主观原因;或者只是我们相信了别人的代码;或者是规范执行的力度不够;或者是管理层不重视,因此有所疏忽。对此,我们也进行了深刻的反思,我们还制定了后续措施,例如“加强Review”“加强规范执行”等等。借此,我们可以发现一些问题,推行一些新的措施,加强规范执行。这一切似乎都很正常,甚至让人感到开心。
可为什么我却一点也开心不起来,羞愧、疲累、痛心,心中五味陈杂,辗转难眠?
不应该这样的!我们的发布应该很顺利,客户应该感受到新功能带来的好处并为之欢呼雀跃,为未来业务的发展充满憧憬展望。而不是像现在这样,或者是大为光火,重要的业务功能不能使用;或者是对我们将信将疑,不相信我们有能力履行承诺。我们没有给客户现在,更别奢望承诺将来。为此,我们可以找到很多理由原因,但我们无力解释,因为我们确实没有做好本该做好的发布。我为我们的表现感到羞愧,愧对我们对客户的承诺。
不应该这样的!我们应该顺利进入后续发布的研发,而不是花时间为上一个发布或者更早的发布搽屁股。有了这些时间,我们本该去关注那些超炫的新技术,并考虑如何应用到发布中,让其他技术团队羡慕嫉妒恨。有了这些时间,我们本该去考虑对客户有更大帮助的新功能,闪瞎客户的钛合金双眼。有了这些时间,我们本该去想想如何提升自己的技能,关注自己能力的成长,争取做一个有尊严的无证软件研发人员。而现在,我们的时间用在哪里?发布时通宵达旦,还要拜关公波多野结衣;发布后不断发现与解决问题,还要花不少时间沟通协调,推动数据订正发布回滚;更无聊的是,还要开什么缺陷分析会议,写什么故障总结,上面还非要写些我们明知道永远不会真正执行的Action。我真心感到羞愧,我们的忙有很多都是自找的,我们浪费了自己的时间,成为了每天都在救火的救火队员。
不应该这样的!我们应该是擅长学习的、有尊严的软件研发人员。我们应该是最善于解决问题的人,我们本该能够找到方法,让之前出现的问题不会再度出现。我们应该是有尊严的软件研发人员,自己关注自己的饭碗,有能力把自己写代码的技能提升,真正对团队负责的发布、自己写的代码负责,保证不出低级问题,而不是像奴隶一样需要被别人用鞭子来规范、像码农一样被圈养。我们团队不少人都参加了对外面试,想想你们给别人的评语:“在公司这些年,只是完成了工作,没有太多学习思考,被荒废了,不满足我们的招聘需要”。再想想自己,曾几何时,我们也已经失去了勇气,丧失了尊严。纯粹被工作推动,被动完成,不再敢为自己写的代码负责,开始为自己找到时间太紧等诸多理由;不再敢对不合理的要求抗争,都是被PDPM逼的,即使没被人逼,也要多做些东西,哪怕做错都可以。曾几何时,写出更好的代码,做更好的发布变成了其他人,尤其是主管、域专家、PM的职责,我们开始放弃进公司时的聪明才智,开始随波逐流。只要管理者们不强调的东西,慢慢我们都不做了,因为这肯定不重要。我们开始忘记为自己负责,认为这都是别人逼我们做的,忘记了去写出漂亮的代码、去很好的理解业务、去把控质量有效交付,忘记了我们需要不断提升这些能力,忘记了因为这些能力我们才有被雇佣的价值。我觉得很疲累,不是因为发布出了问题,而是因为作为软件研发人员没能从发布问题中学习提升;我觉得很疲累,作为团队的负责人,是我没做好,没能唤醒团队同学的勇气和尊严;我也感受到了大家的疲累,大家虽然都想努力做更好的软件研发人员,却已经累了,不想再抗争,开始当一天和尚撞一天钟。
不应该这样的!我们应该共同为客户、产品负责,研发团队应该为发布负责。出现问题是我们大家的问题,没有人能置身事外。这个问题是不可能测试出来的,所以测试没错;都是某个同学不小心,规范执行不到位,所以都是他的错;反正领导也不重视,出错了也是不重视的原因;需求都没弄清楚,开发同学就做了,都是他的错;我是PM、主管,代码我不熟悉,代码Review不关我的事。还有自测不充分、明知道问题也不提醒,反正有诸多错误,我们孜孜不倦的寻找他人的错误,致力于找出谁的错误更大,找出自己不在场的证据,动不动就想诉诸于暴力,仿佛惩罚了他人的错误,加强规范进一步奴隶化就能解决问题。这些有什么用?这就是我们对待同事、对待伙伴的态度?我们到底是不是一支团队?我们是想找人为错误负责,还是真的想向客户交付高质量的软件?我为此很是痛心,不是因为我们发布出了问题,而是因为不少同学置身事外,因为团队内的同学相互指责,更是团队外的同学麻木不仁。如果真的希望是伙伴,即使伙伴不完美,我们也应该相互提醒,共同去为客户交付更好的软件,小研发团队为发布负责,大研发团队为客户、产品负责。
作为软件研发人员,我们还能唤回职业的勇气与尊严吗,能够为自己而不是为别人工作吗?需要我要为团队做点什么,才能让团队摆脱现在的状态?作为团队的一员,你又能为团队做点什么?
深夜之中,卧床之上,脑海里又回想起那对我有重大影响的书《演员的自我修养》,耳边传来那振聋发聩的声音“其实,我是一个演员!”。不禁在想,如果我们每人心中都有一本《程序员的自我修养》,那该多好!