Sunday, January 2, 2022

Cost Time Value Risk

 It has been more than 15 years since I first started testing software. From the first software I tested to the last client interaction I had, few points have not changed at all.

  • If it can be done quicker, people want it to be done quicker
  • If it can be done at a lower cost, people want it to be done at a low cost
  • If you can gain more value, people want you to work towards gaining that additional value
  • If you can reduce the risk, people want you to reduce the risk. 
Think of these as four points on the circumference of a circle. It is slightly difficult to keep all four at the maximum length from the centre. You increase any one, the other three take a hit. 

Welcome to the interesting world of software testing :)

Let us dive a bit into the four points and how software testers can try balancing the four points near maximum most of the times.

If you are thinking if all four are equally important or is there a prioritised list, good question! You are thinking like a good software tester. My answer is - No, there is no one standard list. Based on the context, the priority might change. At the same time, all four are important and the margin between each is minimal.

Are people okay with a software that is too costly to build, takes a lot (I know a lot compared to what) of time, doesn't give as much value as possible, doesn't cover all the risks known? A BIG NO.
Are people okay with a software that takes reasonable cost, time, value and covers reasonable risk? Maybe Yes, Maybe No.
What is reasonable is a topic for some other day. 

Back to the four points and how software testers can balance:
As software testing is an information gathering activity and we don't have infinite time available, we should be conscious of the cost to the project every second. Every action we take or we don't take has a cost associated with it. Keeping the environment up also has a cost associated with it - relate it to the cloud services and the charges per minute of usage.

As testers, can we /try/ to be conscious of the following costs:
- cost of software used to test the software
- cost of people's time utilised for the project
- cost of repeating an action because we forgot to make a note of what was the response of the action first time
- cost of delayed action
- cost of incorrect action
- cost of not communicating our expectations 
- cost of not listening
- cost of not asking enough questions
- cost of missing the use case
- cost of brooding over a past mistake ( I remember the slip fielder in cricket who has to be focused and ready for the next ball even if they missed a easy one the last ball)
- cost of not using the right tools
- cost of using a tool because we have the tool
- cost of being in meetings even though you are not contributing
- cost of using the incorrect medium for communication
- cost of making people wait in meetings 
- cost of jumping in to test without bothering to understand the why behind the software and/or the testing
- cost of not venturing into the unknown early

Is there a specific order in which the costs need to be thought of? No, not really. You can get better with experience, if you pay attention to all the experiences. 

Somewhere all of Cost, Time, Value, Risk are so much related to each other that you can have the same questions and replace one of the four words with the other three and it would still make sense.
Ex: Time lost because something was not done right the first time (when there was the chance to do it right first time)

Maybe the following mind map will help you think about 
Cost: What is the cost of this action?
Time: What is the time needed to do this action? Can it be done quicker?
Value: What is the value of this action? Is there a better way to do it to get more value?
Risk: What is the risk of this action? What is the risk of NOT doing this action? 

I used to think on the lines of Cost, Time, Value and Michael Bolton helped me realize the importance of considering Risk too in my thought process. 


Eward said...

Good tips on software testing, when I was at university I thought about dedicating myself to that because I thought it was easy but the truth is it is not and even more so when it comes to a demanding client.