CV — Дмитро Клименко

Веб-розробка, технології, музика, подорожі

Веб розробка, кар'єра, освіта

TypeScript, Bun.js/Node.js, React, Next.js/Astro, PostgreSQL, Drizzle/Prisma ORM, Google Cloud/Vercel/self-host.

Моя студія, місце де працюю та займаюсь музикою
Моя студія, місце де працюю та займаюсь музикою

Мої навички

TypeScript

Для JS проектів вважаю обов'язковим

Працюю з TypeScript протягом багатьох років для забезпечення необхідного рівня безпеки типів проекту, слідкую за новими можливостями.

React

Комерційні проекти з 2012

Працюю з React нон-стоп з версії 0.5 (2012), від React.Component класу до функціональних, серверних компонент та хуків.

Bun.js/Node.js

Працюю постійно з ранніх версій

Не скажу що експерт бо завжди вчу/перечитую API документацію під свої задачі. Але проблем без рішень ще не мав.

JavaScript, ESM

База мого основного стеку

Працював на корпоративних проектах ще коли підтримка IE5-IE6 була необхідністю, а jQuery та AJAX були чимось таким, а async/await ще не існувало. Ніколи не сумуватиму за тими часами :)

DB, RDS, ORM

Postgres/Mongo, Prisma/Drizzle та інші

Мав професійний досвід і продовжую працювати з різними базами даних, ORM та DBaaS. Від основних SQL/NoSQL БД до RDS та специфічних хмарних.

CI/CD

Автоматизований пайплайн вважаю обов'язковим

За останні роки працював над пайплайнами для збірки та деплою різних видів проектів.

Frameworks

Фреймворки для повного стеку, бекенду чи UI

Працював із різноманітними фреймворками. Від UI (HeroUI, MUI, Tailwind CSS тощо) до бекенду (Nest.js/Express тощо) та повного стеку (Next.js, Astro тощо).

Хмарні провайдери

Google Cloud, AWS, DigitalOcean, Vercel

Мав професійний досвід з різними хмарними провайдерами, приймав участь в аудитах тощо.

React Native, Electron, Flutter

Маю суттєвий досвід кросплатформної розробки

Не працював дуже багато, але достатньо щоб швидко запустити у роботу проект/CI, Expo тощо.

Загальна хронологія

  • Principal Engineer / Tech Lead
    Найцікавіша для мене роль зараз це щось між Principal Engineer / Tech Lead, де я все ще можу зосередитись на більших задачах, не дуже відволікаючись на менеджерські обов'язки.


  • Вища освіта: магістр професійної освіти
    КНУБА, ФАІТ – UA

    Випускник Київського національного університету будівництва і архітектури, факультет Автоматизації і інформаційних технологій.

    Спеціальність: 015.10 «Професійна освіта. Комп'ютерні технології». Поєднання технічної експертизи з педагогікою для створення кращих інструментів профорієнтації студентів.



  • Lead Developer
    Отримав підвищення працюючи на Luxoft. В основному, працював з JS/CSS, React, Node.js, Electron.


  • Senior Developer
    Отримав підвищення працюючи на Tikle. Працював з C#.NET, MSSQL, JS/CSS.


  • Вища освіта: спеціаліст/магістр
    НТУУ "КПІ", ФПМ, СКС – UA

    Випускник Національного технічного університету України "Київський політехнічний інститут", факультет Прикладної математики, кафедра Спеціалізованих комп'ютерних систем.

    Я би сказав, досить вдалий вибір у контексті моєї кар'єри: програмування (Pascal, C#, .NET, C++, Assembler), алгоритми і структури даних, графи, теорія імовірностей, бази даних (MSSQL) і ще багато чого.

    В 2006 році, будучи студентом, зареєстрував ФОП та отримав першу офіційну роботу як інженер-програміст. На той момент працював з ASP/.NET.



  • Середня освіта

    Закінчив середню школу з відзнакою. Також закінчив музичну школу з відзнакою (баян та народні інструменти) та весь час відвідував спортивну школу з плавання (кандидат в майстри спорту).

    Призові місця на олімпіадах з математики та фізики, публікації в Малій академії наук, участь у виставках малюнків.

    Створив перший комерційний проєкт у 17 років — Win32-додаток для роботи з CD/DVD.

