Изображение: DAVID HOLT, CC BY 2.0

Согласно статистике портала Stack Overflow, сфера финансов вошла в десятку самых популярных у разработчиков отраслей. Сегодня мы расскажем о том, чего следует ожидать специалистам, которые планируют начать карьеру в финансовых компаниях.

Условия работы


Работа в сфере финансов определенно отличается от труда в сфере стартапов или крупных ИТ-корпорациях. Здесь более традиционный подход к организации рабочего процесса, редко когда можно встретить «дизайнерские» офисы или массу развлечений для сотрудников. Зачастую существует и определенный дресс-код, что может быть непривычно разработчикам, работавшим в стартапах.

К примеру не так давно журналисты издания Business Insider проводили анализ популярности финансовых компаний у соискателей с LinkedIn и выяснили, что занявший 4 место банк Morgan Stanley привлекал многих как раз отсутствием чересчур строгого дресс-кода (в сравнении с другими банками).

При попадании на работу в инвестбанк, хедж-фонд или брокерскую фирму также трудно рассчитывать на дизайнерский офис с огромными игровыми и спортивными зонами, массажными кабинетами, комнатами сна и полностью бесплатной едой. Скорее всего что-то из этого будет, но не в таких масштабах, как в условном Google.

image

К примеру, в офисе Goldman Sachs есть спортзал, и работники могут получить скидку на его клубные карты. Интересный факт: даже на экраны мониторов тренажеров выводятся экономические новости:

image

Как видно, с точки зрения внешних атрибутов «крутости» работа в сфере финансов может уступать ИТ-стартапам и крупным технологическим компаниям. Почему же тогда многие разработчики по-прежнему приходят в эту сферу? Этому способствует возможность использовать продвинутые технологии в работе над интересными проектами.

В каких проектах можно поучаствовать


Финансовый рынок представлен широким спектром компаний: здесь есть биржи, банки, инвестфонды, брокерские фирмы и независимые разработчики софта (например, торговых роботов). Соответственно, разработчики могут поучаствовать в самых разных проектах от написания торговых систем и инструментов по работе с Big Data до построения инфраструктуры с применением самого современного железа.

На примере ITI Capital можно понять, с чем сталкиваются ИТ-специалисты в брокерских компаниях. Мы разрабатываем собственную торговую систему Matrix, терминал SmartX (подробнее об истории этого проекта можно почитать здесь), развивает API к нашей инфраструктуре под названием SmartCOM. Отдельное направление — создание мобильных приложений для онлайн-трейдинга.



Интерфейс торгового терминала SmartX

В сфере финансов важна скорость работы и максимальная производительность, поэтому много усилий тратится на улучшение этих показателей создаваемых программных продуктов. В блоге мы неоднократно рассказывали о том, как проходит, например, оптимизация работы торгового терминала.

Распространенные языки программирования


Значительная часть инфраструктуры брокерских компаний и бирж создана с применением языка C++ — с его помощью создаются самые разные продукты от библиотек для расчета ценовых моделей производных инструментов до модулей обработки потоков данных. Специалисты, знающие этот язык, крайне востребованы. Более того, сам создатель языка Бьерн Страуструп (Bjarne Stroustrup) работает в инвестбанке Morgan Stanley в должности директора по технологиям.

Помимо C++, широко распространены C# и Java — с их помощью часто реализуют определенные части торговых приложений или фронтенд-сервисы финансовых компаний (например, GUI торговых терминалов).

Для описания торговых стратегий и прототипирования моделей применяют в том числе и скриптовые языки, вроде Python, MATLAB и R. Пользуются популярностью и скриптовые языки, которые могут быть даже встроены в торговые терминалы — как например язык TradeScript, с помощью которого торговых роботов можно писать прямо внутри терминала SmartX.

image

Простая стратегия на TradeScript, записанная в окне торгового терминала

Помимо этого, по данным рекрутеров финансовых компаний, опрошенных порталом Efinancial Careers, востребованы разработчики Python — этот язык незаменим при создании аналитических инструментов и квантовых моделей — также набирают популярность технологии обработки данных вроде Hadoop, Cassandra и Scala.

Что еще нужно уметь


В каждой компании свои требования, однако можно сформулировать и некоторые тренды в этом направлении. Специалистам по работе с инфраструктурой при переходе в сферу финансов не придется серьезно перестраиваться, а вот разработчикам могут понадобиться и некоторые специфические знания.

