И то, и то :)
Как показывает личная практика — возможно заниматься параллельно олимпиадным программированием и вести OpenSource проект, знания получаемые в каждой из этих отраслей взаимодополняют друг друга.
Так если заниматься только «промышленным» программированием, то не будет так оттачиваться чувство скорости работы кода (сложнее находить узкие места, опыт участия в соревнованиях позволяет такие места чувствовать и находить еще на этапе проектирования приложения), не будет так расти скорость разработки, как если бы занимались олимпиадным программированием.
А с другой стороны олимпиадное программирование не дает знаний и опыта в разработке надежных приложений, которые придется сопровождать долгое время, и не даст должных знаний framework'ов и языков.