If your resume includes some mention of TopCoder, then you might have heard this during a job interview. Although the member base represents a very enthusiastic and ever increasing group of people, the TopCoder community is still a bit of a subculture. While the name alone is an obvious indication of what the community does, there are probably even more questions it raises.
I once had a job interview unlike any other. After the formalities of "Hi, my name is John, and I'm the IT manager of Acme Widgets," the very next statement was, "Now, I've looked over your resume, and want to let you know that as a rule, I typically will not hire someone who hasn't gotten their college degree. But, I did see written here that you're a member of TopCoder, and have been a Google Code Jam finalist. Can you tell me about that?" I knew, beyond any doubt, that this interview would go well, but in all of my job hunting preparation, I had never once thought about how to answer such a question.
So what does it mean to be a TopCoder? More than likely, you know how to code — very well. Even more importantly, you enjoy coding, and you love solving problems. You would do it all for fun, even if there were no paycheck involved. (If I had the free time, I would probably do that too, but lately I am too busy trying to solve the latest Marathon problem. Err…wait.)
But let's get back to our day job for a moment. What unique qualities does a TopCoder bring to the table? The love of coding indicates an important set of intangible values: self-motivation, a desire to learn new skills, an ability to solve challenging problems, or maybe the ability to share some of these talents with coworkers.
In the business world, the variety of "challenging projects" can start to feel — over a long enough timeline — pretty much all the same. My own observation has been that most applications involve a lot of editing, processing, transporting, and reporting on various sets of data. While this might seem like a pessimistic oversimplification, there is some degree of truth to it. For the TopCoder who craves the challenge of solving new and exciting problems, some creative effort may be required to make the job more interesting.
Of course, some perspective is also required. Not all elements of the TopCoder mentality translate well into the workplace. For instance, it might be tempting to "simplify" a code segment by rewriting it to be more concise, but this could backfire when someone else has to modify the code several years from now.
Two feature articles from days gone by, TopCoder Competitions vs. The Real World, and All I really need to know about Software Development I learned from TopCoder, are enjoyable to read and make some interesting observations. My own experiences have also helped, allowing me to find a place within my organization, where I can both exercise my love of coding and be a valuable asset to my team. Some of the lessons I've learned are:
A great example of this took place at a previous job I held. I was working with another developer on a reporting project, for an e-commerce client. Of particular interest were sales reports that compiled information about promotional discounts, products exchanges, etc. One day we get a call from the client, concerned that the reported data appeared out of sync with their expectations. I was tasked with "fixing" the issue. Before I could even begin explaining my intended course of action, my coworker cut me off, explaining, "Right now, I just need you to dig into the code and get it fixed as fast as you can. You can tell me about it later."
No problem. While I waded through complicated sets of queries, he talked with project managers about quirks in the sales process, and how certain types of discontinuities were inevitable. And, the end result? The customer and project manager were satisfied to understand the issue, and the report was adjusted to be in line with the expectations. In the meantime, I got to code (which I love) without the distraction of trying to explain things to the customer (which I don't like). I was satisfied to get it fixed. My coworker avoided having to do the tedious coding, and was thrilled to report back when it was completed. Everyone was happy.
So, what does it mean that I am a TopCoder? It means I fulfill a very unique role on the team, and I love every minute of it.