Моя кар'єра

  • Lead Full-stack Engineer
    KITRUM (контракт) – UA, SE

    Я повністю переробив і вдосконалив клієнтський фул-стек DAM (управління цифровими активами) веб-сервіс, додав авторизацію на основі ролей, CI/CD, перегляд 3D-моделей, AR для мобільних телефонів (USDZ/GLB) та створив спеціальну панель адміністратора протягом 2-місячного контракту.

    Технічний стек базувався на Google Cloud, TypeScript і RDS SQL (Drizzle ORM, Postgres, динамічні схеми). Bun.js/Node.js, Next.js/React, HeroUI 2/Tailwind CSS, Zod, Better Auth, GraphQL/Yoga, TanStack Query.

    Ретельно оцінено продуктивність Mongo DB 7 Atlas Search і Meilisearch для фасетного пошуку.



  • Senior Frontend Engineer
    Windscribe / Control D – CA
    Працюючи над веб-сайтом та контрольною панеллю Control D (React, Redux, TypeScript), зробив три суттєві зміни кодової бази: мажорні апгрейди Gatsby та Cypress (високе покриття тестами), виправив сотні попереджень щодо безпеки типів. Брав участь у впровадженні нової версії/дизайну контрольної панелі.


  • Principal Software Engineer
    Peppy Health – UK

    Приєднався до стартапу на досить ранній стадії. Створив архітектуру, реалізував всю основну інфраструктуру (хмара, база даних, CI/CD, E2E/модульне тестування), реалізував початкові основні версії багаторольового API та панелі адміністратора.

    Інтегрував всі необхідні для бізнесу сторонні сервіси та веб-хуки (Sentry, SendBird, Segment, Customer.io, Mixpanel та інші). Офіцер з безпеки. Брав участь у різноманітних аудитах інфраструктури та безпеки. Займався код рев'ю всіх проектів (API, адмінпанель, мобільний додаток), менторством та технічною стороною управління командою.

    Технічний стек базувався на Google Cloud, TypeScript, RDS SQL (TypeOrm/Prisma). Node.js (NestJS), додатки на React і React Native.



  • Lead Front-end Developer
    Star (formely Cogniance) – UA, US

    (1) Додаток для керування роботизованим складом.

    Схожий на гру інтерфейс користувача дозволяє спостерігати та керувати роботами та автоматизаціями — на карті та в режимі реального часу. TypeScript, React, Redux, PixiJS v4-5 / WebGL, Paper.js (not much), SVG, Node, Jest/Cypress, клієнт для REST API.

    (2) Клієнтський інтерфейс для транспортної системи штату США: квитки на громадський транспорт, паркування, послуги для установ.

    Адаптивний та доступний веб-додаток з нуля, допомагає користувачам купувати та переглядати все про свої квитки та підписки, в залежності від розташування, сезону та типу облікового запису. TypeScript, React, Redux, Material-UI (MUI), SVG, Node, unit tests (Jest), клієнт для REST API. Спеціаліст з питань доступності ADA та безпеки.



  • Tech Lead Front-end
    Match2One – SE

    Програмована рекламна платформа. Веб-додаток для клієнтської зони (React, Redux, ES2017, LESS).

    Нова архітектура, система спеціальних білдів, складні компоненти та UI/UX імплементація. Код рев'ю. Співбесіди з кандидатами.



  • Senior Front-end Developer → Tech Lead
    Luxoft – UA

    Гібридний кросплатформний додаток для відомого виробника HDD, з нуля (macOS, Windows).

    Electron, ES6 (React, Node.js), прототипування додатку, складна розробка інтерфейсу користувача, локалізація, сповіщення ОС, продуктивність і ефективність пам’яті/ЦП, IPC, збірка та задачі CI, юніт-тести (Jest) тощо. Код рев'ю. Співбесіди з кандидатами.



  • Робота над власними проектами

    Annexare. Студія веб-розробки та дизайну. Ми розробили багато арт дизайнів та веб-сайтів для артистів, музикантів, музичного лейблу та журналу тощо. Розробив власну CMS для цього (PHP, AJAX, jQuery, JSON, MySQL) щоб підтримувала все що нам було треба: багатомовний контент, SEO, швидкість, спеціальні типи контенту, інтеграція з соц-мережами. Деякі з них досі онлайн, але технічний стек досить застарілий.

    Soccer City. Гра у реальному часі для соціальних мереж (Facebook та інші) з Flash GUI, PHP/MySQL бекендом та різними інтегрованими API соціальних мереж та платежів. Гра комбінувала ізометричний сіті-білдер та онлайн матч-мейкінг що враховував як показники команди так і деякий фактор випадковості. З квестами, досягненнями, внутрішньоігрові покупки тощо. Це був досить непростий проект. Але коли Flash пішов з браузерів ми не стали переробляти клієнт для сучасних браузерів і закрили.



  • Facebook Applications Developer
    Stuzo – US
    Розробка UI та бекенду, використовуючи корпоративну Facebook Platform на базі Zend framework та Doctrine. PHP, Facebook Graph API, FBML, Piwik, генерування PDF та інше.


  • Software Engineer
    Lemsys – UA, DE, IT
    Розробка ПЗ для вбудованих пристроїв: веб додатки, сервіси та схема баз даних. Архітектура та безпека. C/C++, Perl, UML/XML/XSLT, UPnP, SQLite.


  • Middle → Senior .NET Developer
    Tikle / lifecell – UA
    Архітектура, внутрішні сервіси, веб UI сервіси, веб-сайти, додатки та схеми баз даних для мобільного оператора використовуючи ASP.NET, C#, MSSQL, SOAP/XML та інше. Інтеграція партнерських сервісів (розсилка SMS та інші).

