NORDIJA INSIGHTS · June 2021
Why we should learn to love our failures
Nobody likes to fail. Nobody likes to be mistaken; it is indeed much more pleasant to be praised. It is not the process itself that makes us miserable, yet the feeling in that particular moment. However, failing is an essential part of building software - maybe changing the approach could change the way we develop it?
I am Tina, and I am a front-end developer. This April, I mark the 5th year as a part of the Nordija family. You can usually find me in front of my screen, programming new features or fixing current problems. In this article, I will explain why we should be happy with our failures during software development.
As a developer, I fail. I fail a lot. Monthly. Weekly. Sometimes even daily. A big part of my everyday work life is fixing mistakes. Mistakes, which, most of the time, were made by us, developers. Notice I say most of the time - hold on to that thought.
During my career at Nordija, I have had the opportunity to be part of some developer-customer meetings, where we would do a one-day hands-on workshop. This would usually happen during the last phase of testing, right ahead of the product launch. We would go through those last, small, annoying bits. That could be anything from translations, through another font size/color, or some missing pixels between two parts of the User Interface (referred to as “UI”).
I particularly remember one of those meetings. The project itself was super intense, and both of us at Nordija and the customer’s side were looking forward to the launch date. So we would sit in one room, where the customer’s representative would ask me to change translations. I was extremely frustrated since we had already walked through those translations thousands of times before. Yet, there was another thing they wanted to change. It was a long day at the end of a long week, and I could simply not understand the customer’s point of view - why did they have to make last-minute changes?
I could sense the frustration and exhaustion on the other side too. We both were happy as the day was done and the product was ready to launch.
That situation got me wondering what we could do better about that process next time? We would always have to go through this boring step. No other developer was excited about the translations either. I have realized we were failing big times. During a retrospective, considering the pros and cons, we have realized that a certain part of the development was not only monotonous and tiring but also recursive. We would fail on that particular part - every time.
The failure felt bad, and so does all. But that failure led to a brainstorming session, which resulted in a new idea, a solution that improved the overall experience. Only by learning and adapting during the process, we came up with an automated tool that now takes care of translations. Can you imagine how happy we were with the new tool? Spoiler-alert: awfully delighted!
It is easy, though, to take bad decisions and learn from them. If your product awakens some doubts, soon, you will find a few spots that could be enhanced. But if you are so happily blinded, you do not see any need for further improvement. You are getting stuck while the world around is moving forward. Do you remember I mentioned it is not always the developers to be “responsible” for that failure? Here is the use case.
Not that long ago, we, at Nordija, came up with a great idea of improving a part of our UI and the User Experience itself. The fresh design looked so great; we were extremely eager to start working on it. We have tested it, polished it, and demoed it internally as well as to some of the customers.
Do you know this moment when everything works as designed? Yup. That one. Did not last long. The first real-life tests, although successful, made us realize we have a certain way of looking at the product - a way, which may vary from the end-customer’s use case.
Imagine that with this marvelous design and functionality, we have missed some serious issues. Like, the end-customer cannot see another part of the UI. Or click it. Or access it in any other way.
That was another moment we have epically failed. The secret is to not take those things personally. Sometimes it happens. Do you recall Titanic? They also thought it was the greatest ship ever. The architects and engineers were so absorbed they could not foresee a possible way it could sink down.
That also happens in the software industry. Thousands of companies build their product, fix multiple bugs, test it hundreds of times only to find out it does not work as designed in real life.
In the end, a part of the product fails - not the first and certainly not the last time. But this is something we all need. We need to admit the failure, accept it and think about how we can turn it into an advantage. In that way, we will manage not only to stay on top but also to push forward and rise above.
Looking from a time perspective, we should have praised failures the same way we praise a well-done job. As mentioned above, it did improve the developer-customer relationship, the flow of the software development process and saved us hours in the long run. Sounds to me like a decent list of advantages.
To conclude, I think we all should learn to approach failures positively. Certainly, we cannot feel happy as we see the software lagging or our phones exploding (yikes! rather not!), but we can evaluate what went wrong and what could be done differently. It will feel nasty and uncomfortable in the beginning, but at last, we will learn to avoid those mistakes in incoming projects.
Designing products for a better future is full of failures. Big and small tech companies struggle with it every day. Every time when they launch a new product or slightly change the UI. It might be, in their opinion, the best possible version of that software, yet it might be seen as a complete disaster from the end-user’s point of view. After all, success always comes out of a failure - the same as every success might potentially lead to a failure.
Let us keep it that way; in the end, all we want is to create the best software and serve the greatest possible experience.