Да, я согласен в том, что для разработки большинства приложений на высокоуровневых языках (типа C#, не говоря уже о веб-программировании некрупных сайтов) алгоритмическое мышление особо не пригодится.
Алгоритмическое мышление пригодится везде, но кроме мышления, в любом программировании требуется ещё довольно большой объём весьма конкретных знаний и умений.
Но я стремлюсь к другим направлениям в программировании. Самое приоритетное направление это системное/низкоуровневое программирование под ОС семейства *nix (в частном случае под ядро Linux), пока я ещё новичок и ассемблер (для начала IA-32) подтягиваю. Я знаю, что это сложно, но мне очень нравится это направление.
Низкоуровневое программирование ничуть не сложнее высокоуровневого; просто подготовка нужна другая. Если Вы хотите заниматься подобными задачами, то Вам, на мой взгляд, лучше идти от компаний: найдите фирмы, занимающиеся интересующими Вас разработками, зайдите на сайты, посмотрите требования к знаниям и опыту, предъявляемые к претендентам, и двигайтесь в сторону соответствия этим требованиям.
И думаю там гораздо больше алгоритмов и нетривиальных задач.
Особенно не обольщайтесь. После того, как пропадает прелесть новизны (а это происходит довольно быстро), в любом программировании доля нетривиальных задач составляет процентов 5-10; всё остальное -- это обычная рутинная работа.
Google и другие подобные компании рассматривают победителей олимпиад как претендентов. Например, Google Code Jam создан не просто как олимпиада, но и как способ найти лучших претендентов.
Google
всех рассматривает как претендентов. Победа в какой-нибудь олимпиаде -- это несомненный плюс, но отнюдь не является необходимым или достаточным условием для получения работы.
Учитывая вышеописанное, остаётся ли в силе Ваш тезис относительно бесполезности решения олимпиадных задач?
Я где-то писал о бесполезности? Решайте, если хотите. Только учтите, что решение таких задач даст Вам только весьма малую часть знаний и умений, необходимых в практической деятельности.
Поможет ли мне поиск и модификация open source программ с целью понять их структуру?
Ну а почему нет? Если Вы собираетесь заниматься разработкой графических редакторов, то весьма полезно взять, например, Gimp и попытаться понять, как он работает.