Red-Green-Code

Deliberate practice techniques for software developers

  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter

CPFAQ: Will Competitive Programming Success Help Me Get a Programming Job?

By Duncan Smith Nov 8 0

Coder

I’m working on a project this year to build a competitive programming FAQ. This is one in a series of articles describing the research, writing, and tool creation process. To read the whole series, see my CPFAQ category page.

Although Quora is by far the most popular venue for competitive programming Q&A, questions do sometimes pop up on other sites. On Stack Overflow, competitive programming questions typically get downvoted and deleted in short order. Reddit has more lenient policies and allows questions to stay up even if users have asked them repeatedly in the past. Here’s one that appeared last week on the CSCareerQuestions subreddit:

Competitive programming, worth dedicating time to it or not?

Do employers value competitive programming at all?

Although the question didn’t get a huge amount of attention — after a few days, it has just three upvotes — the responses covered a range of opinions similar to those expressed on Quora when people ask similar questions there.

The Question

As often happens in these situations, the author didn’t write the question as clearly as he could have. Here’s how I would express the main idea: Will Competitive Programming Success Help Me Get a Programming Job?

When people write questions on this topic, they sometimes word them in a way that implies companies might be interested in competitive programming skill for its own sake. Here’s an example from Quora: How do Champions of programming competitions get a job with just one skill? (Bohdan Pryshchenko’s answer: “A lot of people are looking for a job while having zero skills, so one is already not that bad.”)

But of course companies are in the business of solving real-world problems, not academic competitive programming problems. So if they are looking for competitive programming skill, it’s as an indicator of another skill, not as an end in itself.

Do It If You Want To

Do it if you like doing it, not if you don’t.

Only do it if you enjoy it.

Do it if it’s easy to do so. And if you just like the challenge really do it. If you hate them it’s not a big deal, you can get the same benefit or better from doing your own projects instead.

A common opinion about practicing competitive programming for interview preparation: interview candidates should use it only if they enjoy competitive programming. This is true, with a few caveats. Because of the popularity of algorithm-style interviews, it’s not possible to ignore algorithmic problem practice and still have a good chance of being hired at a wide range of software companies. But competitive programming is not the most efficient way to prepare for those interviews, because the problem types emphasized in programming contests differ from the ones emphasized in coding interviews. Still, it’s better than not practicing those kinds of problems at all. I don’t agree with the quote above that says “doing your own projects” is a sufficient alternative, because most people who focus only on real-world coding find coding interviews difficult. My Quora question Is “invert a binary tree” a good question for Google to ask in a technical interview? references a situation where the author of a widely used open-source product failed to make it through the Google interview process because (he assumes) he didn’t prepare for algorithmic questions.

The best options for people who don’t like competitive programming but still want to get better at interview questions are online judges that focus on interview problems. LeetCode and HackerRank are two popular ones. These sites capture most of the benefits of competitive programming practice while focusing on the right types of problems for interviews. They don’t provide the all-consuming challenge of preparing for ACM-ICPC with a team, or the scheduled motivation of regular live Codeforces contests. But they supply more gamification than a traditional coding interview book and don’t require as much time as the competitive programming lifestyle.

Meeting Smart People

I met some of the smartest engineers I know on our programming team.

It’s common on Quora to see the criticism that competitive programming emphasizes competition over collaboration. Partly this is due to the theory that competitive programmers are a distinct group of people who approach all of their programming tasks with a competitive programming mindset. But the group labeled as “competitive programmers” is just a collection of programmers who happen to participate in programming contests. They are as capable as any programmer of adjusting their programming style to fit the task at hand. And in the case of ACM-ICPC, the task requires collaboration, since the contest requires contestants to participate as a group.

One side-effect of collaborating with other programmers is the opportunity to expand your professional network, which is useful when the time comes to look for a job. Competitive programming is a way to meet other motivated programmers while getting the additional benefit of algorithmic problem practice.

Ratings and Rankings

I’m hesitant to mention it on my CV unless I actually come top worldwide or something.

Competitive programming practice can help with passing an interview. But what about getting invited to interview in the first place? Recruiting-oriented competitive programming platforms like HackerRank and contests like Google Code Jam can tie ratings directly to interview invitations, at least for some participants. For online judges like Topcoder and Codeforces, the relationship is less direct, though companies sometimes also use those platforms for recruiting. Nevertheless, there’s never a guarantee that companies will notice a contestant’s success.

While some Quora writers claim they would throw out a resume with a competitive programming credential, I doubt that would happen in the real world. So it doesn’t hurt to include one. But it won’t have the same beneficial effect as real-world experience.

(Image credit: WOCinTech Chat)

Categories: CPFAQ

Prev
Next

Stay in the Know

I'm trying out the latest learning techniques on software development concepts, and writing about what works best. Sound interesting? Subscribe to my free newsletter to keep up to date. Learn More
Unsubscribing is easy, and I'll keep your email address private.

Getting Started

Are you new here? Check out my review posts for a tour of the archives:

  • Lessons from the 2020 LeetCode Monthly Challenges
  • 2019 in Review
  • Competitive Programming Frequently Asked Questions: 2018 In Review
  • What I Learned Working On Time Tortoise in 2017
  • 2016 in Review
  • 2015 in Review
  • 2015 Summer Review

Archives

Recent Posts

  • LeetCode 1288: Remove Covered Intervals January 20, 2021
  • LeetCode 227: Basic Calculator II January 13, 2021
  • A Project for 2021 January 6, 2021
  • Lessons from the 2020 LeetCode Monthly Challenges December 30, 2020
  • Quora: Are Math Courses Useful for Competitive Programming? December 23, 2020
  • Quora: Are Take-Home Assignments a Good Interview Technique? December 17, 2020
  • Quora: Why Don’t Coding Interviews Test Job Skills? December 9, 2020
  • Quora: How Much Time Should it Take to Solve a LeetCode Hard Problem? December 2, 2020
  • Quora: Quantity vs. Quality on LeetCode November 25, 2020
  • Quora: LeetCode Research November 18, 2020
Red-Green-Code
  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter
Copyright © 2021 Duncan Smith