Here are some of the positive qualities I would expect from a competitive programmer compared to the general CS population early in their career:
- knowledgeable at algorithms and data structures
- good at analyzing correctness and edge cases, even on simple non-algorithmic problems (e.g. FizzBuzz)
- accustomed to working hard and learning new concepts. this attribute is not specific to competitive programmer – for example, I'd expect similarly from an open source contributor – but it's higher than for a typical college student.
Some negatives I'd expect, which are fixable over the course of the course of their career:
- over-confidence in code, under-testing
- less skilled in OOP, coding style, version control systems, as well as web development or systems code (unless they have specific previous work in these areas)
- sometimes looking down on gruntwork/rote as beneath them (like the view that pure mathematicians have towards applied math or statistics)
I think that list of positive attributes often outweighs the potential negatives, especially during an internship or in the first year or two of someone's career. After that, I would expect many non-competitive programmers to have picked up on some of those advantages (code correctness, learning new concepts).
I've tried to steer my own interviews away from algorithms (especially DP) and focusing more on giving problems that are relatively straightforward, while still being complicated enough that someone has to write precise code and identify/fix a few edge cases.
- knowledgeable at algorithms and data structures
- good at analyzing correctness and edge cases, even on simple non-algorithmic problems (e.g. FizzBuzz)
- accustomed to working hard and learning new concepts. this attribute is not specific to competitive programmer – for example, I'd expect similarly from an open source contributor – but it's higher than for a typical college student.
Some negatives I'd expect, which are fixable over the course of the course of their career:
- over-confidence in code, under-testing
- less skilled in OOP, coding style, version control systems, as well as web development or systems code (unless they have specific previous work in these areas)
- sometimes looking down on gruntwork/rote as beneath them (like the view that pure mathematicians have towards applied math or statistics)
I think that list of positive attributes often outweighs the potential negatives, especially during an internship or in the first year or two of someone's career. After that, I would expect many non-competitive programmers to have picked up on some of those advantages (code correctness, learning new concepts).
I've tried to steer my own interviews away from algorithms (especially DP) and focusing more on giving problems that are relatively straightforward, while still being complicated enough that someone has to write precise code and identify/fix a few edge cases.