Member-only story
It all worked a minute ago!
In the early days of my professional career as a software developer, I was proud when a program did what I wanted. Most of the time, this process took me quite a while because I missed too many things that could go wrong.
Just out of nowhere, features that worked one day stopped working the next day. Well, of course, it wasn’t out of nowhere, but I never knew that. While implementing new functionality, I accidentally broke other parts of the software and didn’t notice it.
Even the fact that I checked my stuff very precisely manually didn’t help to prevent those bugs. I always had the intention that the QA staff must not find any failures in my code. I worked incredibly hard towards this goal, but still, bugs occurred. As you can imagine, I spent more and more time debugging and fixing those nasty bugs, instead of working on new features.
Eventually, I discovered testing frameworks and started to write some tests for my software that worked quite well. But often I couldn’t write tests, because things were coupled too tightly. Even today, when I have to write tests for existing parts of software, it’s sometimes frustrating and very time-consuming. Code encountered in legacy projects was usually written with the idea to be written only once, to work as expected, never to change and without the need for automated tests. Some developers say “My code…