Чтобы получить работу в серьезной финансовой компании нужно в обязательном порядке отлично знать ООП и стандартные алгоритмы. Разработка клиент-серверных финансовых систем также идет рука об руку с многопоточным программированием. Поэтому, специалист должен не бояться задач, подразумевающих, к примеру, написание стандартного TCP-сервера, сервера балансировки нагрузки и сервера высокой производительности.

В основе систем для финансовой сферы лежат базы данных, поэтому разработчикам понадобятся глубокие знания SQL. Знания простых операторов выбора будет недостаточно — довольно часто в ходе работы придется иметь дело с созданием процедур хранения, разбираться с индексами, и различными типами блокировок.

Трейдинговые системы обычно используют платформу UNIX (часто Linux). Для Windows, как правило, создаются торговые терминалы с графическими интерфейсами, для разработки же «движка» трейдингового софта используют UNIX. Кроме того, специалистам, занимающимся разработкой торгового софта необходимо уметь работать с GPU, сопроцессорами и современными сетевыми картами (например, Mellanox и Solarflare).

Не стоит забывать и о технологических знаниях, применимых именно к финансовой сфере — прежде, чем искать работу в условной брокерской компании, стоит разобраться, к примеру, с протоколами передачи данных вроде FIX или, в случае «Московской биржи», ASTS Bridge — в нашем блоге выходил целый цикл материалов об этих технологиях (FIX, Fast, Plaza II, ASTS Bridge).

Другие материалы по теме финансов и фондового рынка от ITI Capital:


Комментарии (5)


  1. kiloper
    07.06.2018 10:45

    Насколько мне известно у таких разрабов одни из самых высоких ЗП.


  1. awesomer
    07.06.2018 13:03

    В основе систем для финансовой сферы лежат базы данных, поэтому разработчикам понадобятся глубокие знания SQL. Знания простых операторов выбора будет недостаточно — довольно часто в ходе работы придется иметь дело с созданием процедур хранения, разбираться с индексами, и различными типами блокировок.


    Да, простых базовых знаний, как для веба — маловато будет.
    На Хабре есть серия статей, что банкам приходится держать сервера специально на процессорах архитектуры RISC, чтобы справляться с нагрузками.


  1. drcolombo
    07.06.2018 14:56

    Добавлю несколько капель дёгтя:

    1. если железо как правило, довольно современно, то вот с софтовыми технологиями часто бывает просто беда из-за «compliance» и кучи legacy, который порой просто не реально заставить работать с чем-то боле-менее современным;
    2. в последнее время (по крайней мере в моей конторе) наблюдается какой-то сдвиг в сторону Agile/SCRUM/Kanban, но как правило — это waterfall;
    3. большое количество external'ов, которым как-то до «командного духа» глубоко до фени: наняли на какой-то проект, он его сделал и свалил — а дальше начинается ад поддержки internal'ами...
    4. часто есть миллион внутренних процедур и, чтобы даже «попробовать» что-то новенькое, надо пройти очередь согласования и прочего


    Итог: я не хочу никого отговорить идти в финансы, но таки иметь в уме эти минусы полезно, если вы привыкли к самым последним «фишкам» — вполне вероятно, что придется откатываться лет так на 3-5 в области некоторых софтовых технологий.


    1. sshikov
      07.06.2018 22:18
      +1

      Я поработал на многие банки, и нигде не видел такого, чтобы было сложно согласовывать, если хочется попробовать что-то новенькое. Единственное, что на самом деле нужно — чтобы это новенькое решало реальные проблемы бизнеса. Если это условие выполнено, то никакие процедуры согласования никогда не мешали. Это иногда верно даже для compliance, которые в общем-то денег не зарабатывают, но бывают вынуждены делать проекты быстро, чтобы соответствовать изменениям со стороны регуляторов, в установленные жесткие сроки.

      Впрочем, да, слышал и про обратное — когда местами сидят скажем на EJB 2, что с моей точки зрения нонсенс, потому что разработчики тратят время и деньги на то, что можно было давно уже вовсе не делать.

      А что до legacy — так тут дело в том, что банки и биржи вообще начали автоматизироваться давно, и уже накопили много разного софта, который работает, и который никому не хочется переписывать. Да, бывают проекты, где его нужно поддерживать — но это как правило становится ясно уже на первом интервью, или даже до него.


    1. MrDaedra
      08.06.2018 16:41

      придется откатываться лет так на 3-5 в области некоторых софтовых технологий

      Это ещё ничего. Я бы даже сказал, что это скорее уровень обычной компании, в которой присутствует инертность и скептическое отношение ко всему новому.
      В прошлом году проходил собеседование в один банк, так там мне пришлось бы откатиться лет на 10 и вкладываться в изучение технологий, которые не поддерживаются и не пригодятся мне в будущем.