Мнений всяких много. выше уже отписали. кто-то говорит, что проекты лучше, кто-то говорит олимпиада.
Выскажу и свое.
Первое, я бывший олимпиадник. Участвовал в ACM. Готовился не очень фанатично. В моем вузе каких либо подготовок олимпиадных не было, а потому изучал большую часть сам. Сами собирались с командой, тренировались.
В итоге, дальше четверть финала (первая ступень, проходила в Саратове) никогда дойти не получалось. На соревнованиях моя команда была обычно где-нибудь в середине. То есть не хуже и не лучше других. В итоге, дипломов об каких-либо местах у меня нет, только сертификат участия.
Что оно мне дало? потеряно ли время?
Что дали мне олимпиады командного типа, например, ACM.
0. Классическое алгоритмическое образование.
Вы не поверите, в разработке оно важно, очень важно, так сложилось, что постоянно приходится решать сложные вещи.
1. Понимание тонкостей языка и его библиотек (это может быть Java или C++) — это уже важно для разработки высоко производительных приложений. Это уровень уже старшего разработчика.
2. Умение работать с кодом, читать свои и чужой код, быстро искать в нем ошибки.
3. Умение писать код качественно, без ошибок, думать о всех вариантах входных и выходных данных.
4. Умение работать в команде. Практика совместного решения задач, парного программирования и прочего
5. можно ещё долго перечислять разные плюсы…
Что дают свои проекты(ну или работа):
1. покопаться в чужом коде (причем не всегда лучшего качества)
2. хорошая практика долгосрочного программирования
3. опыт разработки проектов (это тоже важно)
4. работа в команде (если повезет)
5. всякие тру-практики и идеологии (TDD, Domain Design, шаблоны проектирования + ООП)
6. пощупать разные технологии (минус, они почти все рано или поздно устареют, так что без фанатизма, изучайте то, что вам реально нужно на данный момент)
7. может что ещё, сами додумаете…
Вывод, олимпиада — жутко полезная штука. Даже если вы ничего не займете, то вы получите такой опыт, который позволит вам быстрее дорасти до старшего разработчика, а может и выше.
Однако, работа тоже дает какой-то опыт.
Я считаю, стоит заниматься и тем, и тем. Но олимпиаде давать предпочтение, т.к. как сказали выше — это долгосрочные инвестиции.
Конечно, если вы решили все-таки победить где-нибудь, про работу лучше забыть, и готовиться. В конце концов это тоже работа очень большая и тяжелая, которая потребует строгой дисциплины и большой самоотдачи.
А дальше выбор за вами.
PS: я живу в провинции, разрабатываю приложения, производительность которых очень важна. Мне постоянно нужен олимпиадный опыт. Так что все холивары по поводу, что работодателю человек с такой уймой знаний не нужен — не принимаются, т.к. нужен, просто скорее всего вы не там искали.
Даже наоборот, найти адекватных разработчиков тут в провинции безумно сложно.