Музика

Закінчив музичну школу з відзнакою. Люблю як слухати так і грати музику, маю невеличкий лейбл звукозапису та колекцію музики на фізичних носіях.

Музика завжди була і зараз є великою частиною мого життя.

Завдяки батьку, з раннього дитинства познайомився з музикою. Почав колекціонувати Pink Floyd приблизно з 6 років і досі великий шанувальник. У 7 років добровільно записався до музичної школи, яку закінчив з відзнакою.

У підлітковому віці почав слухати різні піджанри металу та електронної музики, і саме тут моє захоплення музикою та грою на різних інструментах перейшло на наступний рівень. Зараз я граю на гітарах, барабанах, клавішних і деяких народних інструментах. Маю домашню студію звукозапису. Завжди цікавлюсь дизайном та якістю звуку, інструментами, обладнанням, ефектами тощо.

Я у домашній студії
Я у домашній студії

Продовжую регулярно відвідувати заняття з деяких музичних інструментів (переважно гітари та барабани), щоб покращити свої навички.

З 2011 року у вільний час займаюсь незалежним звукозаписним лейблом і музичним журналом — Noizr. Це досі некомерційний проект, весь прибуток реінвестується в розвиток наших артистів (після російського вторгнення весь накопичений прибуток за останні пару років передається українській армії та фонду «Повернись живим»).

Також я збираю деяку музику на фізичних носіях (вініл та аудіо касета). Іноді насолоджуюсь спеціально відведеним для прослуховування улюбленої музики часом.

Живий виступ з моїм гуртом
Живий виступ з моїм гуртом

P.S. Як я граю наживо з Nabaath можна подивитись на YouTube: частина 1, частина 2 (застереження: це може бути “занадто важким” для декого). Решта музичних проектів та записів ще у процесі.


Подорожі

Поїздки на авто, заходи сонця, нічне небо, кемпінг. Також огляд визначних пам'яток, музеї, трохи історії та культурного обміну.

Подорожі — велика частина мого життя, і я сподіваюся, що так буде завжди. Це завжди щось нове — архітектура, історія, музеї, культура.

Відвідав майже всі країни Європи. І не просто швидко прилетіти та побачити кілька туристичних атракцій. Мені дуже подобаються поїздки на авто, і я намагаюся побачити таким чином набагато більше. Моя найбільша автомобільна подорож наразі — близько 10 тис. км, 10 країн протягом 6 тижнів, з України до Атлантичного океану і назад.

Подорож на авто у 2021: близько 10 тис. км, 10 країн протягом 6 тижнів, з України до Атлантичного океану і назад
Подорож на авто у 2021: близько 10 тис. км, 10 країн протягом 6 тижнів, з України до Атлантичного океану і назад

Також бачив трошки США, Дубай та інші.

Багато подорожував і Україною, вона дуже багата на красиві та цікаві місця (гори, озера, річки і, звичайно, міста).

Мені подобається спостерігати за заходом сонця, хмарами, зоряним небом. У поєднанні з горами, озерами, лісами — навіть краще :)


Хоббі

Технології, пристрої, дизайн, ігри. Розумний будинок (HomeKit, Zigbee), автоматизації. Сноуборд, серфінг, плавання, велосипеди, лонгборд тощо.

