团队对质量负责,“我”可以不负责?
读完需要
8分钟速读仅需 3 分钟
“敏捷测试强调团队为质量负责,那质量变成是团队的事情,可能有团队人员认为个人不那么负责问题不大,毕竟天塌下来有团队在。”一位转型中的测试经理表达了这样的担忧。
这跟传统职责分明的做法有关,“我”管“我的”,“你”管“你的”,各自做好自己的本分就可以了。现在,既然说要团队来负责,那么“你”就可以多帮“我”负责一点,“我”少负责一点也没问题。听起来似乎还挺合情合理的。
显然,这种想法是有问题的,把个人跟团队割裂开来了。
良好的团队应该有一种“我们”的态度,而不是“我”的态度:“我如何帮助团队解决问题?我可以为别人做些什么?”,而不是“我不知道这是什么问题,这不是我的问题。”
但是,事实上有前面测试经理提到的这种想法的人应该不是个例。
因此,转型中的团队如何能够真正做到团队为质量负责,如何培养每个人对质量的责任感,是真正需要解决的问题。
1
团队整体对质量负责
敏捷测试宣言里提到“团队整体对质量负责”主要是针对传统的质量都由测试人员来把关的做法,强调团队所有角色对质量的责任。
之前从软件质量属性、易被忽视的质量、角色的质量职责分工、以及整体对质量负责的优秀团队特质等几个方面有详细分享。请参考下列文章:
不过,有了这些,也不是那么容易做到真正为质量负责,因为责任感的培养并不是一件简单的事情。
2
责任流程模型
为什么责任感这么难以培养呢?Christopher Avery 的“责任流程模型 ( https://responsibility.com/responsibility-process/ )”很好的解释了这个问题。
上图即为责任流程模型,从下到上需要经历几种不同的心理状态:否认、指责、辩解、羞愧、放弃、义务,然后才能到达最上层的“责任”,才能培养责任感。
指责(LAY BLAME)
当问题发生时,指责心态的人会直接把责任推到别人身上,“这是他的错”。
比如,在用户故事验收时候,发现某个小功能点的实现跟需求不符,这时候开发人员可能会说“那是因为需求没写清楚,是业务分析人员的问题。”
辩解(JUSTIFY)
当发现无法指责别人的时候,就会把问题归因于我们无法控制的外部环境,通过这种方式来为自己辩解:“这就是经济”,“我们的文化就这样”,“这就是团队的管理现状”。
再比如,在软件开发中当同一个问题被多次出现的时候,可能会听到这样的辩解:“我们的遗留系统代码太乱了,出现这样的情况实属正常,很难保证代码每次都能写对。”
指责和辩解属于从外部去找原因,从而推卸自己的责任。
羞愧(SHAME)
当意识到外部环境必须改变才能使生活变得更美好的时候,再出现问题就会归因于自己的错,会感到内疚。常会有这样的想法:“我应该做的更好”,“我怎么又做成这样”,“这是我应得的后果”。
比如,当某个复杂功能上线出现问题时,他们会想“这个点我之前应该想到的,怎么会漏掉没测呢,我真是个白痴”。
感到内疚和羞愧是好的,但是光是这样不会解决问题,下次还是会有同样的问题出现。
义务(OBLIGATION)
义务不是责任,通常是一些承诺过需要做的事情,是自己不得不做但不一定喜欢做的事情。这种情况下会对自己的承诺感到抓狂,感觉到没有其他选择了,觉得生活就是一个负担。是一种非常消极的态度。
比如,在开发进度特别紧急的时候,测试人员会有测试压力巨大、根本测不完的情况,但测试人员还是会认为测试就是自己本分该完成的任务,是自己的义务,累的要趴下的时候只会抱怨工作太累了,不会积极的想办法解决根本问题。
羞愧和义务开始从自己身上去找原因,但是还达不到责任的高度。
放弃(QUIT)
有时候,我们会在羞愧和义务之间感觉到非常的抓狂和沮丧,然后就会想逃离,逃离羞愧带来的痛苦和义务带来的负担,也就是放弃。有放弃想法的人会觉得“只要不去关心问题,它们就会自行消失”,其实问题并不会消失,而且沮丧会一次又一次地袭来,从而非常的焦虑。
比如,某个开发人员开发的代码总是出现 bug,但是又找不到改进办法的时候,可能就会觉得无能为力,产生放弃的念头。
放弃是非常消极而负面的态度,很不利的。
责任(RESPONSIBILITY)
经历前面这几个阶段,并没有放弃,最后就会承担起责任,培养责任感,来到责任流程模型的最高层次。
进入这个阶段,会意识到自己是有能力和力量去解决某个问题。遇到需要解决的问题后,会直面问题本身,分析根因,想办法解决问题,而不是去应对自己的沮丧感觉。
在软件缺陷出现以后,解决了缺陷并且对其根因进行分析,找出以后避免出现同样问题的改进办法,并实现改进,做到缺陷预防。这就是责任,就是为软件质量负责的表现。
否认(DENIAL)
还有一个状态是模型右下角的“否认”。否认通常是因为没有意识到有问题,而忽略问题的存在。这是责任流程模型的最低层次。
比如,测试人员跟开发人员说发现了一个 bug,开发会潜意识的反应说:“我代码没问题,我自己测过了。”
否认属于负面心态,但这种心态更多的是因为能力或认知有限所致。
3
培养责任感的三把钥匙
责任流程模型形象地展示了培养责任感需要经历的几个阶段,我们可以清晰地看到培养责任感的不易。Christopher Avery 为此也给出了培养责任感的三把钥匙:动机、意识、面对。
动机(INTENTION)
首先,当事情出现问题的时候,需要以负责任的动机去面对,积极地想办法解决,而不是忽视、找内外部借口、甚至是逃离问题不予理会。
比如,当我们在软件开发中发现缺陷的时候,不管是什么原因导致,先要做的是积极想办法来解决、分析并做好后续的预防,以减少同类缺陷再次出现。
做一件事情的动机将会决定后续所采取的行动,这个非常关键。因此,端正动机,积极面对问题,是通往责任之路的钥匙之一。
意识(AWARENESS)
其次,是对责任的意识。当出现问题的时候,如果又开始找原因、找借口应对的话,要尽快把自己拉回来,增强自己面对问题的责任意识。
敏捷团队强调团队整体为质量负责,我们作为团队的一员,都需要有对质量负责的意识,每次代码变更都要考虑是否引入新的质量问题;当发现缺陷的时候要意识到需要一起来想办法解决,作出自己力所能及的贡献。
只有意识到了,才可能采取相应的行动。毫无疑问,意识非常重要,这是通往责任之路的第二把钥匙。
面对(CONFRONT)
以积极的心态面对真正的问题,尝试去发现其中有哪些是可以学习的、哪些是可以改正的、以及哪些是可以提高的。
出错不可怕,可怕的是出错以后不能从中吸取经验教训,同样的错误频出。失败是成功之母,从失败中学习,定会有所成长。
当我们说要为质量负责,就是不管质量出现什么样的问题,我们都能积极面对,找到真正的问题所在,采取积极的应对措施,持续改进。
积极面对问题是一种成长型心态,是一种负责任的心态。积极面对是通往责任之路的第三把钥匙。
4
写在最后
通往责任之路的三把钥匙说起来都比较抽象,培养责任感纯属个人的自我修养。对于有志要增强责任心的人,可以从上述三个方面去刻意练习。
另一方面,从团队领导者的角度,可以创造一种免责的文化氛围,鼓励团队成员的创新、倡导持续改进,允许犯错,不要对个人追责,从而更好地帮助团队成员培养责任感。
最后,回顾一下文首的问题:团队对质量负责,个人需要负责吗?
答案当然是肯定的。我们要理解团队的概念,个人属于团队,团队由个人组成,个人和团队是一个整体。
团队对质量负责,就是需要每个人都对质量负责,是质量人人有责。
5
推荐阅读
责任流程模型 ( https://responsibility.com/responsibility-process/ )
Christopher Avery 的对责任流程模型的解读 ( https://www.youtube.com/watch?v=68z3Adn8FZI )