Are you a software developer? Do you agree with these statements?
- New code will have bugs.
- Old code also has bugs. They’re just less obvious.
- It’s easy to make a mistake.
- No matter how much you learn, there will always be something you don’t know.
- A small change can have a big effect.
If these facts are true, those are all good reasons we shouldn’t blame ourselves when we make a software development mistake. We live in a reality where most software systems are very complex, and far too complex for us to comprehend fully. We should rely on automated tests, tooling, version control, QA, and other things to help us do the best job that we can do. But, it is impossible to know all.
Perfection is not possible; nor is completion. Successful software programs meet the desired goal; or, solve the desired problem; they create value. Value is not determined by the number of open bug reports. There will always be something wrong or incomplete. Therefore, you should not base your self worth on how “good” your program is. You are not your program.
Rather than feel bad about yourself, think about how it could have gone better. Could you have tested better? Could you have had a better plan for reverting if something went wrong? Git revert is your friend, and not a sign of failure. By reverting, you have learned something, or will learn something, and hopefully won’t make the same mistake twice. Growth requires experience, and the only way to get experience is by doing.
There is a reason why software developers use version control. Embrace that power.
A revert can feel like a public omission of making a mistake, but it could also be seen as the first step in fixing a mistake. Taking action is better than inaction.
Forgive yourself and your co-workers for mistakes. Let go of your ego. There will always be a problem to solve.
I also like to say that “most people don’t know what they’re doing” but that’s a bit egotistic, because in my head, it is silently followed up with “…. but I know what I’m doing.” But the truth is, I only know what I am doing to a certain point. I may have mastered one aspect, but the unknowns are in a pool nearby, and I have to wade into the pool of the unknown on a regular basis, or else growth would not occur. Every expert was an amateur first.