I gave a presentation at our ThoughtWorks Brazil office in Porto Alegre last way on some of the things that I’ve learned while working at ThoughtWorks and the first point I made was that it was better to ‘ask for forgiveness, not for permission‘.
This was something that was taught to me a few years ago and the idea behind this is that if there’s some idea we want to try out it makes much more sense to start trying it now and then we can always apologise later on if someone has a problem with us doing that.
This is in preference to an approach where we ask whether we can try out an idea and get told no straight away i.e. we should look to be proactive.
It’s really easy to say no to something when you don’t really no what it is you’re being asked and it seems to be the default answer a lot of the time.
An example of something where this rule may apply would be if we wanted to try writing some tests with a different language/framework to see whether it improves the way we’re doing things.
We don’t really know whether the new approach is going to be better than the current one so it makes sense to spend a bit of time playing around with it so that we can find out.
Later on in the talk I suggested that on some decisions it makes sense to gather data and then let the client decide what they want to do.
An example of this happened on a project I worked on a couple of years ago where the value of writing functional/unit tests was being questioned.
My colleague Kristan Vingrys came up with a matrix which showed the risks of not testing various features and then let the client decide whether they wanted to take that risk. Alex wrote more about this at the time.
After I mentioned this Caio pointed out that this idea seemed to contradict the idea of asking for forgiveness and not permission and at the time I couldn’t really think of a good answer to why I didn’t feel the situations were exactly the same.
A week on I think that the difference is that the ‘ask for forgiveness’ approach applies mainly for new situations where we haven’t agreed as a team what we should do and people don’t have enough information yet to know whether we should or should not do what is being proposed.
The idea of gathering data and letting the client decide applies more when a decision has been made or suggested and we want to try and influence that decision.
It doesn’t make sense to just do what we want in this situation if it explicitly goes against what the client wants but equally we don’t want to do something which goes against what we believe is the best approach without at least pointing that out.