Ghostar has had an exemplary TopCoder career: He's in second place in the current stage of the Digital Run, and he's finished in the Top 5 in two previous stages. On top of that, he found time to manage the development of TopCoder's new UML Tool. In this conversation, he outlines how he "went pro" with TopCoder, combining Software Design competitions, review board work, and projects into a full-time job.
Q: What made you decide to work on TopCoder stuff full-time?
A: I went full-time with TopCoder in December of 2005. I was previously working as a software engineer for Renaissance Learning Inc. in Wisconsin Rapids, WI. At that time, I had been involved in TopCoder for almost a year, doing basically designs and design review. In that year of doing part-time TopCoder work, I made a similar amount of money in a much reduced amount of hours compared to my full-time position. A big part of my decision was the ability to make potentially more money, but I also like not having to drive to work and being able to set my own schedule. Driving to work in Wisconsin (more than 5 miles or so) can be a bit harrowing in the winter, so I like not having that stress to deal with. In the 18 months I worked as an engineer, I had to help people in both a nasty head-on collision and a rollover accident, and hit a deer on the drives to and from work.
I actually work less than 40 hours a week on an average week mainly because I am not constrained to a cubicle for 8 hours a day. That being said, I am actually more productive than I used to be, because every hour worked is actually work-related. In a cubicle setting, you may be at work for 8 hours a day, but there is rarely a day when all 8 hours of that is actually productive.
At the beginning of going full-time with TopCoder, it was definitely a little “tight” -- for the first 5 months or so, my wife and I had to adjust to not having a set income -- but the last year has been great, with better design choices and of course the addition of the Digital Run. I actually interviewed with a different company in my area to go back to full-time work last year. I eventually decided to turn them down, and later that the same week the Digital Run was announced, so that worked out pretty well.
The flexibility of the schedule has just been a great thing. I like being able to go golfing during the day in the summer, and the flexible schedule allows me to help out in different community capacities by volunteering. It is also great to be able to go on vacation and not really have to ask for time off. When we go on vacation I normally do about 15-30 minutes worth of work a day, mainly answering questions and email, but I don’t do any new designs or reviews, usually.
All in all, I absolutely love the way that this has panned out. I get to work on cool, new technology on a schedule that works for me, making more money than I ever could doing the same thing in my area.
Q: How do you explain it to people?
A: I actually don’t try to explain it to most people. I just say I am a software designer for a firm in Connecticut and usually leave it at that. Normally people just hear that and lose all interest. :) A few of my old co-workers have been exposed to TopCoder somewhat through my trying to bring them in to assembly competitions, and I was lucky enough to bring my wife, her mom, and her aunt along to the TCO in Las Vegas, so they know a little better how things work and what the company actually does.
Q: How do you figure out where to invest your time?
A: I don’t really analyze this too much. I usually just sign up for designs that interest me and that I understand, based on the Requirements Specification. I like to do .NET designs, as I have a much better success rate with those designs, and I understand the .NET framework a lot better than Java. I have never really programmed in Java, besides college classes, so those designs take a lot more time for me to do.
I tend to shy away from complicated designs for a number of reasons. Normally these designs take 2-3 times as much time to complete, but only pay 1.5 - 2 times as much, so the time / payout ratio doesn’t usually work out in my favor. Secondly, I am not good at the intricacies of complicated designs, normally. I am not usually able to visualize a complex design, and I am not very good at language parsing, complex database interactions, or designs that require heavy computation, especially if optimizations are involved. I usually stick to things that are pretty straightforward, and I especially like getting in on the “ground floor” of designs that build upon each other. For instance, the WCF and WF Activity components have been a great set of components for me [note: you can see the list of these and other components in Ghostar's competition history]. They all build on each other, allowing me to improve upon the designs with each iteration, with usually less time put into the designs with each iteration as well.
Q: Is it tough to know how much work you really need to do?
A: I don’t have a certain quota or anything usually to tell me when I’m “done.” Some weeks there are a bunch of designs that I know I can do, so I will try to do 3 or 4 of them, and other weeks there are only 1 or 2 designs that interest me, so I do less, possibly filling in with a review. Normally this all evens out over a month to a payment that is more than fine. The Digital Run bonuses help to even out the months that I don’t do as much.
Q: How do you avoid distraction while working at home?
A: I don’t really avoid them at all. I work in “spurts,” allowing the distractions to happen. For instance, on a given day I will usually only work 1.5 - 2 hours at a time, doing stuff in between 2 hour blocks around the house or randomly surfing the Internet. This works for me, as I am very focused for my “work” time and I let my mind wander in between. This wouldn’t work in a “regular” cubicle environment.
Here are pictures of my two biggest distractions, one of who can be seen sitting in my official TopCoder backpack. Normally I can just lock them out of my office and they don’t bother me too much, unless it is dinner time.
Q: Apart from wrangling cats, do you have any other routines that help you stay focused?
A: I usually just crank up iTunes and go to town. I don’t really have any habits or routines that get me focused.
Q: How do you deal with fluctuations in your income, especially in times when you're not winning?
A: I am still figuring this out, but it is getting a little easier. My wife and I have a fairly set budget we work off of, and we usually have a “buffer” set aside for those times when I don’t get paid a lot. I was getting paid bi-weekly for about a year, thanks to my work on the UML Tool, which made things easier, but I am now transitioning over to the monthly payment schedule. This current time is a little tight since I am right at the end of that transition, so I am looking forward to the August 15th payment. Normally when I get a larger payment, we pay monthly expenses more than a month in advance, which allows us a month or two of not having to worry about mortgage, utilities, etc. The “buffer” is also extended for unexpected expenses, like medical bills or miscellaneous car repairs.
Q: How do you deal with the practical issues, like insurance, taxes, and savings?
A: I haven’t brought myself to watch “Sicko” yet, but I am sure I am in the target audience. Health insurance is just a tough thing to deal with, especially since I was fairly well taken care of in my last “real” job. We basically just have a large deductible on our health insurance, taking care of things like medications out of pocket. We try to keep a majority of the deductible in the “buffer” in case something happens. When you pay your own health insurance, it is definitely a large incentive to be in shape as you can get a “preferred” rate.
Life insurance is pretty standard. Both my wife and I have policies that pay quite a bit more than what I had through my last employer. Compared to the expense of health insurance, life insurance isn’t that big a deal.
The one thing that we have been looking into is long term disability insurance, in case I get hurt and can’t work for an extended period of time. We didn’t get this right away when I quit because they calculate your potential benefits based on past salaries, which would have included my time working for my previous employer. Because of this, and the fact that I make quite a bit more now, the potential benefits weren’t worth the expense at the time. We will be revisiting this soon to see if the potential benefits are greater now.
Taxes are a constant struggle. I have actually received a lot of advice from my dad, who owns a software company and has experience with the self-employment tax, among other things. The big thing I try to do is make sure my quarterly payments are enough to not receive a penalty and keep enough saved to make sure I can pay in full in April. I also make sure to save all receipts for all utilities and my computer equipment, as I can deduct a portion of my utilities, since my office is in my house, and my equipment is mostly deductible.
Savings are another thing we are still tweaking. My wife and I both have ROTH IRA’s that we contribute our maximum amount to each year. We will probably be looking into a 401(k) or similar account at some time in the near future.
Q: What are the pros and cons of doing TopCoder work full-time?
The plusses are a much larger salary than I could ever expect in my area, a flexible schedule, lots of free time, the ability to only do the work I want to do, and the chance to work on new technology. I honestly think I am extremely lucky to be able to do this, I can’t think of a better job to have. With the Digital Run, I have absolutely no desire or incentive to even look for new opportunities, since there is no way they could be anywhere near as good as doing TopCoder work.
The cons are minor compared to the pros. I don’t like not having anyone to talk to in my office. The highlight of my last job was basically just talking to people and having fun with co-workers. The complexities of taxes and insurance aren’t fun, but once you get them figured out, they really aren’t a big deal.
What's your TopCoder story? We're looking for new educational tutorials and feature articles -- if you've got ideas, email them to email@example.com.