Вы думаете, что MATLAB только для ученых и студентов? Тогда вы отстали от жизни. Мы встретились с техническим директором компании ЦИТМ «Экспонента», единственного представителя MathWorks в России, чтобы это обсудить.
Поговорили о наболевшем пиратстве, о том, как управлять инженерами (не программистами) и о том, как совмещать религию, работу в технической сфере и бизнес. Ну и самое главное: каков портрет идеального инженера, как работать с олдскульными технарями, чего инженерам не хватает и как их мотивировать.
В статье приведен краткий и творчески переработанный текст интервью. Если хочется подробностей или лень читать, смотрите полную версию на моем YouTube-канале.
Фарида Рословец:
– Есть мнение, что MATLAB только для студентов и ученых. Можешь это прокомментировать?
Денис Жегалин:
– Нас в вузе тоже учили матлабу, самым основам, и, если бы я так и остался с этим знанием, я бы тоже так думал. Но на четвертом курсе я попал на практику в Сименс и тут мне показывают, что вся разработка алгоритмов управления автомобильным двигателем строится на MATLAB, Simulink и Stateflow, и я такой «Чтооо?». Добило меня, когда я понял, что автомобильные концерны ставят друг другу ТЗ в виде симулинк-моделей. У меня тогда что-то сломалось в голове и мое мнение о матлабе поменялось.
– Для каких задач матлаб чаще всего используют?
– Представь, что ты хочешь разработать алгоритм, который работает в каком-то окружении. Это может система радиолокации, связи, управления, компьютерного зрения и т.д. Вот, например, как ты разработаешь алгоритм управления впрыском без двигателя под рукой? А даже если двигатель есть и у тебя при эксперименте поршень вылетает из цилиндра и ломает двигатель, это печально. И вот представь, что у тебя есть возможность математически описать окружение алгоритма в виде моделей и разрабатывать алгоритм по ним на уровне системы. В этом случае матлаб и симулинк становятся крайне необходимыми.
– Какой среди ваших клиентов процент гос. рынка?
– Думаю, около 80-90? Я думаю, что коммерческие часто идут на торренты, скачивают матлаб и пользуются.
– Вопрос пиратства для вас острый?
– Для нас это очень болезненный вопрос. Когда мы только начинали работать, мы в принципе не могли представить, как можно продать MATLAB на какую-то существенную сумму. То есть не просто оборудовать класс для студентов, а продать что-то нормальное в коммерческую компанию. Сначала мы «нащупали» тренинги, когда мы не просто отдаем софт, а еще и обучаем. Тренингов у нас 50 штук сейчас, и это расслабляет людей. Они понимают, что хотя бы освоят инструмент нормально.
Но когда начался политический кризис, наши компании немного напряглись, так как мы поставляем американский софт, с которым может «что-то произойти». Мы поняли, что теперь просто тренинги – это не решение проблемы, и решили открыть направление разработки под ключ, причем такое, которое будет проводиться вместе с нашими клиентами.
– Инженерный консалтинг?
– Да. Некоторым клиентам нужно помочь организовать процесс разработки в МATLAB Simulink, необходимо организовать сам процесс, командную работу и так далее. Второй вариант – это когда нужно вместе с клиентом решить его задачу. Мы разрабатываем проект и при этом передаем экспертизу. То есть заказчик получает готовый продукт и учится у нашего инженера. Эта схема сейчас работает и клиенты довольны.
– Пиратов меньше стало?
– По крайней мере, они понимают, что самостоятельно так освоить инструмент, как наши люди, не получится. Ты потратишь много времени разбираясь в тонкостях матлаба, но, кроме этого, у тебя есть еще и основная работа. А основная работа наших инженеров – хорошо знать инструмент, уметь им пользоваться и передавать это умение другим людям.
– Когда я анализировала HeadHunter, все вакансии даже по системам управления или обработке сигналов – всегда или/или. Либо матлаб, либо C, либо матлаб, либо R, либо матлаб либо, либо Python, то есть нет четкого требования. Это такой завуалированный ход? Можно из этого сделать вывод, что эта компании работает на MATLAB?
– Ну да, зачем они стали бы еще писать MATLAB? Написали просто C, и все. Я прихожу в любую компанию: «Матлаб видели?» – Да. «Работаете?» – Да. Лицензий ноль. Куда бы я не пришел, везде пиратство, почти 90% случаев. Даже в тех компаниях, куда уже продали лицензию, пиратство есть. Нам иногда присылают запросы технической поддержки с пиратских лицензий.
– По поводу олдскул-инженеров. Ты сказал, что 85% ваших заказчиков это госкомпании, и вам приходится с этими старыми инженерами работать, приходится к ним приходить, доказывать, что это нужно. Вот как ты им объясняешь?
– Это всегда по-разному. Я думаю, что здесь часто работает харизма. Потому что, если начинаешь технически продавливать, гордость человека часто не позволяет ему принять что-то. Он тоже умный, он все умеет, и ты не прав. Однако, если с ним хоть немножко провести время вместе, пообщаться, посмотреть, что он делает, проникнуться его болями, которые есть, и показать, что, оказывается, можно что-то поудобнее, побыстрее сделать. Просто показать, что ему нужно и все. И людей отпускает.
– Часто их отпускает? Как часто тебя посылают с твоими предложениями в итоге эти олдскул-инженеры, именно по причине непонимания?
– Знаешь, обычно они не приходят в одиночку. Когда мы беседуем, сидит и молодежь, которая больше рубит, и пожилые люди. В какой-то момент молодежь тоже проникается. Я коммерческий человек, в своей речи использую термины, которые отличаются от тех, что используется в компании, где люди работают. Молодежь объясняет своим старшим коллегам: «Вспомните, мы вот это с вами делали. Это можно сделать, гораздо быстрее…». Тогда приходит взаимопонимание. Я не говорю, что это всегда и везде работает, но я вижу, что такое случается.
– Почему о вас так мало знают коммерческие компании? Я взаимодействую, например, с большим количеством Data Science-специалистов из крупных компаний, они знать не знают, что такое «Экспонента». Почему вы не развиваетесь, не растите охват?
– С начала существования компании прошло всего три года. До этого мы были частью компании Softline (прим.: международная IT-компания), которая очень большая, известная. Какое-то время должно пройти, прежде чем мы сможем поднять новый бренд.
– Давай поговорим про конкурентов. Я тебе прочитаю такой текст: «Когда вы настраиваете чужой продукт без доступа к разработчику, вы бьетесь головой о стену, найти автора не представляется возможным физически, исправить по вашему желанию ничего нельзя. Потому что западному разработчику на одну тысячную процента мирового рынка просто наплевать. А когда вы можете зайти к разработчикам, поговорить о ваших проблемах, и для вас внесут изменения в ядро и допишут нужные функции – это бесценно». Вячеслав Петухов, компания SimInTech. Что ты по этому поводу думаешь? Что ты можешь на это ответить?
– Первое: над оптимизацией ядра МATLAB работает огромное количество гениальных инженеров, которые день ото дня улучшают его. Второе: все надстройки, которые на этом ядре крутятся – функции, разные тулбоксы, блоки Simulink – все это можно создавать и добавлять самостоятельно. Когда к нам обратилась компания с заказом по моделированию нефтегазовой колонны, мы взяли и создали эту библиотеку под ключ, просто взяли и разработали. И здесь даже не нужны разработчики MATLAB, библиотеку мы сделали сами.
– А исправление багов?
– Баги очень быстро исправляются, если не в ближайшее время, то в следующем релизе точно. Поддержка MathWorks – одна из лучших поддержек в мире, это раз. Во-вторых, оперативную поддержку осуществляем мы. Сначала нам приходит вопрос, мы сами воссоздаем, тестируем, и дальше уже передаем туда. А найти какой-то баг, который не решаем – такого вообще, в принципе, не может быть, мы не видели такого ни разу за 10 лет.
Поэтому то, что говорит товарищ Петухов, про не достучаться – это неправда. Мы открытые люди, готовы принять любые комментарии и объяснить, как стоит делать. Мы не разработчики матлаба, но, если речь о библиотеках, функциях или каких-то надстройках – вообще не вопрос, мы что угодно сделаем.
– Есть мнение, что первая и самая древняя стратегия управления людьми – это Библия. Ты согласен с этой мыслью?
– Нет. Если почитать Библию, то там про управление людьми немного написано совсем. То есть религию пытаются выставить, как средство управления народом, но я считаю, что она скорее дает некую свободу человеку. Я бы реально хотел посмотреть, как попробуют управлять мной с помощью Библии.
– Генеральный директор вашей компании является соучредителем церкви. Ты в ней состоишь. Тебе это как-то помогает управлять?
– Принцип, который я у Иисуса Христа беру как верующий человек, заключается в том, что моя задача на этом месте работы – это максимально послужить моим инженерам и другим коллегам, чтобы у них работа получилась хорошо. То есть, моя задача не управлять сверху. Понятна идея, да? Ну и послужить целям компании, чтобы бизнес шел вперед – это мое обязательство перед Богом…
Почему с религиозными людьми удобнее работать, какие игрушки и железки есть в офисе представителя крупнейшего инженерного продукта? Ответы на эти и многие другие вопросы Вы найдете в полной версии интервью.
Кстати, интервью с главным конкурентом уже на Хабре! Посмотрите на альтернативный взгляд.
beerware
Зачем Matlab с конскими ценниками на лицензии когда есть numpy и scipy
Whispered
Хоть и пользую питон каждый день, но numpy и scipy — это нечто иное. Simulink действительно удачно реализован, плюс многомерный анализ в матлабе попроще сделан в графическом плане, чем матплотлиб, плотли и иже с ними.
tzlom
И Джулия и R, но у большинства апологетов матлаба просто синдром утёнка. Отдельная попаболь это когда эти "алгоритмы" на "языке программирования" приходится в железо переносить, и вот тогда и раскрывается всё качество как продукта так и техподдержки и документации.
osmanpasha
В матлабе разве нет кодогенератора? А как с питона в железо переносить, тут вообще готового решения нет, только переписывать.
tzlom
От кодогенератора в матлабе одно название, смотрите сами:
Во первых результат это С фарш даже если вы генерируете с++ код (никаких RAII, std контейнеров итд). Справедливости ради этот код не течет, но руками дорабатывать вы его навряд ли захотите.
Во вторых часть функций не доступна — всё что в .mex нельзя использовать даже если целевая платформа совпадает с платформой на которой запускается матлаб. К примеру нельзя читать и писать .mat файлы, все интересные солверы тоже не доступны итд.
В третьих, код генерируемый по умолчанию медленный. Очень медленный. По сути каждый вызов функции будет обернут в копирование аргументов и копирование результата.
Разумеется это можно "оптимизировать" вводя си структуры и объясняя что передавать можно только указатели, но представляете на что похож матлаб код в котором описываются си структуры? Это не то, что может поддерживать типичный пользователь матлаба. А, ну и конечно все эти оптимизации вы сделаете прогнав результат компиляции си кода через профилировщик, т.е. трудозатраты по профилированию такие же как при переписать полностью, требуется хорошее знание СИ, но потом ещё надо разобраться как реализовать оптимизацию на матлабе.
Матлаб не силён в оптимальное выравнивании памяти, т.е. на вычислительно трудных задачах он никогда не сравнится с кодом написанным вручную.
Ну и вишенка сверху — матлаб не гарантирует повторяемый результат. Т.е. результат у "компилированного" кода будет скорее всего немного другим, а с учётом того что даже в пакетах самого матлаба не все алгоритмы робастны это может быть бедой. Более того, это правда и для самого матлаба, например изменение количества потоков доступных ему приводит к изменению результатов.
С тем же питоном — большинство библиотек открыто, если надо я могу хотя бы узнать как питон реализует ту или иную функциональность. Если очень надо — с отладчиком оттрассирую каждую операцию. А та же Джулия генерит машинный код не хуже меня, а если есть проблемы с памятью то благодаря языку я могу например подменить одну реализацию матрицы другой и код не развалится.
osmanpasha
Понятно, спасибо за развернутый ответ) Я матлабом для этого не пользовался, а вот с питона на embedded мы вручную переписываем.
beerware
С этой точки зрения также предпочтительнее не пользоваться высокоуровневыми функциями Matlab, а реализовывать алгоритм на питоновских модулях которые в наличии, что проще переносить на Си для Embedded или оставить тот же Питон, если платформа позволяет