Среди нас есть Притворщики. Гении, способные стать любым, кем они захотят.
Это вы можете найти в Вики - Притворщик.
Наша профессия очень похожа. За годы работы мне довелось создавать программы в следующих областях:
- Моделирование динамических объектов
- Складской учет
- Документооборот
- Финансовый анализ
- Логистика
- Юридические системы
- Системы обработки статистических данных
- Системы безопасности
- Управление медицинским оборудованием
- Системы мобильных сервисов
- Интеграционные решения для оказания государственных услуг
Пожалуй, хватит. Я уже не говорю о том, что не раз я занимался несколькими проектами по одной и той же тематике. Да и области могут быть еще более детализированы. Вообщем, я тот еще “притворщик”.
Образование у меня техническое, стандартное во времена СССР - высшая математика, физика, сопромат, теормех, начертательная геометрия, электротехника, электроника, философия, научный коммунизм :). Ну и более инженерные - системы управления, системы навигации и прочие спец. предметы. Инженер-электромеханик.
Для многих, кто думает идти в программисты, необходимость знать математику (на самом деле весьма надуманная) является важным фактором не идти в эту профессию. Ну как же там без знаний математики ?
Учитывая невысокий уровень преподавания этого предмета в школах, после которого математика вызывает “такую личную неприязнь к потерпевшему …” - юное создание в шоке. Я очень настоятельно рекомендую - расслабьтесь. Лично мне приличный математический аппарат потребовался лишь для моделирования. Все остальное - там тригонометрии даже не было.
Со мной несколько лет работал программистом … патологоанатом. Сейчас работает в Германии - в одной из крупнейших транспортно-логистических компаний мира. Программистом. В соседней комнате сидит … анестезиолог. Тоже очень неплохой программист.
Если же перечислять технические профессии коллег и кто что закончил, то соберем скорее всего все технические ВУЗы Питера. И не только Питера. Про специальности лучше и не заикаться. Мало того - будет немало тех, кто не имеет высшего образования совсем. И многие являются весьма неплохими специалистами. Потому что нащупали главное - профессия подразумевает быстрое понимание основ и принципов работы области, которую надо автоматизировать. И умение пользоваться определенным набором инструментов для решения разных задач из предметной области.
Таким образом получаем два направления:
- Предметная область
- Набор инструментов
Давайте сначала разберем второй пункт - Набор инструментов. Здесь достаточно просто. Во-первых - он должен пополняться. Для этого надо постоянно что-то читать. Причем на сегодня это подразумевает знание английского языка. Как для чтения документации, так и для чтения сообщений, форумов и прочая. Это факт. Как некогда латынь была главным языком науки - так сегодня английский должен быть в арсенале программиста. Все новые идеи, новые инструменты и документация, общение. Да и возможность выбирать не только российские компании.
Во-вторых - должны нарабатываться навыки использования инструментов. Т.е. просто нужно писать программы, читать книги и чужие программы.
В-третьих - существуют некоторые базовые знания, на которых строится большинство инструментов. Их знать важно. Принципов не так уж много - думаю, что как-нибудь напишу свой вариант.
Есть только пара проблем:
а) Современный инструментарий не преподают. Увы, я знаю, читал программы некоторых ВУЗов.
б) Инструментов очень много.
С пунктом а) - ну тут уже не судьба. Учитесь сами. Или спрашивайте специалистов. Например, меня 
По пункту б) - круг инструментов настолько широкий (и этот список постоянно растет), что знать все невозможно. Сужение этого круга позволяет сделать понимание двух вещей:
а) Выделение аналогов. Ну и что, что в магазине молотков 5-6 видов. Вам же нужен один. выбирайте один из нескольких. И знайте, что еще есть другие.
б) Потребностями предметной области. Потому как использование микроскопа для забивания гвоздей не есть разумно.
Как видим, многое определяется пунктом - Предметная область. И набор инструментов, да и сама работа.
И вот тут мы поговорим о “притворстве”. Есть мнение, что программист должен ограничивать предметную область, в которой он пишет программы. Например, только банковское дело или документооборот. Или моделирование. Или разработка систем навигации. Возможно, что в этом есть доля здравого смысла, но я не уверен, что это правильный подход для постижения профессии.
Есть также другие варианты деления: быть специалистом написания пользовательских интерфейсов или только специалистом по разработке баз данных. Здесь я еще более сомневаюсь в разумности. Разве что вы не собираетесь двигать науку или создавать теорию. Потому что перед глазами стоит конкретный пример, когда интерфейс был сделан строго в соответствии с рекомендациями по интерфейсу и был сделан интерфейс с учетом предметной области - выиграл, как вы сами догадываетесь, второй. С ужасающими ошибками с точки зрения теории.
Т.е. понимание предметной области необходимо. А как вы сможете узнать, в какой именно предметной области предстоит работать Вам ? Да никогда, пока не пойдете работать.
Но кто Вам сказал, что через год не окажется, что программировать формы для электронной торговли - это не Ваше ? Или разработка инструментов анализа прибыльности не будет приводить Вас в уныние ? Профессия программиста нравится, а вот предметная область - нет. Конфликт.
Для меня выходом из данной ситуации явилось следующее предположение: для понимания принципов предмета нет необходимости погружаться в тонкости - для их понимания есть эксперт, для которого и разрабатывается программа. Он и может предложить алгоритм, который необходимо реализовать нашим набором инструментов. Сам алгоритм разрабатывать не надо - надо его только запрограммировать. С другой стороны - не надо бояться понять предметную область. Ну в конце концов Вас же не просят придумать решение. Вам надо уже готовое решение запрограммировать. Понять уже готовое гораздо проще, чем придумать свое. А учитывая накопленный опыт … Вы можете думать, что ничего не знаете о микробиологии, но на деле окажется, что Вы обладаете знаниями, которые именно в данной проблеме микробиологии являются важными. Да и взгляд не замылен.
Есть здесь конечно некая доля лукавства - вряд ли анестезиолог сможет понять легко систему навигации на основе измерений акселерометров. Тут не только высшая математика нужна - тут нужны специальные знания.
Но и в этом случае есть несложный способ определиться. В конце концов никто не просит Вас изучать теорию оптимального управления Понтрягина без знания математики. Вам достаточно просто узнать в каких областях что требуется. Есть же эксперты из этих областей - у них и можно спросить. Да и здравый смысл Вам на что ? Вряд ли в финансах потребуется что-то из систем навигации. В конце концов - примите как знак свыше, что в область инженерных расчетов Вам скорее всего путь закрыт. Но зато другие Вам совсем не чужие. Да и инженерные расчеты бывают разные - очень сложные и не очень.
И читайте классиков:
“В настоящее же время лишь немногие ученые могут назвать себя или математиками, или физиками, или биологами, не прибавляя к этому дальнейшего ограничения. Ученый становится теперь топологом, или акустиком, или специалистом по жесткокрылым. Он набит жаргоном своей специальной дисциплины и знает всю литературу по ней и все ее подразделы. Но всякий вопрос, сколько-нибудь выходящий за эти узкие пределы, такой ученый чаще всего будет рассматривать как нечто, относящееся к коллеге, который работает через три комнаты дальше по коридору. Более того, всякий интерес со своей стороны к подобному вопросу он будет считать совершенно непозволительным нарушением чужой тайны …
От математика не требуется умения провести физиологический эксперимент, но он должен уметь понимать такой эксперимент, уметь подвергнуть его критике и уметь предложить новый эксперимент. От физиолога не требуется умения доказать определенную математическую теорему, но физиолог должен быть в состоянии понять ее значение для физиологии и указать математику направление поисков.”
Винер Н. Кибернетика, или управление и связь в животном и машине (1948)
Более, чем за 60 лет мало что изменилось. Правда именно программист напоминает мне математика, понимающего физиологию. Притворщик, что тут скажешь 
Так что если Вам хочется быть программистом - определите области, которые Вы хотели бы автоматизировать. И если Вы их видите и готовы изучать вместе с инструментами - то милости прошу в профессию программист. Иначе будет скучно просто кодировать.
Спасибо за внимание.