I’m excited to bring you couple interviews of our long-time Marathon Match participants. Our first interview is with Gődény Balázs, known as walrus71, who in addition to being a Topcoder marathoner for 10 years, is a copilot for sponsored matches.
gorbunov: What is your day job? How do you manage it with long Topcoder contests that, to be honest, take time? Do you like to solve hard tasks at work?
walrus71: To say that I like to solve hard tasks at work is a serious understatement. It depends on the hard tasks. I feel bored and unmotivated if the job involves only routine tasks. I used to work at big companies where there were uncomfortably long periods without intellectually challenging tasks. These were the times when I spent most of my free time with programming competitions. It may sound weird, I admit, a guy spends 8 hours of work with computers and does the same during commuting and also in his leisure time. Fortunately this is not the case any more as I work as a freelance programmer and have the luxury of choosing which jobs I take. I usually pick those that I find interesting however. One side effect of this is that I don’t participate too much in contests these days.
gorbunov: How do you get the projects and clients? Do you have a set of long-time customers that you work with all the time, or you get a new customer for each new project?
walrus71: Projects usually lead to more projects, so most of my jobs are done for returning clients. This of course assumes that both parties were satisfied with how the previous projects went, and fortunately this is almost always the case. Or maybe I shouldn’t use the word ‘fortunately’, as there is very little luck involved. When picking projects, I consider not only the task but also the client, and if during the initial discussions I feel that we are not compatible then I will decline the job. So far my instinct of judging clients has worked well.
And of course there are always new clients, some of whom will eventually turn to old clients.
gorbunov: For me it is a well-known fact that customers tend to underestimate the project costs, and overestimate speed of development. How do you deal with this?
walrus71: Very easily; it should be you who estimates the costs and schedule, not the client. I never commit to a task before fully understanding what the scope is. It’s ok if some of the details are unclear but you should have a more or less correct understanding of what exactly you want to achieve and how. Of course there may be surprises, but nasty and pleasant surprises should be canceled out on the long run. My experience is that most of the clients are happy to see a fair evaluation of tasks and costs, and accept it without trying to get more for the same price.
gorbunov: How and when did you decide to become a copilot for sponsored marathon matches?
walrus71: I don’t even remember, the first one was in 2012, probably it went something like Topcoder saying “Hey, we need some help, are you interested and willing to be a copilot?”, and me saying “Why not, what is there to lose?”. Doing more of these jobs was of course a more conscious decision. I realized that there are many elements of these tasks that are quite enjoyable with the most important one being that I can help to solve a real life problem which brings the satisfaction of doing something useful. This is one more thing that people not always get in their regular daily jobs.
gorbunov: As a copilot, what are your responsibilities? Do you try to solve the task yourself first? How much time does it usually take from the beginning of a task preparation until the match launch?
walrus71: My main task as a copilot is to help the stakeholders of the contest (in simpler words: the guys who pay) to turn their business problem into a computing problem. This may sound simple but in practice it can be complicated in many ways. To start with, clients may have only a very rough idea of what they want to achieve; they want to do something better than how it is currently done. But what this ‘something’ exactly is we don’t know. What ‘better’ means we also don’t know. Usually this requires lots of discussion to agree on what we exactly want to achieve and how we know whether we achieved it. A common problem is that we want too much; we would like a solution that is accurate, fast, solves all use cases, and can be taken into use immediately after the contest. This is almost never possible. I learned that it is better to concentrate on one carefully chosen aspect of the problem at a time.
The to-do list of a copilot is pretty long and once I was considering writing a copilot guide but then I got frightened away of the task after estimating how long the resulting document would be. The main tasks are discussions with the client (coming up with the concept and the exact way of scoring), writing the problem specification, preparing the training and testing data (sometimes this is trivial, sometimes this can be a huge task), writing the online scoring application, creating a visualizer tool, providing support on the forum when the contest is live, running final tests, and many more. All this typically takes a couple of months, but it’s very far from being a full time job, the net amount of work may be a month or less.
Whether I solve the task myself; usually not, this is the task of the tester. One of the main drawbacks of being a copilot is that I can’t participate in the contests. Recently there were some really interesting challenges that I would have liked a lot to try my skills in.
gorbunov: The sponsored matches are becoming more demanding on computer resources. Wladimir Leite, (wleite), says that he uses a 64-core computer for local tests and Marek Cygan used to spend up to $500 per match on the AWS machines. What do you think of this? Is it possible, in order to increase the participation level, to make some lightweight versions of the data sets available to everyone, without the paid AWS accounts? If, let’s say, a participant gets some score on this lightweight test, he is granted access to an AWS machine?
walrus71: Indeed, this trend exists and I don’t like it. Nowadays most image processing tasks are won using deep learning, and often what happens is that people build quite similar neural network architectures, but the guy who can throw more computing power at the task will have an advantage over those who can not. This is perfectly fine for the client but spoils most of the fun of the contest. I’m always happy to see when a contest is won using bright ideas, some out of the box thinking, rather than brute force. I agree with you that it would be nice to somehow mitigate this problem but have no idea how this could be done.
gorbunov: Does the Topcoder rating matter for you, or you prefer to judge fellow programmers based on different aspects?
walrus71: I highly value the achievements of the top members, winning hard challenges, performing well on TCOs. I like to read the “Post your approach” threads and I’m happy to read interesting ideas or helpful comments. I also regularly look at other people’s code and often find solutions that are worth learning. But I don’t care about rating at all, my rating and rating of others included.
gorbunov: What is harder for you, to write tasks for matches, or to solve other’s tasks?
walrus71: These two are not comparable as different units of measurements apply. Being a copilot usually doesn’t involve very difficult tasks, but it can be hard in the sense that you have more responsibility; with a poorly designed task you can spoil the fun of many contestants and also waste the money of the client. But unless you seriously screw up something you can’t really tell how good you are doing. Participating in a contest, on the other hand, is quite the opposite; you know exactly how you are doing compared to the others, but you have zero responsibility. So to sum up, copiloting can be hard, competing can be NP-hard, but comparing these two is the hardest of all.
gorbunov: What is the story behind your handle? Is the Beatles song “I Am The Walrus” involved?
walrus71: Sadly there is no great story here, not even a song. I used to have a big moustache during high school years. Well, not big in the grandpa sense of the concept but it was noticeably present. So my nickname used to be “rozmár”, which means walrus in Hungarian.
gorbunov: What would you, as a senior Topcoder, say to a young marathon track participant?
walrus71: Two things. The first is that you should never trust anyone who offers life advice that is worth its weight in gold. The second is a piece of life advice that is really worth its weight in gold. You should appreciate how much time you have now and use it wisely. You will have a full time job and you will have a family, your university years are the ones best suited to spend with things like programming contests.
gorbunov: Your creative credo?
walrus71: I don’t like the mysticism around creativity. I think that being creative is not a gift or a special talent, rather it is the natural way how your mind should work. People often say “I’m not creative, I never have original ideas”. They also often say “I can’t sing”. Neither statement is true. You have lungs, I’m almost sure of this, and probably also vocal chords. So you can sing, it’s only a matter of practice and self confidence how enjoyable your singing is to yourself or to others. Similarly, you have a brain, and it’s also only a matter of self confidence and some curiosity to try to use it in new ways. Ok, motivational speech over.
Anatolijs Gorbunovs, gorbunov, is a software programmer from Latvia. During his school years, he was an amateur athlete with several Latvian Youth/Junior champion titles in long distance running. He graduated from University of Latvia and his hobbies include music, running, and programming competitions.