JOIN
Get Time
features   
Digital Run Stage 2: Going for the win

Author
By argolite
TopCoder Member


After a respectable 14th-place finish in Stage 1, argolite emerged as the early leader in Stage 2 of the Digital Run's Design Cup -- and only opened up the lead from there. In Stage 1, aubergineanode set the bar for victory high with 7,060 points; argolite blew past this mark in Stage 2, earning a total of 10,570 points. Over the course of just ten weeks of the stage, argolite competed on 35 components, winning 28 and taking second place on 7. Here, he tells us how he did it.

How much work does it take to win? It's been my full-time job, definitely. Actually, more than that – it's been full-time, over-time, and, some weeks, sleep-time. I believe aubergineanode estimated 20 hours on average for a medium-to-hard component last stage, and I'd say that's pretty much true for me. Not all of them take quite so long, of course – there was one component, in week 5, that I was able to get done in 2 hours. That was a big lucky break, because that was a week when I needed to get 3 components done in 24 hours, and it ended up being 24 hours straight of work. Weeks like that show you why a lot of component competitors think of Thursdays [after components are due] as their chance to sleep in.

I never really planned to break 10,000 points. My primary goal was to win, and I didn't really care how many points it took. Ten thousand is a nice round number, and it's cool that it was the challenge AleaActaEst put out there in his Stage 1 article, but it wasn't something I intended to do.

The thing that did it was week 10 of the stage, I believe, when all the UML components came out. There was a lot of speculation that, because all those components were related, someone could build a template or code generator, tackle all the components, and rack up a huge number of points. I was in first place at that point, with around 7,000 points at the start of the week, but I was worried about protecting my lead, so I jumped into all the UML components. I ended up doing 12 designs that week – I won 8, and got 4 seconds, and racked up around 3,000 DR points. That was the week where I locked up the win.

It was a crazy week. Usually, components are so disparate – different types of requirements, different technologies – it's unusual to be able to do so many similar components at once. It was a tremendous opportunity for someone to really rack up points, so I'm glad it happened to be me.

When did I decide to go for the win? I wasn't working on components much for the first stage of the DR. I had been on vacation for a while and, when I came back, there were just a few weeks left in the first stage. Pretty quickly, though, I saw that there was still enough time to get involved – with just a few weeks left, I was able to do well enough to make it into the top-third. It was a great incentive to do a little more than I would have done otherwise, and it gave me momentum going into Stage 2.

I didn't really think about going for the win until the third week or so, and it was a week or two later before I felt like it was actually within my reach. At that point, I really wanted to take the lead, and make it clear that I planned to keep it – I think it was around then, week 4 or 5, that I submitted 4 components and started to open up a lead. Neither of my two closest competitors really made a big push at that point – AleaActaEst ran into some reliability issues, and Ghostar seemed to be busy with other stuff – so I was able to get out ahead.

Reliability is critical. During week 10 – that crazy week with all the UML documents – there were a fair number of competitors asking that the reliability rule be suspended. If my reliability rating wasn't high enough, I could have been forced to sit on the sidelines and watch someone else do 12 designs that week, and watch them take the lead away from me. In order to be flexible and stay competitive, you really need to focus on reliability. Plus, the reliability bonuses you can earn on top of component payments are nice.

I'd recommend reviewing, too. It helps me see things from the other side. I know what I should be looking for, and I can really put myself in the shoes of the reviewer based on my own experiences. Even through the DR, I have continued to do reviews. It's a slightly more dependable source of income – it's a straightforward work-for-pay deal, so I don't have to wonder if I'll come in first or second – and it's a great way to learn. Dealing with Pops as a reviewer, for example, has been a tremendous learning experience. You get access to the people you can learn from, and you get paid for it.

My approach to components during the Digital Run is to do a competent job, and make sure I cover all the requirements, but I generally didn't go too far above and beyond or make a lot of enhancements. Figuring out the right amount of information to include in a design is a balancing act. You want to include the most clear, relevant information that you can in as little space as possible, while avoiding digressions and tangents that could confuse developers or cost you points with reviewers. If there's something that could help the developer but that might distract a reviewer, leave it out – you can always add more information during final fixes.

When it comes to choosing components, generally speaking, I like to spread things around. It feels like there are enough components, especially these days, that everybody can take a shot and do pretty well each week. Plus, I think that too much competition can be counterproductive. I was a reviewer, back during Stage 1, during the week when aubergineanode and Pops went head-to-head on four components. It's kind of sad to see people doing really excellent work and racking up a score like 98.5 and see them come in second. They deserve a first-place for that.

I also tend to go more for the components I know. Continually going after new technology isn't the best approach to the Digital Run, in my opinion – the extra time you spend in research can be rewarding, but it adds up. But there are exceptions, like the Client Extension for Firefox component. It was new technology and scared a lot of people off, so TopCoder had to keep reposting it and increasing the price, until eventually Ghostar jumped on it, got 500 DR points, and a pretty large payment. So most of us don't want to go too far outside our comfort zone, but sometimes the component that everybody else is avoiding can be a great opportunity for both DR points and money.

It's just been a tremendous experience, in terms of the work and the reward. I've been doing components for a while now – my first one in late 2002 – but it's always been something to do in between contracts, or while I've been doing other things. This is the first time I've thrown myself fully into it, and I've never had an experience like it.

Imagine a contract where you could just work like a dog one week and earn three, four, or five thousand dollars – then, if you want, take the next week or two off? Especially with the big number of components coming out these days, I get the opportunity to try out new technologies, learn on the job, and get paid for it. In all the different contract and work assignments I've had, I've never had a situation like this where I can pick the work I want to do, get paid very well for it, and take a break any time I like it.

Nothing compares to the working relationship we have with the PMs and admins, either – generally, when you're off on a contract, the PM or whomever you're reporting too is pushing you, and there's someone looking over their shoulder pushing them to get things done faster and cheaper, and so on. TopCoder just doesn't feel like that.

And it pays well. I'd say that, between component payments, reliability bonuses, and DR prizes, I'll end up making a little bit more than $60,000 for Stage 2 – or, to put it another way, I'll get paid that much for 10 weeks of very hard work and 3 weeks of vacation.

What will it take to win Stage 3? My advice is that you really have to be honest with yourself. What are you actually hoping to accomplish with the Digital Run? Based at least on the design side, and on the first two stages, having a shot at winning really takes a full-time approach. You have to commit yourself fully to it – if you've got another project, or contract, or full-time job, I just can't see it happening. If you can't commit to a more than full-time commitment, for at least 10 or 11 weeks, you can forget it.

But, that said, winning isn't the only option. Second through fifth place are still very competitive, and it's possible to devote just a few serious weeks to the DR and crack the top 5. Look at real_vg in Stage 1, or Standlove in Stage 2 – they just came out of nowhere, and rocketed up the leaderboard with just a couple heavy weeks. Or look at dplass, who doesn't do a component every week, necessarily, but he submits when he registers, his reliability is good, he's earning good bonus money, and he's in the lead for rookie of the year.

The DR can be very much worth your while, I'd say, if you could commit 5 pretty serious weeks to it – not necessarily quitting your job, but just making a concerted effort. With some wise choices on component registration, you can lock up some of that top third (or top half) bonus money, and even have a shot at the top 5.

And again -- if you can, get yourself to 100% reliability. That reliability bonus, on top of the component payment and the DR bonus, can really add up. And keep your Wednesday nights, and early Thursday mornings free, just in case. That extra 10 or 12 hours could come in very handy. Good luck!