A really important part of being a tester is the ability to be pragmatic when the situation calls for it. It’s important to have principles and values that you are guided by but there are times where you might need to compromise these to get the job done. I don’t think this should be seen as a bad thing, rather an ability to adapt to the situation in front of you. I’m going to examine some of the most common scenarios from my own experience where you may have to compromise and be pragmatic in your thinking.
One caveat first…
In the scenarios below, you should always push back and attempt to influence the situation when it’s possible to do so, but sometimes this isn’t the case. This is very common when working for a client as a contractor or consultant, where you ultimately can suggest and recommend but do not have the final say on the direction the client takes.
Every individual and team has a different skillset and this should always factor in to any decisions you make. When you are looking at tools and techniques to use, these need to be maintainable by the team that will maintain them. Of course people can learn new skills and if, in the company you working for, there is an appetite for this you could go down this route. However a lot of companies will not want to spend time re-training individuals or teams and you may have to accept this scenario.
Rules for rules sake
It’s very important in any team to have ways of working and guidelines for doing things but we should be very careful of becoming slaves to these at all costs. We should treat ways of working as guides, but not strict rules. For instance a team might have a way of working that guides the code review and branching process for all code changes committed to the product. But when there is a very small change is this process absolutely necessary to follow? It’s all about risk and whether the team are comfortable will the level of risk is not following a guideline and understand why an exception has been made.
Ultimately every team should be looking to deliver things, whether those things are incremental versions of software, documents of some kind, tools or anything else. At times decisions will have to be made about approaches to take and plenty of factors need to be taken in to account, like the time to do something or the cost that approach will take. Every approach will likely change the thing being delivered and the time it takes to deliver that thing. Risk based testing is very important for decisions like this and lends itself to a pragmatic approach when it comes to delivering as soon as possible which the highest quality possible.
In any walk of live I think it’s important to have values you look to follow and this is especially true in testing. A set of principles and guidelines that you look to when you have to make decisions. However being pragmatic is a vital part of a tester’s skills and understanding when and where to stick to your guns and when to push back is not easy but a skill learned over time.