Студент, программист.
Все очень хорошо с математикой, есть места на международных олимпиадах, научная работа, интерес и понимание самых абстрактных областей этого знания. Успехи в программировании - слегка выше среднего уровня, главным образом из-за недостатка времени. Я уже вижу, что в промышленном программировании мой талант не будет востребован, и, если честно, не тянет клепать формочки для бухгалтеров. У меня еще много времени до выпуска, в каком смежном с математикой направлении IT развиваться, чтобы быть востребованным сразу же после выпуска?
brainick: вопрос не выглядит глупым. А если его задаст доктор физ-мат наук 50 лет, который решил, что наука его недостаточно хорошо кормит? В каком направлении IT ему развиваться, чтобы оказаться востребованным за разумное время? Понятно, что у студента возможностей гораздо больше, но при указанных ограничениях ответы должны получиться близкими. И про доктора я очевидных решений не вижу.
Вы понимаете математика - это инструмент для достижения какой-то цели.
Программирование - это инструмент для достижения какой-то цели.
Найдите цель где они нужны, там вы сможете применить свои знания. Я считаю что вам нужно придумывать свои алгоритмы для применения своих знаний - там у вас будет простор в использовании математики.
Придумывать алгоритмы это хорошо, но на икру и устриц только на этом не заработаешь :( Для алгоритмов тоже нужна цель - и люди (или проекты), которым именно эти алгоритмы нужны.
Mrrl: Полностью согласен. У меня например есть цель, проекты и люди а вот алгоритмов иногда не хватает и автор в комментарии к вопросу не оставил никаких способов связи, не смотря на просьбу, значит ему не нужна икра ))
То, что "нужна математика" это хорошо. А паттерны там спрашивать будут? А unit-тесты? Или знания математики и умения написать работающую программу на фортране на 1000 строк достаточно?
Mrrl: Зависит от компании. А у вас такая нелюбовь к паттернам и юнит тестам? :) Я думаю, что такие компании в первую очередь ищут людей которые могут совмещать знание математики, оптимизацию алгоритма на C с ассемблерными вставками и написание юниттестов. Однако если вы очень хороший математик, то вам в пару просто дадут человека, который не так силен в математике, но неплохо знает оптимизацию и архитектуру.
PS: Я бы людей, которые пишут в 1000 строк на фортране в индустрию не пускал. В какой пещере надо жить, чтобы не знать про современные подходы к разработке? Наука дело другое, там сидят увлеченные люди, и люди для которых программирование это просто еще один инструмент.
Кирилл: Любая пещера подойдёт :) Я последние 15 лет занимаюсь одним и тем же достаточно наукоёмким проектом. Периодически отдельные его куски, да и архитектура в целом, перетряхиваются, но необходимости знать, чем отличается какой-нибудь "посетитель" от "посредника" как-то не возникает. И без современных подходов, в общем, пока обходимся.
Кирилл: А вот разделять математику и оптимизацию алгоритма - не очень удачная идея. Знание возможностей оптимизации очень сильно влияет на выбор алгоритма и деталей его... даже не реализации, а декомпозиции, порядка обработки и выбора подалгоритмов. Человек, который знает что-то одно, скорее всего, не найдёт правильного пути, даже с помощью партнёра, который знает другое. Деревья возможностей слишком широки, и найти оптимальную ветку между ними совсем непросто.
Mrrl: Я не разделяю математику и оптимизацию. Я просто говорю что бывают чистые математики, которые мыслят в терминах множеств и графов. Такие люди не умеют программировать, но способны решать задачи. Им нужен помощник, который может не знать графы и множества в той степени, в которой знает первый, но может перевести с языка математики на язык программирования.
Или на примере. Есть люди как Тьюринг (и математик и программист), а есть люди как Перельман (не уверен, но, насколько я знаю, он ен занимается программрованием в принципе). Дак вот перельману нужен кто-то в помощь.
Насчет 1000 строк. Я не говорю насчет знания паттернов и как их применять в бизнес логике. Я говорю про читаемость кода, про умение разделять код на отдельные части (декомпозиция). А 1000 строк скорее говорит либо о том, что человек не хочет, чтобы кто-то другой в этом разобрался, либо ему плевать.
А вообще тема научного программирования очень холиварная. Потому что с одной стороны оно уже 60 лет работает и приносит результаты. А сдругой, копатсья в легаси-фортране 30-летней давности и врагу не пожелаешь.
Кирилл: 30-летней давности - это ещё ничего. Фортран-4 или -77 был не таким уж сложным. Common-блоки, да equivalence... А вот что они напридумывали с тех пор, страшно даже представить. Как в фортран удалось добавить alloc?
Кстати, я не говорил, что 1000 строк - это одна функция :)