Tomasz Czajka, a 23-year-old Polish university student, has won two big computer-programming contests in a row — and he's ranked first among TopCoder's 38,000 coders. Is he the world's best geek?
In Poland, we have a small community of people who are good at programming. My parents are both mainframe programmers. They bought me a computer when I was 12, and I started coding pretty soon after that — probably because we didn't have many games. Programming was creative. It was just fun.
These contests are sort of a parallel universe. Not so many people know about them outside the computer world, but thousands of programmers compete. There are two big TopCoder contests — one for students and another open to anyone. This year, I won them both. I won $75,000 in prizes.
For each competition, the first round you compete online via Internet, so over a thousand people are participating. You get three problems with precise specifications of what your program must do. You have to think of an algorithm to solve the problem, then test and debug it. You have an hour and 15 minutes.
It's like a sprint competition. You have to think and type fast. You might be given a maze, and you have to find the shortest path out. Or you have to write a program to recover missing letters from a document, given certain clues and context, or one to untangle a messed-up database of workers.
Each problem is harder than the one before — and it's worth more points. So there's all kinds of strategy involved: You have to decide which problems to work on. Once you start reading a problem, you lose points for each minute that goes by.
So you have to think quickly — but your solution also has to work! In the second round, the challenge phase, you're given other competitors' code, and you have to write tests that their programs will fail on. If you get their code to fail, you get points. Then there's a final phase: the system test. They throw hundreds of tests at your original solutions. You have to pass all of them. If your programs don't pass, you don't get any points.
It is a lot of pressure, especially at the finals. TopCoder brought the 32 finalists to Boston in April, so we all sat in the same room. There were maybe 20 people watching us there, but many more were watching online. About half of the people there I knew from previous competitions, and also from high school contests. It's like a circuit.
I'll probably end up working in algorithmics or computability theory, the theoretical parts of programming. I'd love to do research. I started thinking about trying to write a piece of software for checking mathematical proofs. Mathematicians don't use computers now to do that; they check errors by hand. Like the Fermat Theorem — it took three years to check that by hand. I'd like to work on something like that.
For now, I'm in my fourth year at the University of Warsaw. Next month I'm moving to the United States to pursue a doctorate in computer science at Purdue University. And I got an offer from Yahoo, a TopCoder sponsor, to work for them for the summer. I've already been to the United States for internships at IBM and Microsoft. Also, I was invited to coach the American computing Olympics team, for high school students.
In computing, there are good people everywhere. In the TopCoder university rankings, Warsaw is ahead of MIT. But we don't have very many research places here. There are no IBM labs in Poland. So a lot of people at my university move abroad to do research, like I will. A lot of human resources are wasted.
Will I come back here to Poland? I don't know. The world is getting so small now, I can travel back and forth easily. And maybe in a few years, things will be much better here.
A version of this article appeared in the July 2004 issue of Fast Company magazine.