Контакти
Андрій Кушнір
- Пошта
 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: Бібліотека фанфіків
 - …низка внутрішніх бібліотек, які тут перераховувати довго.