Dmitry Kiselev
Software
Engineer

I own the product end to end — and I know the difference between “it works” and “it feels great.”

#FF5A1A

Experience

Ship products that feel
considered, not just complete.

Fifteen years shipping web products — the API, the data, and the interface. Happiest when the feature is mine from the plan to the pixels: I prototype in code, ship with tests, and still care how it feels.

React  ·  TypeScript  ·  Vue  ·  Node  ·  Figma

Upwork 2014 – 2026

Twelve years on one of the world’s largest freelance marketplaces. Two kinds of work: the product pages people use every day, and the infrastructure and UI components those pages are built from.

Product screens stay inside the company. The work is the surfaces, the platform, and the quality bar.

Role
Senior Software Engineer
Stack
Vue · React · Node · GraphQL
Scale
Tens of millions of visits / month

Product features and pages

2018–2026, on the product team. Pages and features from planning with PMs and design through tests and gradual rollout.

Pages

  • Freelancer Profile
  • Freelancer Search
  • Proposals
  • AI Interviews

Proposal Manager

Owned it as the one engineer on the feature — a light CRM where clients review applicants, filter them, and send invites. The UI was built from scratch; tests (Cypress, Jest) and rollout sat with me. Shortlisting and inviting became noticeably faster.

AI Interviews

Built the interview review page: a custom video player with YouTube-style controls and an AI-generated summary of each interview. Clients screen from a recording instead of scheduling a live call. The player had to feel native to the product — not a third-party widget dropped on the page. Interaction work that later drew on OneLinePlayer.

How we worked

Features from planning to release, with PMs, designers, and QA — design docs, tests, CI, and gradual rollouts. I didn’t wait for a pixel-perfect spec on every state: I asked for intent, then made the call in the UI. I reviewed what teammates shipped and caught product inconsistencies at a glance.

Infrastructure and UI components

The layer under those pages: APIs, microfrontends, two core migrations, and the shared component library.

Platform

  • Microfrontends
  • Design system
  • Framework migration

The platform

I started on Infrastructure (2014–2018), designing PHP BFF APIs and the microfrontend layer every upwork.com page sat on. Later I helped drive two company-wide migrations of the frontend core — first to Vue 3, later to React, Next.js, and GraphQL.

The job was evolving what already shipped, not throwing it away: a shared core, fewer one-off stacks, better developer experience. The next page didn’t start from scratch.

Design system

Co-built Upwork’s shared UI component library. Day-to-day with design: Figma to Storybook, implemented in Vue and React. Fidelity and reuse — components high-traffic teams could trust, not a parallel visual language. Filling gaps, refining patterns, keeping the system honest as the product grew.

Veeam 2011 – 2014

Fullstack engineer on Veeam’s marketing team — brand sites, content, careers. Stakeholders were marketers and communicators, not only engineers. The work was the surfaces visitors actually see, and the systems that feed them.

Role
Fullstack Engineer
Stack
PHP · Angular · REST · OAuth2
Surfaces
SSO · CMS · Careers

Veeam ID

Proposed and built the company’s in-house single sign-on on OAuth2, used across internal frontend applications. Initiative first, then a system other teams could actually adopt.

Veeam API

Designed and built a headless internal CMS — REST API plus an admin panel — that served content to the marketing web apps. Brand pages stopped being hand-edited islands.

Veeam Careers

The HR website — a public recruiting and brand surface. Same job as any marketing page: clear hierarchy, a path to apply, a company that looks like itself.

How I work,
and what I work in.

Hard

  • React, Vue, and TypeScript — where the care goes. Nuxt and Next.js when the product needs them. The interface is where I refuse to be average.
  • Node and APIs — NestJS, REST, GraphQL, PostgreSQL. I design the contract the screen needs, and I ship both sides.
  • Design systems — Storybook, Figma, day-to-day with design. Shared libraries in Vue and React. Improve the system that exists.
  • CSS and interaction — states, motion, spacing, type. The button on this page is Motion; the habit is making a surface feel native.
  • Tests and production — Cypress, Playwright, Jest, CI. On-call with Prometheus and Grafana on pages that take real traffic.

Soft

  • Product judgment — I ask what the feature is for before I pick a layer. Then I prototype, decide in the UI, and own it through release.
  • Thinks like a designer — I catch when something is technically correct and still doesn’t feel right, and I have an opinion about the fix.
  • Comfortable in ambiguity — I ask for intent, then make UX decisions in code. No spec for every hover state.
  • Remote and async — I write clearly, support the next person, and don’t wait for permission to move.
  • Cross-functional — design, product, and marketing (Veeam). I can explain a technical trade-off to someone who doesn’t write CSS.
  • No-ego craft — review, raise the bar, evolve instead of rewrite. The standard is the product, not the ticket.