Computerworld's "Rock star coders" profile: SnapDragon
On January 22, 2008, Computerworld ran an article about various TopCoders and how programming has affected their lives. The following is the full Computerworld interview with SnapDragon, from which portions were used in the article.
Q: How did you become a coder?
A: I've been coding since I was too young to remember, slowly making my way from BASIC on my TI 99/4A to Logo to Pascal to C++. When I was young, I competed yearly in a Calgary programming competition where students got to show off programs they'd written that year. I think I owe a lot of my skill to that early interest.
Q: How many hours per day do you code or practice?
A: These days, working at Google, I seldom have time to practice for coding competitions, though of course I'm always coding. :) In my University days, when I was eligible for the ACM team (and afterwards, when I was helping to train the ACM team) I would often spend 5+ hours a day just practicing challenge questions. I think I owe all my success in competitions to that intensive training.
Q: Challenges/successes you've had finding ways to get paid for your talents.
A: Honestly, as a challenge veteran (with ACM and TopCoder victories under my belt) it's not hard at all getting a well-paying programming job. Programming doesn't come naturally to humans, and there are a lot of bad programmers out there who are only in the field for the money. Companies will pay very generously to identify and nab the proven good ones. As TopCoder's well aware. :)
Q: Toughest job or coding challenge you've met.
A: My real-life work is more tedious, and less challenging, than the difficult, but abstract, problems I see on programming challenges. So I'd say coming 3rd in the ACM World Finals is the result I'm most proud of.
Q: What do you love about coding?
A: Coding competitions. The satisfaction of getting a tough problem, thinking through the theory, implementing a program, and then learning you've solved it perfectly is fantastic. challenges isolate the essence of what's fun in coding.
Q: What do you hate about coding?
A: "Software engineering". Most real-world programming doesn't involve any new algorithm, doesn't require any cleverness; it merely involves implementing some known solution and making sure it's robustly commented and tested. It requires self-discipline simply because it's so boring!
Q: What hobbies/interests do you have other than coding?
A: I play a lot of videogames, fiercely analyzing and dissecting their patterns. I also like to solve puzzles (crossword puzzles, Sudoku-style logic puzzles, etc.), and I compete internationally in that, too. Whatever my hobbies, I usually find a way to bring math in!
Q: We'd also like to talk about benchmarks that the industry uses (either officially or not) to determine the "who's who" among coders. Do you have any parameters in your own mind by which you measure "star coders," as well as thoughts on the characteristics of this 'culture' of developers?
A: I think the star developers are mostly unsung; it's the people like me, who simply specialize in doing well at challenges, who seem to get what glory there is to get in this field. :) There's some correlation between challenge and development skill, sure; but I don't consider myself a fantastic developer. I've just specifically learned how to do well on toy challenge problems. The people who can churn out high-quality real-world code, or (say) do well in TopCoder's design/development challenges, who really keep the computer world progressing.
Q: Would you rate as the very best those coders who are fast and brilliant only, or would you say they also need to be equally adept at working with people (to understand the needs of the program)?
A: Like I said, the best developers need skills that don't necessarily overlap with challenge skills. But personally, I admire brilliance most of all. For instance, Reid Barton is far smarter than any of us; he hasn't focused on TopCoder, though, which is why he's not as highly ranked.
Q: Are there certain coders who grow nearly famous, for instance by winning lots of challenges?
A: Well, I'm probably one. I've been recognized before, in pretty unlikely places (like a restaurant, once). I'm not exactly sure how that happened. :) And, of course, tomek and Petr have gotten a lot of publicity for their single-handed dominance of the TopCoder Opens.
Q: Is the world of 'star coders' small enough that certain names are very recognizable by all?
A: On TopCoder, definitely. I think a lot of programmers know the names of the top few.
Q: Is it true that some coders enter challenges simply because they know another coder is in the contest, and they want to be evaluated by competing with that person?
A: Hmm. I couldn't say. :) Personally, I often check the registration list to see if Petr or tomek is competing... but that's more because I'm scared of them. I haven't chickened out yet, though! :)