Опыт

Опыт работы

Software Developer

Mealmind свой проект

Когда вы работаете разработчиком программного обеспечения, вам платят за то, что вы умеете делать в данный момент. Это создает порочный круг, когда вы получаете все больше и больше специализированных знаний, а переключение на что-то принципиально новое становится всё более трудным.

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

Mealmind стал для меня испытательным полигоном, способом догнать новые IT-технологии во множестве областей, включая:

  • Я улучшил свой Rust, который использовал для обработки данных (tokio, SeaORM), а также для backend и frontend. В итоге заменил многие части, написанные на JavaScript и Python, на Yew и Actix.

  • Много занимался Deep Learning (нейронные сети) в целом. Имел возможность поработать с различными архитектурами нейронных сетей, реализуя все своими руками, с нуля:

    • Различные RNN (LSTM, GRU, и подобные).
    • CNN, например WaveNet (в применении к временным рядам), вариационные автоэнкодеры для обработки изображений.
    • Transformers для обработки естественного языка, такие как GPT, BERT, и их производные,включая давно привлекающие внимание разновидности, такие как Reformer и Nyströmformer.
    • Глубоко погрузился в Reinforcement Learning и self-supervised learning.

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

  • Я привык читать, разбирать и воспроизводить сложные научные работы (например, в области Reinforcement Learning и NLP, теории оптимизации).

  • Освоил вычисления на GPU с OpenCL, включая написание собственных ML-ядер.

  • Получил опыт развертывания с помощью контейнеров, их управления и оркестровки, используя Docker, Kubernetes и Ansible.

  • Хотя я не новичок в мониторинге, на этот раз мне пришлось создавать его самостоятельно, используя Eclipse Mosquitto, Grafana и Telegraf.

К сожалению, из-за... скажем так, глобальных политических и рыночных изменений, мне пришлось оставить проект. Тем не менее, я благодарен за тот обширный опыт, который он мне дал.

Технологии: Python, Rust, Tensorflow, PyTorch, OpenCL, Kubernetes, Ansible
July 2018 - February 2023

Senior Software Developer

IPONWEB BIDSWITCH

IPONWEB специализируется на технологии и инфраструктуре программного управления торгами на рынке онлайн-рекламы в реальном времени. Одно из подразделений компании, BidSwitch, было создано, чтобы помочь решить многие из основных технических проблем и трений, которые препятствуют взаимосвязи платформ и торговле на уровне инфраструктуры.

Изначально я присоединился к команде как веб-разработчик фронтенда и бэкенда, используя Django и Angular.

За время работы в компании я помог запустить несколько внутренних проектов, которые впоследствии переросли в новые продукты или их части: в частности, пользовательский интерфейс BidSwitch, сбор статистики и формирование финансовой отчетности для клиентов, прогнозирование рекламного трафика, автоматической проверки объявлений, некоторые API для клиентов.

Последние годы работы в компании я провел, в основном, сосредоточившись на высоконагруженных бэкенд-проектах, занятых как обработкой и анализом больших объемов данных с торговых площадок, так и взаимодействием с другими сервисами. За это время я использовал C++ и Python, имел большой опыт работы с PostgreSQL и нереляционными кластерами Cassandra и MongoDB, а также со многими критическими частями современной ИТ-инфраструктуры, включая автоматический мониторинг, тестирование, сбор сообщений об ошибках через Sentry, непрерывную интеграцию и доставку, сборку Debian-пакетов.

Технологии: Python, C++, CassandraDB, PostgreSQL, MongoDB, Django, Angular, Jenkins, Sentry, Mercurial
April 2012 - February 2017

Senior Software Developer (фрилансер)

Проектировал и разрабатывал сайт онлайн-рынка актеров, играющих роль Деда Мороза и Снегурочки на новогодних праздниках, а также предоставляющих смежные услуги. Интегрировал проект с системой онлайн-платежей QIWI.

Технологии: Python, Django, JavaScript, PostgreSQL
May 2011 - November 2011

Smart Links специализируется на показе рекламных объявлений в текстах сайтов-партнёров. Я отвечал за

  1. Проектирование и внедрение высокопроизводительной и горизонтально масштабируемой морфологической системы для русского и украинского языков. Из-за гибкости этих языков, наивное сопоставление и поиск слов становится невозможным. Морфологическая система опирается на сложное дерево языковых правил и словарей для преобразования слов в их инфинитивные формы в реальном времени.
  2. Разработку и реализацию распределенного анализатора HTML-контента для рекламной системы, а также привязки к Python для некоторых ее частей.

Система была написана на языке C и полагалась на ZeroMQ для обеспечения связности компонентов при масштабировании. Она была способна обрабатывать сотни документов (HTML-страниц) в секунду на русском или украинском языках на обычном домашнем компьютере, нормализовать тексты и определять ключевые части текстов, на которые можно нацелить рекламу.

Технологии: C, ZeroMQ, привязка к Python
December 2010 - June 2011

Senior Software Developer (фрилансер)

Artela.ru (startup)

Отвечал за проектирование и реализацию универсального магазина цифровых услуг, таких как VoIP телефония, веб-домены, хостинг.

Здесь я впервые применил в коммерческом проекте познания, почерпнутые из книги Алана Купера "Об интерфейсе" и других подобных отечественных и зарубежных изданий. Получил практику написания пользовательских историй и проектирования цельной структуры пользовательского интерфейса.

В процессе реализации, интегрировал магазин с несколькими системами онлайн-платежей: Webmoney, Яндекс.Деньги и Paypal.

Технологии: Python, Django, JavaScript, PostgreSQL
February 2010 - November 2010

Senior Software Developer (контрактор)

Новостное агенство Gzt.ru

Архитектура и разработка новостного портала - как бэкенда, так и, частично, фронтенда (сильно кастомизированная административная панель Django).

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

Технологии: Python, Django, JavaScript, MySQL, PostgreSQL, Nginx, HTML, CSS, SVN
February 2009 - September 2009

Software Developer со-основатель

Domik63.ru Информационный портал по недвижимости Самарской области

Разрабатывал серверную и клиентскую часть портала:

  • поиск недвижимости по заданным критериям, с подпиской на обновления
  • размещение и оплату онлайн-объявлений
  • форум по вопросам недвижимости
  • полнотекстовый поиск на сайте
  • инструмент, позволяющий агенствам недвижимости любого размера публиковать и обновлять свои базы жилья через простые Excel-таблицы.
Технологии: Python, Django, PostgreSQL, JavaScript
October 2007 - January 2009

Senior Software Developer

Интер-М, веб-студия

Бэкенд-разработчик на текущие проекты.

Технологии: Python, Django, PostgreSQL, Linux, Mercurial
May 2007 - August 2007

Senior Software Developer

Unkom, веб-студия

Пришёл как Perl-разработчик после университета, позднее мигрировал на PHP.

Разработал систему управления контентом для сайтов студии и собственный движок форума, которые были использованы для построения многочисленных сайтов правительственных организаций и бизнесов. Наиболее запоминающимся были сайт и форум развлекательного телеканала МузТВ.

Какое-то время участвовал в разработке CRM на Java.

Технологии: Perl, PHP, .NET, Java, MySQL with PostgreSQL
February 2005 - April 2007