Музика та подорожі, очевидно, є моїм найбільшими захопленнями. Але також мені подобається багато речей у цьому світі що постійно розвивається. Мабуть, я досить допитлива людина.

Технології та нове спорядження

Це те, у що я справді люблю вникати та пробувати в сферах, у яких я задіяний. Нове обладнання для музики (інструменти, ефекти, педалі, аудіоінтерфейси та монітори, підсилювачі тощо). Розумні пристрої для дому, які полегшують моє життя завдяки автоматизації та різним датчикам. Електросамокати, велосипеди тощо.

Активний спосіб життя

Мені дуже подобається кататися на сноуборді, серфінг, плавання, байдарки, їздити на велосипеді. Багато років займався спортивним плаванням (кандидат в майстри спорту). Дещо з цього трапляється не дуже часто, але коли я відчуваю, що сумую то обов’язково повертаюсь. Їзда по пісках у пустелі, величезні аквапарки, американські гірки, стрибки з парашутом — усе це я теж робив.

Книги і артбуки

Читання — не моя сильна сторона. Мені подобається деяка наукова фантастика, як-от Роджер Желязни, Ден Браун тощо, але я не дуже багато читаю. З іншого боку, я дуже люблю артбуки і збираю деякі цікаві. Про музику, мистецтво, історію, архітектуру, музеї тощо.

Ігри

Мабуть, немає такого гіка якого не цікавлять сучасні ігри. Я граю в деякі ігри на своїй консолі (переважно онлайн, з друзями), іноді на iPad. Більше не дуже люблю ПК геймінг, тримати та постійно оновлювати окремий ігровий ПК мені не цікаво, а для роботи — не потрібно. Коли є настрій пограти я люблю просто натиснути кнопку, запустити гру і відволіктись на якийсь час.


FAQ

Відповіді на ваші часті питання.

Яку роль шукаєте зараз?

Загалом, я шукаю щось на кшталт ролі техліда, де приблизно 50-70% робочого часу займає фактична розробка, а решта — мітинги/планування/менторство/код рев'ю тощо. Мені дуже подобається робити щось власноруч, віддаю перевагу роботі над складними завданнями де є час зосередитись.

Ви зараз в Україні? Це безпечно?

Так. Я тут, у себе вдома більшість часу. Я би сказав, що зараз тут відносно безпечно. Моє розташування виявилося досить вдалим враховуючи обставини і те, що я досить близько до Києва (трошки на південь).

Як ви боретеся з очевидними ризиками?

У мене є великі батареї, які можуть забезпечувати основну електроніку (опалення, світло, оптичне підключення до Інтернету) протягом кількох днів взимку. Я можу заряджати батареї за допомогою своїх генераторів, перемикання на батареї та назад відбувається автоматично та непомітно. У мене є армована плівка на вікнах, щоб хоча б не розлетілось скло (про всяк випадок). Крім того, у мене є безпечніше місце під першим поверхом. Маю авто з повним баком бензину та додаткові каністри про всяк випадок. Основний ризик – пряме влучання, якого, сподіваюсь, не станеться.

Плануєте виїхати з України?

Ні, зараз не маю таких планів. Вирішив залишитися тут і підтримувати чим можу свою сім’ю, людей та армію. Звичайно, іноді сумніви є, тому постійно стежу за ситуацією з точки зору безпеки.

У вас є проекти з відкритим кодом?

Звичайно, люблю та підтримую спільноту з відкритим кодом де можу. Мій найбільший NPM модуль countries-list має ~1.3K зірок на GitHub та 2.4M+/mo завантажень на місяць на NPM. Більше проєктів на сторінці Проєкти.

Ви віддаєте перевагу віддаленій, офісній, чи гібридній роботі?

В останні роки я переважно працював віддалено. Загалом я дуже ціную спілкування в реальному житті і радий періодичним особистим зустрічам. Але не повсякденно, принаймні не до кінця війни. Я намагаюсь бути доступним протягом робочого дня, тому відеодзвінки можливі, коли це потрібно.

Цікаві факти про себе?
  • Кинув палити у 7 років — після першої ж цигарки (батько навмисно дав спробувати, знав що не сподобається!)
  • Колекціоную Pink Floyd з 6 років
  • Створив перший комерційний програмний проєкт у 17 років (кінець 2003)
  • Кандидат в майстри спорту з плавання
  • Одночасно закінчив три школи: середню, музичну та спортивну