Most of us don’t go through our lives without stumbling every now and then. In fact, I have failed more than I care to admit, both career and otherwise. Recently it is the “midterm” season, and many of friends are either worried about their performance in the exams, or just plain frustrated by it. To that I want to write up this post to talk about my ways of dealing with failures, and hopefully some of you can feel less bad after reading it.
My failures in writing software
One of the biggest failure I had in my career was in year 2011. During the time I was a high school kid who wrote code for nothing more than competitions. In the US people usually call that ACM. Of course I was fairly good at it at the time, but when we went in the regional contest, I failed so badly that my friend who started two years after me almost got twice the score than I did.
I was heartbroken. There’s a lot of ego-psychology at the time, but I was more disappointed about simply getting outperformed. I had to sit down and really think about this, what could I have done better? It was right around the time I started seeing other parts of software engineering. The web, mobile, and a lot more became available and attainable for me. I weighed my options, and in the end, I admitted that I am not for complicated algorithms, and moved to application programming.
Even till this day I still wonder if it was the right call. But undoubtedly, I feel a lot more comfortable doing web dev than drilling through algorithm questions, and most importantly, I feel happy doing it. I guess sometimes you just have to submit to failure and move on.
Another more recent failure in software happened during my internship this summer. After trying to convert an old class to a new one residing in a different directory, I was met with a problem that’s virtually unsolvable without making a huge mess all over the codebase. My manager talked to me about it, and said: Why don’t you take a few days off this route and try some other exploratory work? I listened and played with the codebase for the rest of the week. Suddenly I realised the old file I was trying to migrate can really be the root file, and other files across the codebase should merge with that. So the coming Monday I re-did my project proposal, and proceeded to complete it with expected results. Everyone was glad.
Unlike what you think, a lot of things that fail to work could just be in the wrong order. Instead of getting caught up in the mess, it might be helpful to withdraw oneself from the code, and rethink the project on a high level. A little more work of trying, you may just find your out of this.
My failures in other parts of life
Of course I have my fair share of failures in other bits of life too. The one I want to mention is badminton games. To give some context, I play in the university badminton team, and often go out and play local league games. Over the last year, I have lost more games than I could remember, both personally and team-overall. While I get pretty upset when we lose, my teammates would shake it off pretty quick. One is because we cannot be hard-pressed on that one loss and give away the rest 3 games, two is that it is really not that big of a deal. My captain had this explanation for me: A lot of the times you are upset because you didn’t do your 100%, for one reason or another. The point is to realise and admit that, know what you could have done to play better, and go on and do that. As long as you are trying your best to play, there should be no regret.
I hope this post can help you feel better for whatever you consider as failures. Unlike the picture, I think failure and success aren’t absolutely opposite things. By failing, we understand we are falling short in some ways. We might feel bad for it, but in the end we always walk it off and move forward, a step closer to success.