Владимир Кушнир
Резюме
— Привет! Я умелый фронтенд разработчик* с более чем 10-летним опытом в UI/UX дизайне, разработке приложений и моделировании баз данных. Я стараюсь строить точные, отзывчивые, быстрые, удобные в использовании окружения, которые красиво выглядят и хорошо выполняют свои задачи.
*Мне кажется, 40-60 по The Great Divide на JavaScript инженера та UX инженера
Теперь
-
1го октября 2020 – сегодня
Full Stack Developer в Decentriq
- программирую, тестирую и деплою приложение, написанное на React + Apollo Client
- делаю приложение красивым, темизируемым (используя Joy UI и Font Awesome), и реактивным (используя GraphQL подписки через Websockets API)
- создаю компоненты в Storybook, отвечаю за дизайн-систему, занимаюсь миграциями UI фреймворков (например, с Material UI на Joy UI), поддерживаю тему, построенную на CSS Variables поверх компонентов на основе слотов
- строю и валидирую формы (используя
react-hook-formиzod/yup), включая динамические, которые генерируются во время выполнения из JSON Schema (используя JSON Forms) - строю дашборд с графиками, используя
recharts, а там где recharts не хватает — обращаюсь к примитивам@vx - строю интерфейс для редактирования правил, используя
react-querybuilder - строю флоу для импорта/экспорта CSV (используя papaparse) и флоу для экспорта/скачивания файлов в формате zip (используя jszip и file-saver)
- интегрирую модули WebAssembly в приложение (например, для клиентской верификации аттестации, для валидации и трансформации данных при загрузке, и т.д.)
- интегрирую с внешними сервисами (например, Auth0 для аутентификации, и т.д.)
- поддерживаю монорепозиторий и его билд-пайплайн (используя pnpm workspaces и Vite)
- отвечаю за общую экосистему пакетов в монорепозитории (components, hooks, theme, utils, models, API и GraphQL пакеты), включая собственный ESLint конфиг
- поддерживаю зависимости актуальными, код чистым, линтованным и отформатированным (а также SOLID, DRY и KISS)
- пишу и поддерживаю unit, integration и end-to-end тесты (используя Vitest, React Testing Library и Playwright), мокаю API с помощью MSW, и отвечаю за тестовую инфраструктуру и конфигурацию
Тогда
-
1го января 2020 – 28го февраля 2022
Full Stack Developer в Hivecell
-
@apollo/client @auth0/auth0-react @dnd-kit/core @dnd-kit/modifiers @dnd-kit/sortable @dnd-kit/utilities @emotion/babel-plugin @emotion/css @emotion/react @emotion/styled @fortawesome/fontawesome-svg-core @fortawesome/free-brands-svg-icons @fortawesome/free-regular-svg-icons @fortawesome/free-solid-svg-icons @fortawesome/pro-duotone-svg-icons @fortawesome/pro-light-svg-icons @fortawesome/pro-regular-svg-icons @fortawesome/pro-solid-svg-icons @fortawesome/pro-thin-svg-icons @fortawesome/react-fontawesome @mui/lab @mui/material @optimizely/react-sdk @sentry/react @sentry/tracing ahooks apollo-upload-client apollo3-cache-persist date-fns file-saver framer-motion graphql graphql-ws history lodash mapbox-gl notistack react react-awesome-query-builder react-dom react-hook-form react-is react-map-gl react-router-dom react-virtuoso slate slate-history slate-react uuid web-vitals workbox-background-sync workbox-broadcast-update workbox-cacheable-response workbox-core workbox-expiration workbox-google-analytics workbox-navigation-preload workbox-precaching workbox-range-requests workbox-routing workbox-strategies workbox-streams xterm xterm-addon-attach xterm-addon-fit xterm-addon-unicode11 xterm-addon-web-links
-
@graphql-codegen/cli @graphql-codegen/import-types-preset @graphql-codegen/typed-document-node @graphql-codegen/typescript @graphql-codegen/typescript-apollo-client-helpers @graphql-codegen/typescript-operations @graphql-codegen/typescript-react-apollo @vitejs/plugin-react eslint eslint-config-prettier eslint-config-react-app eslint-plugin-import eslint-plugin-prettier eslint-plugin-simple-import-sort eslint-plugin-sort-keys-fix husky lint-staged prettier source-map-explorer typescript vite vite-plugin-eslint vite-plugin-svgr
- делал приложение красивым, темизируемым (используя Material UI и Font Awesome), и реактивным (используя GraphQL подписки через Websockets API)
- интегрировал с внешними сервисами (например, Auth0 для аутентификации, Optimizely Rollouts для feature flags, Mapbox для карт, Sentry для трекинга ошибок, и т.д.)
- держал порог покрытия кода unit-тестами на разумном минимуме (пока что это 0%)
- оптимизировал код для производительности и эффективности (использовал Service Workers API, Web Workers API и техники вроде мемоизации,
throttleиdebounce, чтобы решать проблемы с кешированием, overfetching/underfetching, превышением rate limits, лишним ре-рендерингом, зависанием браузера, и т.д.) - держал бекенд надёжным и стабильным (используя
axios-retryдля повторных вызовов,winstonдля логирования, иlightshipдля репортинга readiness и liveness, и т.д.) - поддерживал базу данных (используя Flyway для миграций, Row Level Security для безопасности и мультитенантности, и т.д.)
- заворачивал всю машинерию в Docker контейнеры и деплоил в Kubernetes как часть микросервисной event-driven CQRS архитектуры, следил за скоростью, надёжностью и консистентностью CI/CD пайплайнов
- коммуницировал с другими микросервисами через Kafka, REST API, GraphQL schema stitching
- старался поддерживать правильный подход, быть мягким, но рассудительным и убедительным, ставил реалистичные дедлайны и цели и помогал команде их достигать, вёл личным примером
-
-
15th July 2019 – 31st December 2019
Full Stack Developer в Newfire Partners
-
Full Stack Developer в PrismHR
- проводил code review, принимал участие в refinement-собраниях, daily standup-ах, планированиях спринта и ретроспективах (это большой энтерпрайз, поэтому Scrum и QA на первом месте)
- находил и устранял боттлнеки, исправлял баги, находил в коде паттерны и рефакторил все заново (кроме шуток, это было мое любимое занятие ❤️)
-
-
24го января 2017 – 4го июля 2019
Full Stack Developer в Binary Studio
(вот мой introduction letter)-
Full Stack Developer в ScreenCloud
- конфигурировал кеширование в CloudFront и Elasticache, WebSockets в Elastic Beanstalk, настраивал API Gateway и Lambda, и т.д.
- проверял код, заботился о документации, планировал спринты, принимал участие в ретроспективах и утренних стендапах
-
Frontend Developer в Dynamic Reservations
-
- периодически читал лекции в Binary Studio Academy
- иногда меня менторили те, кого я менторил
- мог в кухонные разговоры о почти любом
- также мог играть с тобой в видео игры, чтобы стать лучшей командой
-
-
1го октября 2016 – 31го декабря 2016
Full Stack Developer в Dutchstar
- строил, тестировал и разворачивал приложения, написанные на React + Redux и Phalcon + MySQL
-
10го сентября 2016
Переехал во Львов
Ещё раньше
-
Где-то в 2015-м
Бросил курить 🥗
- все еще люблю иногда есть снеки и фастфуд и время от времени выпивать стаканчик чего-то
-
25го мая 2014 – всегда
Женился на Людмиле Мандзюк 👩🏻
- делаю все, что скажет
-
1го сентября 2012 – 30го сентября 2016
-
- обслуживал MySQL multi-master кластеры, Oracle failover кластеры, Microsoft SQL mirrored / replicated серверы (мониторинг, резервное копирование и развертывание, пользователи/группы/роли, схемы)
- составлял и оптимизировал быстрые, эффективные SQL-запросы
- оптимизировал базы данных, индексы и т.д.
- строил веб-дашборды, репорты, используя HTML, CSS, JavaScript, SQL
-
-
1го сентября 2011 – 30го сентября 2016
-
- планировал компьютеризированные производственные процессы
- совмещал базы данных различных производственных систем (присылал и получал данные с помощью репликаций, триггеров, запланированных событий, cron-задач)
- составлял системы высокой доступности, минимизировал простой
- спроектировал и запрограммировал BDE (BetriebsDatenErfassung) — систему агрегации данных, предназначенную для существенной автоматизации задач по планированию, изготовлению, мониторингу и контролю
- анализировал и превращал данные
- писал документацию, мануалы, ґайдлайны, мемо
-
-
9го апреля 2008
Был официально трудоустроенным (работник №943) в ООО «СЭ Борднетце-Украина»
(до этого работал по гражданско-правовому договору) -
14го февраля 2008 – 31го января 2011
-
- разрабатывал UI и UX для программ и веб-страниц
- программировал простые приложения, которые помогали в производственных процессах, используя Delphi, VB, Java, HTML, CSS, JavaScript, PHP, SQL
- обслуживал базы данных Microsoft SQL, MySQL и Firebird
-
-
февраль 2006 – август 2007
-
- верстал буклеты, флайеры, визитки, постеры в Adobe CS (Photoshop, Illustrator, InDesign)
- обслуживал струйные и лазерные принтеры и плоттер
- конструировал вебсайты в Macromedia Dreamweaver, Macromedia Flash (ActionScript)
- начал курить 🚬
-
-
апрель 2004 – декабрь 2004
-
- администрировал сеть с около десятка рабочих станций на Windows и одного сетевого шлюза на Linux (DHCP, DNS, proxy, ACLs)
- поддерживал здоровье компьютеров (устанавливал ОС через PXE, проводил резервное копирование, антивирусные проверки, обновление программного обеспечения, замену комплектующих и т.п.)
-
-
16го мая 2003
Получил отечественный паспорт (с традиционно странным фото, конечно) — не могу дождаться, чтобы заменить это на новый паспорт гражданина Украины
- немного мог сделать первые несколько лет...
-
6го октября 1986
Родился в Тернополе, Украина — Спасибо, мама и папа!
Языки
*Изучаю
Навыки
Характер
Нравится😃
Не нравится😞
Хочется🥺
Обучение
-
каждый день
-
декабрь 2005 – апрель 2006Сертификаты об окончании курсов Cisco Networking Academy Program
-
1го сентября 2003 – 30го июня 2008Диплом бакалавра по компьютерным наукам Тернопольского Национального Технического Университета
-
1го октября 1995 – 23го мая 1999Свидетельство об окончании Тернопольской детской художественной школы им. М. Бойчука
-
1го сентября 1993 – 21го июня 2003Аттестат о среднем образовании в средней общеобразовательной школе №20 им. В. Симоненко м. Тернополя
Статьи
Ни одна не опубликована пока что