Everyone makes mistakes. It is often said, and it is most definitely true.
Making mistakes is one of the most effective ways to learn and grow, so it is even a positive thing.
Yet, we tend to prefer not to make mistakes, interestingly.
A lot of us were raised that making mistakes is not a good thing, causing us to often fear trying new things or trying things differently. Our creative confidence is regularly challenged by this as well, and the pressures and stress layed upon us by management and financial targets, does not contribute to a positive atmosphere either.
So in software engineering, there are many tools and general guidelines to reduce the amount of mistakes that can be made.
It starts with design meetings, to make sure we all have the same idea of how something should work. How do we meet all requirements?
We tend to add lots of automated tests, to make sure our code does what we expect and if anything changes, the code still does what we expected.
Then we also review each others' code changes. There are special review tools to quickly see the changes and leave comments.
And when mistakes are found after all - and they nearly always are - we have the luck of being able to easily solve the issue and write more tests to make sure we got it right this time.
But all of this is not even the most effective part of reducing mistakes. The real trick is to produce easy to read, understand and manage code. The longer a code snippet becomes, the harder it is to fully understand when reading and even when testing. There are popular practices, like Uncle Bob's CleanCode, to guide developers in making sure they create code that is easy to read, test and maintain, but a large part is also the mindset of the developer.
Sadly, us engineers are typically stubborn and fairly often think we do not make mistakes ourselves.
In other fields, there are methods of reducing mistakes as well. Doctors ask a patient's name before preparing them for surgery, just to make sure they have the right information in their hand. Often they work in duos, just like policemen and pilots. For others there are strict rules and trainings, like for traindrivers or busdrivers. And often there is technology available to assist, guide and warn in case of trouble.
Still, people so often make mistakes that go uncaught and end up somewhere they shouldn't. Now how do we go on rectifying these?
Per example, when we bought our home, I had a company insulate our groundfloor. They made a bunch of mistakes, but their way of working had no systems in place to catch and correct these.
Instead, we ended up with mold that kept returning after I killed it. When I called them out on this, they sent two people who should've seen and owned their mistake - the insulation was incorrectly installed - but instead blaimed the situation on leakage. When I rebuked this claim, by getting the pipes checked, they blaimed it on ventilation and other things.
Now I finally had to get a lawyer and an independent engineering office to inspect the insulation to confirm that mistakes were made during the insulation process. Their director had to come check out the situation for himself, because they still could not accept they made mistakes.
This was a very long and expensive process, causing a lot of stress.
It ended up by us losing trust in the company to properly fix the mistakes and so we asked for our money back. We will never do business with them again, and neither will anyone we tall to.
This example just goes to show that in all fields mistakes can be made and lead to all sorts of damage if not checked, owned and corrected appropriately.
I can only hope that I will always allow myself to make mistakes, own them and attempt to appropriately correct them when I can, as a father, husband and engineer.
Making mistakes is one of the most effective ways to learn and grow, so it is even a positive thing.
Yet, we tend to prefer not to make mistakes, interestingly.
A lot of us were raised that making mistakes is not a good thing, causing us to often fear trying new things or trying things differently. Our creative confidence is regularly challenged by this as well, and the pressures and stress layed upon us by management and financial targets, does not contribute to a positive atmosphere either.
So in software engineering, there are many tools and general guidelines to reduce the amount of mistakes that can be made.
It starts with design meetings, to make sure we all have the same idea of how something should work. How do we meet all requirements?
We tend to add lots of automated tests, to make sure our code does what we expect and if anything changes, the code still does what we expected.
Then we also review each others' code changes. There are special review tools to quickly see the changes and leave comments.
And when mistakes are found after all - and they nearly always are - we have the luck of being able to easily solve the issue and write more tests to make sure we got it right this time.
But all of this is not even the most effective part of reducing mistakes. The real trick is to produce easy to read, understand and manage code. The longer a code snippet becomes, the harder it is to fully understand when reading and even when testing. There are popular practices, like Uncle Bob's CleanCode, to guide developers in making sure they create code that is easy to read, test and maintain, but a large part is also the mindset of the developer.
Sadly, us engineers are typically stubborn and fairly often think we do not make mistakes ourselves.
In other fields, there are methods of reducing mistakes as well. Doctors ask a patient's name before preparing them for surgery, just to make sure they have the right information in their hand. Often they work in duos, just like policemen and pilots. For others there are strict rules and trainings, like for traindrivers or busdrivers. And often there is technology available to assist, guide and warn in case of trouble.
Still, people so often make mistakes that go uncaught and end up somewhere they shouldn't. Now how do we go on rectifying these?
Per example, when we bought our home, I had a company insulate our groundfloor. They made a bunch of mistakes, but their way of working had no systems in place to catch and correct these.
Instead, we ended up with mold that kept returning after I killed it. When I called them out on this, they sent two people who should've seen and owned their mistake - the insulation was incorrectly installed - but instead blaimed the situation on leakage. When I rebuked this claim, by getting the pipes checked, they blaimed it on ventilation and other things.
Now I finally had to get a lawyer and an independent engineering office to inspect the insulation to confirm that mistakes were made during the insulation process. Their director had to come check out the situation for himself, because they still could not accept they made mistakes.
This was a very long and expensive process, causing a lot of stress.
It ended up by us losing trust in the company to properly fix the mistakes and so we asked for our money back. We will never do business with them again, and neither will anyone we tall to.
This example just goes to show that in all fields mistakes can be made and lead to all sorts of damage if not checked, owned and corrected appropriately.
I can only hope that I will always allow myself to make mistakes, own them and attempt to appropriately correct them when I can, as a father, husband and engineer.