«Черная пятница» разработчика: Интервью с Денисом Филисовым
04.08.23, Пт, 18:37, Мск,
Руководитель отдела разработки Grid Dynamics и автор научных статей о том, как делать приложения для миллионов пользователей.
Под влиянием современных технологий и массовой автоматизации ситуация на финансовом рынке стремительно меняется. С одной стороны — растут акции компаний, занимающихся AI, с другой — под влиянием всё той же оптимизации в июне Binance сократило число своих сотрудников на 20%. Тем более что с недавних пор автоматизировать управление своими финансами может каждый. Для этого необходимо лишь воспользоваться инструментом копитрейдинга. Это система, которая торгует за вас и копирует сделки известных инвесторов. Одной из самых продвинутых программ для копитрейдинга стала запущенная в прошлом году Tiger Trade - детище российского ИТ-эксперта Дениса Филисова.
Как работает копитрейдинг? Чем создание сайта для продажи кроссовок Nike отличается от продажи косметики Sephora? Чем работа западного разработчика отличается от русского? Обо всем этом мы спросили Дениса Филисова, руководителя отдела разработки компании Grid Dynamics. А также автора научных статей о работе с высоконагруженными сервисами, о том, как их правильно строить и как на этом можно сэкономить.
Денис, Вам довелось работать как с российскими компаниями, такими, как «Русский стандарт», МТС, и другими, так и с международными брендами уровня Nike. Расскажите о своём профессиональном пути. И есть ли различия в разработке «у нас» и «у них»?
Денис Филисов: Свой «путь в IT» я начинал в далеком 1998 простым сборщиком компьютеров. Через пару лет устроился уже системным администратором в «Русский стандарт», а ещё через какое-то время вырос до руководителя отдела системного администрирования. Потом пришла идея переучиться и стать разработчиком ПО. И вот за пять лет я смог пройти путь от начинающего разработчика в маленькой тульской компании до, как вы заметили, работы с мировыми брендами.
Разница в работе с российскими и западными компаниями значительная. Отличается почти всё, но главное отличие — в общении. Если вы не умеете контактировать с коллегами — вы никогда не сможете работать в компании за пределами России. У нас связанные с коммуникацией проблемы решают, набирая «системных аналитиков». За пределами РФ такой профессии не существует.Гид по NGFW. 10 наиболее заметных продуктов, доступных на российском рынке
Разработчик senior-уровня должен уметь общаться с бизнес-аналитиком или заказчиком. Должен уметь принимать решения и отвечать за последствия принятых решений. Иными словами, в РФ программист просто пишет код и не несет никакой ответственности за его качество. А в зарубежных компаниях разработчик является лицом, которое принимает важные решения.
Год назад вы запустили проект Tiger Trade, который задал тренд всей индустрии на копитрейдинг. Расскажите об этом подробнее.
Денис Филисов: Проект пользуется большой популярностью. Эту идею уже подхватили крупные криптобиржи. Мне кажется, в ближайшие 3-5 лет тенденцию копитрейдинга подхватят и традиционные биржи. Идея проста и в то же время прекрасна. Представьте себе, что вам больше не надо следить за каким-то трейдером, который совершает сделки, вы просто подписываетесь на его действия и копируете их, соблюдая пропорции.
В классических инвестициях вы рискуете своими деньгами, передавая их трейдеру. В нашем случае деньги находятся на вашем счету, и вы потеряете деньги, только если трейдер, которого вы сами выбрали для подражания, потеряет свои деньги. Таким образом, вы исключаете риск потери денег по «не торговым» причинам. Мне кажется, это значительно повышает доверие между трейдерами и инвесторами.
На данный момент Tiger Trade является одной из лидирующих платформ среди конкурентов, я знаю, что вы подключили данную платформу более чем к 100 различным биржам. Главной особенностью, дающей такой отрыв по качеству от других конкурентов в индустрии, насколько мне известно, выделяют подключение платформы Tiger Trade более чем к 100 различным биржам. С какими сложностями вы столкнулись при разработке и тестировании приложения для копитрейдинга?
Денис Филисов: Основная сложность заключалась в том, что мы делали надстройку над уже существующим терминалом, код которого был написан аж в 2008 году на другом языке программирования. С тех пор этот код не сильно улучшился, однако время идет, технологии и подходы меняются. Нагрузка выросла многократно, поэтому пришлось переводить самые нагруженные части сервиса на Java и использовать асинхронное взаимодействие. Реализация всего этого вызвала немало проблем.
Также команда Tiger Trade ранее не использовала ряд новых технологий для тестирования, и нам пришлось усиленно работать над внедрением этих решений. Но, реализовав их, мы получили кратное увеличение скорости тестирования и уменьшили количество проблем в коде.
Среди выдающихся разработчиков Вы известны и полезными для индустрии научными исследованиями. Ваша недавняя статья в «Инновации и инвестиции - Spring FrameWork в высоконагруженных системах» посвящена работе над Tiger Trade?
Денис Филисов: В том числе. Это, безусловно, обобщение моего опыта при работе над Tiger Trade. Но в целом, это скорее вводная статья для людей, которые желают разобраться в высоконагруженных приложениях.
На самом деле, написать приложение для 100 пользователей или для 100 миллионов пользователей — это совершенно разные задачи. Нагрузка заставляет использовать совсем иные подходы. Борьба идет за каждый запрос, за каждый байт, за каждую миллисекунду, потраченную на общение между сервисами. Это, с одной стороны, очень сложно, а с другой стороны - безумно интересно. Именно в этот момент играет роль выбор правильного подхода, правильной технологии, базы данных и т.д.
Вы занимаетесь автоматизацией не только финансового сектора, но и ритейла, что тоже является на сегодня уверенной тенденцией. Я знаю, что Вы разработали инновационный продукт для такого гиганта рынка, как Nike. Расскажете подробности этого проекта?
Денис Филисов: Nike — крупный производитель спортивных товаров, и у них есть множество клиентов, которые ежедневно делают заказы десятки тысяч единиц товара. А у этих клиентов могут быть тысячи своих магазинов. Имея такой размер бизнеса, вы вряд ли захотите вручную записывать и запоминать, сколько каких кроссовок нужно развезти и в какие магазины. Для этих целей нужна хорошо структурированная система, которая позволит легко размещать заказы и указывать магазины, в которые необходима доставка, а также рассчитать время на производство и доставку этих вещей в магазины на основе работы транспортных компаний. В целом, работа с Nike была для меня интересным опытом, но, к сожалению, я не смогу раскрыть больше деталей, так как есть соглашение о неразглашении информации.
Тогда, быть может, поделитесь подробностями работы над проектом Sephora? Ведь там Вы пришли работать с проектом, который фактически провален вашими предшественниками, и смогли реализовать его в короткий срок. Кстати, есть ли с точки зрения разработчика разница, что продавать: кроссовки или косметику?
Денис Филисов: С точки зрения разработчика, в целом, без разницы, с чем работать. Есть конкретная проблема, и необходимо подобрать инструменты для ее решения, а также подобрать команду, которая сможет выполнить данное решение в согласованные сроки.
Для Sephora мы полностью с нуля делаем сайт и разрабатываем абсолютно новые системы. Поделиться большим количеством деталей, опять-таки, не смогу. Однако, говоря об этом проекте, могу подтвердить высказанную ранее мысль о том, что разработчик на западе — больше, чем просто кодер. Я действительно пришел на проект, который уже шёл и на котором был полный «пожар». Не могу сказать, что он весь был «провален», но начало было положено точно не так, как надо. Пришлось все исправлять: решать проблемы в команде, в коммуникации с заказчиком, срочно строить план выхода из кризиса. То есть, пришлось заниматься задачами, которые, в нашем понимании, казалось бы, не входят в компетенцию разработчика. Но и непосредственно разработке я, конечно же, уделяю много времени. С удовольствием поделюсь подробностями, когда проект будет завершен - в сентябре. Запуска жду с нетерпением, а ещё больше жду первой «черной пятницы».
Получается, «Черная пятница» должна стать стресс-тестом выстроенной вами системы. Какие происходят процессы, когда на сайт заходят до 45 млн пользователей? Работаете ли Вы сверхурочно или процесс отлажен заранее, а вы лишь мониторите систему под нагрузками и потом занимаетесь исправлениями?
Денис Филисов: Все будет заранее протестировано под высокой нагрузкой. Мои коллеги уже сейчас этим занимаются. Команды, в которых я работал, никогда не работали сверхурочно в момент, когда проект вышел в релиз. Мне кажется, это плохая практика. Человек должен сделать все, что мог, до согласованного срока, выложиться на полную. В момент релиза разработчик должен отдыхать и получать удовлетворение от результата своей работы. Ожидание «черной пятницы» — это скорее спортивный интерес.
Каково это: работать над двумя столь крупными проектами одновременно?
Денис Филисов: Тут бывает два состояния. Если ты горишь идеей и тебе нравится проект или проекты — ты не замечаешь, как проходит время, а просто работаешь и добиваешься поставленного результата. Но если тебе проект не нравится — лучше даже тогда его не начинать, потому что он быстро превратится в скучную монотонную работу, и, как следствие, никаких решений сделать не получится.
Над чем планируете работать в будущем?
Денис Филисов: Хотелось бы поработать над высоконагруженными проектами известных брендов. Да, 45 миллионов человек в черную пятницу у Sephora — это много, но куда интереснее было бы поработать с такими брендами как Apple, Google, Netflix. Все-таки ежедневная аудитория в сотни миллионов человек — это совершенно иные вызовы.
В завершение, с высоты своего многостороннего и высокоуровневого опыта дайте 3 главных совета начинающим разработчикам.
Денис Филисов: Наверное главная рекомендация - никогда не сдаваться. Ибо неудач и непонимания на пути в освоении языка программирования действительно много. Никогда нельзя знать абсолютно все. Я регулярно в общении с коллегами или на интервью говорю, что я чего-то не знаю.
Вторая рекомендация — всегда изучать новое. Если вы чувствуете, что не готовы читать новую статью или литературу, попытайтесь перевести получение информации в формат, который вам действительно интересен. Это могут быть видео на YouTube, общение с коллегами, возможно какие-то игры, направленные на изучение новых технологий. Даже всеми не любимый LeetCode может стать некой игрой, в которой вы на ежедневной основе будете решать новые проблемы и развиваться.
Третья рекомендация — мыслите глубже, значительно глубже. Работа разработчика — не написать код, а думать, предлагать, коммуницировать. Написание кода — это 10% от вашего времени. Никогда нет серебряной пули в написании кода. Любое решение должно быть осознанным, и вы должны понимать все последствия применения того или иного архитектурного подхода или библиотеки. Как минусы, так и плюсы.
Автор: Владислав Арсентьев