Taco Steemers

A personal blog.
☼ / ☾

Mistakes will be made

I occasionally make a mistake in a professional environment. Mistakes will be made, that is just how it is. We do have to keep looking at how we handle them and make sure we are not making a habit of it. Here I share some of my thoughts on the topic.

Last week a customer ran in to a problem that I had created by mistake. This is not a difficult kind of situation to handle and goes something like this: I own up to it, give a quick explanation and then fix it myself or assist a colleague in fixing it, and when the situation allows for it I talk to all involved and provide all the necessary details about how the mistake came to be.

That last part is important. Not only to the customer and your colleagues, but also for yourself. In explaining the situation in detail you will find exactly what went wrong and what role you played in the situation. Perhaps you zigged when you should have zagged, as they say.

Key to my learning has been not just the breaking but more importantly the fixing. The mistakes made I saw as lessons learned when I realised what had happened, and a chance to dive deeper in to what I was working on. It feels good to learn to fix things for yourself, especially when the pressure is low.

Mistakes will get made. Problems will occur. Hopefully everything will be fine. If the mistakes and the problems you created still hurt you will be okay, because you have an incentive to avoid them.

Colleagues

During the last 9 years I was able to experience other people make mistakes in professional environments as well. In some sense I enjoy the mistakes when they happen because they tend to be kind of harmless in the grand scheme of things, yet a lot can be learned by paying attention when we are correcting them. Another person's mistake and solution can be quite educational.

Would you have handled the situation the same way? If not, you may want to ask what your colleague thinks about your proposed solution, after the urgency has died down.

Sometimes you have to interrupt then and there if you see a new problem in the proposed solution. That is a more difficult situation and requires more insight in to the situation and people. How certain are you? Is the potential problem a big problem? Are you able to bring it up while keeping the discussion productive? You may have to be a bit insistent to make sure you are heard.

Though at times you may feel your colleagues are taking a sub-optimal action, a more likely situation is that you are missing some context that justify your colleagues' action. Because of this a good approach can be to ask if the scenario you are thinking of is possible, just to give the others the opportunity to recognize something they might be overlooking, and then let them continue. If you still have doubts or questions after the situation has been resolved, you can discuss them with your colleagues at that time.

Take note of the situation and move on

You need to realize that you are going to make mistakes. Some won't be fixable. For example, some production data will never come back. It depends on a lot of factors, the simplest being the granularity of the backups. You can't just put the old backup back; all newer data would then be lost forever. The missing data might have to be scripted back in, which brings a lof of new risk.

Heated discussions can occur. Just remember it is not about you or them, it is about solving the problems at hand. Blame is not what it is about and rarely truly needs to be assigned. If there was no malice, ignore the blame. I have personally never seen malice, only honest mistakes.

Unfortunately there is a lot of carelessness as well. Carelessness is not the same as the initial inexperience that leads to mistakes. It stings a bit when I have to give someone my time due to their carelessness, but it is part of my job to give support where needed. I try to avoid being the careless one.

Don't hold a grudge. Tomorrow there will be another day with another problem that you will resolve together. Take note of the situation and move on. If the company culture allows for it, it may be a good idea to make a write-up to share what happened and what you have learned . In follow-up discussions all involved can walk away with more ideas for improvement.

Users and their representatives

I make sure to remember that even though I am sometimes far removed from the consequences of mistakes made, there is an end user of my work and that of my team. Perhaps it is a person who has no choice in their use of our product, but does have mouths to feed. It is probable that I am going to make some people sad, over the course of my career. That is kind of inevitable if you don't work in a vacuum. Software can be very frustrating and confusing, to the layman, the professional user and the software developers as well. Still, we should be gracious, even if a support ticket seems unfair to us and our work. Just as it isn't always easy to be in our position, it isn't always easy to be in their position. The best response is a helpful response.

There is your environment, and then there is you

Where does our responsibility start and end? If we have a responsibility in some area, we should also have a way to influence the outcome of the actions taken in that area.

The new senior software developer who was replacing me didn't appear to be listening when I tried to warn him about the inadequate deployment procedure, and the production database credentials that were included in the version control system. I was there as a contractor for only five months and tasked with creating two web applications in a domain that was new to me. I had no influence and no time to improve that part of the organization. It did feel bad when a few hours later some production data was lost. This is one of the many situations that I have learned from. Here I learned that I should trust my instinct and be more insistent the next time I feel that such a warning is not properly heard.

It is up to the workplace as a whole to get safe procedures in place. We can and must advocate for safe procedures. In the meantime we do what we can to avoid making mistakes and creating problems. We should also acknowledge that there are limits to what we can do by ourselves. We are always dependent on others. If situations in your environment force you to log in to a production database, and you then proceed doing so, there is a chance of you doing some damage. You should in your mind take responsibility for taking the risky action. You should also recognise that apparently your environment is pushing you towards situations where you are likely to create problems at some point. Can you and your colleagues improve the workflow? In my opinion it is always worth it to at least to have the discussion, and it is worth the effort it takes to get time scheduled for an investigation in to better practices.

Avoiding mistakes by avoiding risky situations

Mistakes are most likely to be made when we are tired, distracted, or not fully aware of the details of the system we are working in. The easiest way to avoid creating big problems is to not let ourselves be set up for a situation where mistakes are likely to be made and likely to have a meaningful impact. Because mistakes are never just likely. I feel that in workflows where mistakes are likely, they are also inevitable.