I almost forgot some of my own advice, and if I had done so, I would not be writing this article. You will have to read the lessons learned in this article to learn about this advice.
Today, I entered my second Top Coder competition at General Motors (GM). This might not sound like much because GM is a car company. The reality of GM is much different than that now, with Information Technologies driving innovation throughout the organization. Many people have been quoted as saying that GM is now a tech company.
I work in an IT division that has >10,000 people, with thousands of computer programmers scattered across 4 IT innovation centers in AZ, MI, TX and GA. I work at the GA site, and today was the Top Coder showdown in Hotlanta.
2016 Top Coder Challenge
Last year I entered my first Top Coder Challenge event with no experience. I made plenty of mistakes, but somehow I thought I should have been one of the top 3 finalists. The problem was that one of my problem solutions was sent to an invalid email address so that it never reached its destination. I didn’t know that happened until after the event was over.
Lesson #1 – Be absolutely sure you know how the system works, and if you have to send your solutions to an email address, be sure to have the correct address!
At the conclusion of that event, I felt good enough to enter the competition again this year. When I awoke this morning, I wondered if this was still a good idea.
2017 Top Coder Challenge
Due to confidentiality, I cannot disclose details about either of the competitions. I will only explain what happened within my cranium, during this 2-hour pressure-cooker event.
I decided to study last night for this event. For one hour around midnight, I practiced a few techniques and read some of the magnificent examples that James Dunkerley has submitted to the Alteryx Community. James is one of the premier problem solvers of our time and he makes everything look so easy.
At 8:30 am, the games began. By 8:35, I knew I was in deep shit.
By carefully reading the problem statements, I knew that this competition was much harder than the previous year. In fact, I did not have a clue how to solve any of the problems. I did not expect to be served such a large slice of humble pie for breakfast.
Lesson #2 – Take your time reading the problems. You have got to be sure that you understand the assumptions, the rules, and the objectives for each problem.
By 8:36 am, my brain was screaming something like this: “You are stupid! Why are you even here? You don’t even have any compilers on your computer to do this work! You are a moron! How could you do this? It’s time to leave because you are not going to solve any of these problems!”
By 8:40 am, I was really feeling sorry for myself. I swept through all the problems, trying to make any progress on any of them. Unfortunately, my brain once again screamed something like this: “It’s futile. It’s not your day. Pack it up and hit the road, Jack.”
Lesson #3 – This is the point in time when you either quit, or you fight. I chose to fight. I decided to take a few deep breaths and focus on what appeared to be the simplest problem (although none of these were “simple”). I needed a little success, a tiny win, and that is all I wanted. I needed a sign that something could go right for me.
By about 8:50, I had the sign. I was able to perform some operations that lead me down the path of completing the selected problem. Once I was on the path, the journey to completion was smooth and my confidence began building. With a small amount of incremental progress, I was able to beat-back the demon in my head that was chastising me for being in that room.
Lesson #4 – Control your emotions. Trust your training. Trust your instincts.
With 25% of the time gone and only 1 problem finished, I thought I was finished. The fear of failure began driving me when I realized something important. I realized that nobody in that room could possibly be an expert in all of these problems. We were all in the same proverbial boat, and I decided that I was going to stay afloat rather than jumping overboard.
Lesson #5 – Focus on one problem at a time. Build your solution one piece at a time. Don’t try to solve the Fully Monty right from the beginning, as I like to say.
As I moved to the next problem, I knew what I needed to do after thinking about it for a few minutes. The problem was, I didn’t know how to execute one piece of the algorithm that my brain had created. I needed to do a certain operation, which I was sure could be done, but I had never done it.
To make progress, I had to determine how to complete that operation. I dropped back to programming fundamentals and began testing ideas. After a few tries, I completed the task.
This tiny win was like raising a sail on a windy day and my boat was beginning to move. My spirits were lifted with that success and before I knew it, the problem was solved. Alteryx had crushed another seemingly impossible problem and I was now moving onto problem 3.
Lesson #6 – Block out the demons by staying focused on the problem. Use the parallel processing ability of your brain to attack the problem from multiple directions.
At this point, a funny thing happened. The problems that were insurmountable 30 minutes before, simply became mental challenges I had to overcome. Since I have written so many computer programs through the years, I knew I could create algorithms, but my problem was that I didn’t have any compilers to use!
Lesson #7 – Don’t give up just because you have an insurmountable obstacle in front of you. Dodge the obstacle and solve the problem.
Well, I could have melted down. I could have simply said, “I’m done”. Instead, I went online and discovered some compilers that I could use! I did not let this problem overtake me like it was doing in the first 10 minutes.
I followed my own advice and I became a problem solver. I did what was necessary to solve the problem. That is not too easy to do when the clock is ticking and the pressure is building, but you have to remain calm in the face of adversity.
Lesson #8 – Admit your weaknesses and give yourself a break. After that, go to work.
What transpired during the last hour of the competition was a blur. I was completely in the zone. One hour passed in what seemed like one minute. I became a researcher, furiously studying, concentrating, doing everything I could think of to solve the problems. Thousands of hours of math studies got blended with years of programming, and what popped out were a few more solutions.
I was like a street fighter refusing to go down. I did what my Mom taught me to do: work. I worked, and then I worked harder. I didn’t stop until the clock told me to.
A few minutes later, I found out that I had placed in the top 3 of the competition.
Hours later I found out that I had won the competition. To say I was surprised would be an understatement. Flabbergasted would be a better word to describe how I felt about it. Now I am just delighted to have survived the day and for having the courage to persevere in a situation that I initially believed was hopeless.
My Advice To You
We are all born with skills and ambitions. I have been a lover of computers and math for as long as I can remember. I think of these skills as being like my friends. I want to continue to develop these friendships and continue to push into new frontiers.
If you feel anything like I do, go try a top coder challenge. It is a good way to find out what you need to work on. It is a good way for you to train yourself to operate in a seemingly hostile environment, even if it is all inside your head. You have to be able to block out the noise, the doubts, and the fears and focus on completing the tasks that are given to you. I guarantee that you will learn a lot about yourself in the process.
The Next Day
Although this competition was tough, I had to work just as hard the following day during the team event, which is known as a Hackathon. To find out what happened in that event, click here.