I have been noticing lately that in my job I’ve somehow shifted towards more of what could be described as a gatekeeper role. I’ve built some very good relationships within the team, and developers are now much more willing to get my feedback and input which is great, but somehow this has morphed into me being a quality gatekeeper for the product. Quite often now I will have a developer approach me with a branch that they would like feedback on before it gets merged into the main release branch. This is great as it allows us to find bugs sooner and keep the release branch in much better shape.
However, in doing this I have noticed that I’ve become a gatekeeper. I’m the guy who declares “this is ready for merging into the release branch.” And so, although the gate may have moved downstream, it is still there and I’m not sure if that is what I ought to be doing as a tester.
There are a few things about being a gatekeeper that make me uncomfortable. For one thing, it means that in a lot of ways I’m now the one primarily responsible for making sure that the quality is high. If bugs show up the developers can wash their hands of them and say that they gave it to the tester to look at. Even though the developer a very willing to work on fixing bugs when I find them, it seems like this is fostering an environment where quality is the tester’s problem and not the team’s problem. Another thing about it that makes me uncomfortable is that where there is a gate there tends to be a narrowing effect, which means it is very easy for testing to become a bottleneck (and we have already seen that happen on the team).
But what to do? We had a lot of issues before with developers merging stuff in whenever they felt it was ready which was causing broken builds, so the process we have now is actually something we as testers advocated for to help fix some of these problems. And yet now we face another set of unintended consequences. What can or should we do to change this?
I’m not sure that I have or know the answer at this point. I think the big picture idea that we need to get into place is making it so that the whole team owns quality in a real and meaningful way. The question is how do I do that? Some companies have gone the unified engineering route to deal with this issue, but I don’t see something like that happening in our company any time soon and the team I am on does not want to voluntarily move in that direction. So what else can I do to help make it so that the whole team owns quality? What practical steps can I take as a test-practitioner to move the team towards producing high quality code in a way that does not rely too heavily on testers?
Perhaps what I need to do is to work with the developers so that they become better testers. Even if we have an independent test team, there are still many advantages to the developers if they write better code and maybe I need to sell them on those advantages and work with them to help them get better at it. I think one of the biggest reasons we’ve become gatekeepers is that we as testers don’t trust the developer’s testing (and they don’t always trust their own). This is based on the history of finding so many issues after developers said they were done with code and so is certainly not an unreasonable thing, but if we could get rid of this mistrust of developer’s ability to produce good quality code, we could remove the need for gatekeeper-like activity and become much more efficient as a whole (test and dev) team.
Another thing I could do, is to work with developers on improving the automation that we have available to run. If we can have a better automation suite, we can have far more trust that new code is not breaking things and reduce the need for as much tester time put into it. On a related note, having much faster automation would help as well since we would be able to run more tests more frequently. Hmm, maybe working with developers on adding and enhancing unit test suites would be helpful here too.
Sounds like I have plenty to do. How about you? Do you ever feel like a gatekeeper? What things have you done to help make quality something the whole team owns?