Контакти
Андрій Кушнір
- Пошта
me
на цьому домені- Fediverse
@orhideous@twilight.garden
- Matrix
@orhideous:twilight.garden
- Telegram
orhideous
- Телефон
- +380671387767
Що вмію
- створювати й доставляти продукти для потреб бізнесу та клієнтів;
- розуміти контекст бізнесу, його доменну модель і охоплювати поглядом загальну картину;
- швидко навчатись, читати документацію для фреймворків/API/сторонніх сервісів/etc.;
- оформлювати думки в вигляді зручних нотаток та технічної документації;
- оцінювати «за» і «проти», щоби прийняти найбільш раціонального рішення;
- із розрізнених шматочків інформації збирати когерентну картину щодо роботи сервісу чи процесів в цілому;
- відстоювати свою думку в дискусії, підкріплюючи її аргументами, а не емоціями.
- тестувати свій, а за необхідності й чужий код;
Вміння
Що знаю, що робив та з чим працював
Python
- гарно знаю мову та екосистеми навколо неї, включаючи фреймворки (Pylons, Django, Flask, aiohttp, FastAPI) та розповсюджені бібліотеки;
- працював з асинхронним кодом;
- для критичних до швидкості обчислень інтегрував розширення на С/cython;
- розбираюсь в 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: Бібліотека фанфіків
- …низка внутрішніх бібліотек, які тут перераховувати довго.