Dear new developer,
We all make mistakes. Yes, this is not news, but it’s worth repeating.
We all make mistakes.
I have made them, you have made them, your boss has made them, the person you are interviewing with for the job you really really want and need has made them.
The one thing about mistakes is: never never hide them.
But the people who need to know about your mistake should. Who needs to know depends on the scale and scope of your mistake. If in doubt about who needs to know in a professional setting, ask your mentor, your immediate supervisor or a trusted team mate.
Don’t take your time to do this. When you discover a mistake, you should immediately do the following:
- Confirm it is really a mistake. You don’t want to be the boy who cried wolf. So avoid making a mistake about a mistake. Take a look at the mistake from several different perspectives.
- Think of a plan for fixing the mistake. This may entail bringing in other team members, depending on the severity of the mistake. It may entail shutting some things down so a mistake doesn’t get worse. There may be an immediate plan to fix the emergency and a longer term plan to prevent the emergency from happening again (perhaps using an automated test).
- Think about who is affected and the scope of the impact.
Finally, tell who is affected about the issue and the plan to fix it. This may in itself require some planning.
It’s very uncomfortable. When I was at a startup and was writing billing software for clients, there were times when I made a mistake. I remember one time when I had to email or call each customer whose billing I had screwed up. It sucked. But they understood and appreciated the transparency and honesty.
What is the alternative? Hiding your mistakes and pretending they never happened? This means that you don’t get to learn from them. Your users or boss may discover the mistake on their own and bring it to your attention in a far more unpleasant manner.
Making mistakes is fine (though try to not to make the same mistake twice). Hiding them is not.