Контакты
Андрей Кушнир
- Почта
me
на этом домене- Fediverse
@orhideous@twilight.garden
- Matrix
@orhideous:twilight.garden
- Telegram
orhideous
- Телефон
- +380671387767
Что умею
- создавать и доставлять продукты для нужд бизнеса и клиентов;
- понимать контекст бизнеса, его доменную модель и охватывать взглядом общую картину;
- быстро учиться, читать документацию для фреймворков/API/сторонних сервисов/etc;
- оформлять мысли в виде удобных заметок и технической документации;
- оценивать «за» и «против» для принятия наиболее рационального решения;
- из разрозненных кусочков информации собирать когерентную картину по работе сервиса или процессов в целом;
- отстаивать свое мнение в дискуссии, подкрепляя его аргументами, а не эмоциями.
- тестировать свой, а при необходимости и чужой код;
Умения
Что знаю, что делал и с чем работал
Python
- хорошо знаю язык и экосистему вокруг него, включая фреймворки (Pylons, Django, Flask, aiohttp, FastAPI) и распространенные библиотеки;
- работал с асинхронным кодом;
- для критичных к скорости вычислений интегрировал расширения на С/Сython;
- разбираюсь в ORM, знаю их недостатки и преимущества (создавал поддержку диалекта для ClickHouse)
- мигрировал и рефакторил большие кодовые базы;
- выделял микросервисы из монолитов.
Scala
- использовал язык и как «better Java», и как «worse Haskell"»;
- понимаю концепты функционального программирования и использую их на практике;
- имею опыт работы с экосистемой cats, чуть меньше — ZIO;
- профилировал и оптимизировал GC в частности и JVM в целом под различные типы нагрузки;
- знаком с системами на акторах (Akka, чуть меньше — Lagom)
БД и инфраструктура
- работал с реляционными (MySQL, PostgreSQL, SQLite), нереляционными (MongoDB, ES), и специализированными (ClickHouse, DuckDB, TimescaleDB) базами;
- интегрировал поисковые движки, Manticore и ElasticSearch;
- знаком с key-value базами и спецификой их применения;
- имею большой опыт работы с Kubernetes: от развертываний на bare metal (в т.ч. с Helm) до работы в облачных средах, например, GCP;
- знаком с современными инструментами для мониторинга (Grafana/ELK/Graylog/Kibana), включая их внедрение.
Big Data
- хорошо знаком с Apache стеком (Hadoop, HDFS, Hive, Spark,…) для создания data warehouse;
- разрабатывал и поддерживал in-house версии Apache Spark;
- знаю, как создавать и отлаживать ETL-процессы с использованием AirFlow.
Разное
- умею разбираться в современном фронтенде и JS (хоть и не очень-то и люблю этого делать);
- долгая работа с self-hosted решениями дала умение системного администрирования, что часто мне пригождается;
- знаю и использую в хобби-проектах ряд других языков: JS/TS, Java, Rust, PHP, немного Go, C++/Qt, C#.
Личные качества
- Прагматик, увлеченный понравившимся делом;
- Люблю узнавать новое, учиться и применять полученные знания на практике;
- Имею хорошую фантазию и память, умею понятно рассказать и объяснить другим свои идеи.
Что хочу делать
- разрабатывать и внедрять эффективные, этические решения, улучшающие жизнь людей;
- писать эффективный и чистый код, а не “на вчера”;
- работать в компании коллег, более умных и опытных, чем я.
Что НЕ люблю
- бодишопы;
- неадекватный менеджмент;
- глупость.
История работы
2021-2022: Проект парковок
Обязанности
Поддержка внутреннего монолита на основе Akka и Akka-Persistence. Создание микросервиса закрытых парковок.
Интеграция с платёжными системами.
Использованные технологии
- Java, Scala
- Akka, Play, Tapir
- GCE, k8s
2020-2021: Tranzzo
Обязанности
Создание архитектуры внутреннего Data Lake, оптимизация ETL-процессов.
Использованные технологии
- Scala
- http4s, Play, ZIO, cats, KillBill
- Google Dataproc, Google Composer
2014-2020: EVO
2020 — финтех
Обязанности
Написание и поддержка интеграций с банками для KillBill и внутреннего платёжного шлюза.
Использованные технологии
- Scala, Java
- http4s, sttp, Play, ZIO, cats, Akka, Lagom (немного)
- KillBill, Google Cloud Engine
2017-2020 — аналитика
Обязанности
Построение архитектуры внутренней системы обработки аналитики пользователей, разработка инструментов, библиотек (twilight, sparkle, cogwheel, glimmer) и документации по покрытию компонентов, проведению A/B-тестов.
Написание и поддержка инструментов для трекинга (Clerk), тренинги и обучение для других команд.
Поддержка внутреннего форка Apache Spark, развертывание и частично администрирование Hadoop-кластера. Унификация всех ETL-процессов на единой платформе (AirFlow), доработка её под нужды компании.
Использованные технологии
- Scala, Java, Python/Rust (немного)
- http4s, cats, Spark API, sbt
- Vagga, Lithos, Apache Spark, YARN, HDFS, Kafka, AirFlow, Jupyter Notebook
2014-2017 — бекенд
Обязанности
Разработка продуктового каталога, оптимизация скорости загрузки страниц. Создание компонентов для новых продуктов (bigl.ua). Внутреннее тестирование своего решения для контейнеризации (vagga/lithos).
Обучение интернов (ментор в EVO Summer Python Lab).
Использованные технологии
- Python, JS
- aiohttp, Pylons (свой форк), GraphQL, rx.js
- Docker, PostgreSQL, MySQL, Kafka, ElasticSearch, Redis, webpack
2014: PlasticJam
Обязанности
Проектирование и разработка системы отслеживания заказов, оптимизация бекенда. Внедрение CI/CD для разворачивания и тестирования проекта, рефакторинг монолита.
Разработка архитектуры сбора метрик пользователей, реализация её на Scala для большей производительности.
Использованные технологии
- Scala, Python
- Play, Flask, React.js
- Mercurial, Docker, Redis (Cluster), AWS
2013: Yandex
Обязанности
Интеграция helpdesk с внутренними сервисами Яндекса.
Использованные технологии
- Python, JS
- Django
- Git, REST, Ansible
2011-2012: Национальный Авиационный Университет
Обязанности
Поддержка lib.nau.edu.ua, администрирование библиотечного сегмента сети, серверов и связанных с ними сервисов. Доработка бекенда и классификатора для каталога библиотеки, ускорение поиска книг.
Использованные технологии
- JavaEE
- Tomcat
Сторонние проекты
- MC4EP: Игровой сервер Minecraft
- ponyFiction: Библиотека фанфиков
- …ряд внутренних библиотек, которые тут перечислять долго.