Vasili Holub Portfolio · 01 / 09
Portfolio

Vasili
Holub

Senior .NET Developer

Backend developer who takes a problem from the first sketch to production and stays with it through the first month after release.

Poznań, Poland · hybrid, remote or office
Four numbers from my work
24 syncs a day
accounting data in the employee portal
up from one nightly sync, after the integration redesign
0 min downtime
portal downtime per sync
down from 20 to 30 minutes, when every sync rewrote the database
140+ endpoints
moved from in-memory caches to database queries
each checked against the old version before release
5 to 7 min
per customs inspection document, down from 10 to 30
average from the logs of the old and the new program
Vasili Holub · Cover 01 / 09
Vasili Holub Portfolio · 02 / 09
02 · Profile

Backend developer with twenty years in customs behind the code

On an internal employee portal for about 5,000 users I was the only .NET developer on a 15-person team. I redesigned the accounting-system integration so the portal no longer went down during a sync, and moved 140+ endpoints from in-memory caches to database queries. In a fintech team I built a standard set of Grafana dashboards that ships with the services through Helm. Before that I spent twenty years in the customs service, in statistics, IT and international technical assistance projects.

~5,000
portal users
7 years
in .NET development
Based in
Poznań, Poland · hybrid, remote or office
Languages
English B2, Russian native
Strengths
01

Taking a question from start to finish

I stay with a problem from the first sketch to production and after. The idea, the code, the rollout, the training, the fixes in the first month.

ProofCase 1Case 4
02

Presenting an idea to the people who decide

I look for the angle that matters to the decision-maker. To take the customs system beyond the first posts, I presented it to top management as a security measure, not as faster paperwork.

ProofCase 4Case 3
03

Turning a business pain into a technical design

"We need fresher data" became a background delta sync. "Documents take too long and contain errors" became a system with central reference lists and data entered once.

ProofCase 1Case 4
04

Making ideas visible

I explain designs with schemes and visual stories. A slide deck for the team on the dashboard standard, a carousel about the integration redesign.

ProofCase 1Case 3
Vasili Holub · Profile 02 / 09
Vasili Holub Portfolio · 03 / 09
03 · How I work

Four rules I keep, each learned on a real project

01

A solution's cost does not end at delivery

Given the choice between 90% building and 10% maintaining, or the other way round, I choose the first. Learned on the accounting integration, Case 1.

02

Show early, ask early

A prototype in front of people earlier beats a polished version later. Learned on the Grafana dashboards, Case 3.

03

Big changes in one branch, tested where it looks like production

A cross-cutting change lives in one branch and is checked in an environment that matches production, and the rest of the team knows it is coming. Learned on the cache removal, Case 2.

04

Find the person who knows how to present the idea

Talk to the manager who knows how to frame an idea for the people who make the decision. Learned on the customs system, Case 4.

Backend
C#.NETASP.NET CoreSQLSQL ServerOracleMySQLKafkaMassTransit
Observability and delivery
GrafanaPrometheusLokiOpenTelemetryHelmKubernetesfeature flags
People and ideas
leading 2 reportspresenting to decision makersuser training on siteteaching C# and ASP.NET Core
Vasili Holub · How I work 03 / 09
Vasili Holub Portfolio · 04 / 09
Case 01 · IT services, internal employee portal · 2025

Accounting integration without portal downtime

Company  IT services company, under NDARole  .NET developer, de facto lead of the .NET part

Replaced a nightly full-rewrite sync that took the portal down for 20 to 30 minutes with a background delta sync. Hourly updates and no downtime.

Challenge

The internal employee portal, used by about 5,000 people, took its data from the company's accounting system. The director of internal projects asked for fresher data, and with the old integration that was impossible.

Starting point

The integration pulled all data from the accounting system, stopped the portal, rewrote the whole database and started the portal again. Users worked with yesterday's data.

Decisions
01
One generic comparison engine driven by attributes

Instead of hand-written comparison code for each of the 30 entities, which would also have to be maintained one by one.

02
Build the comparison in-house

Instead of a third-party reconciliation tool, which meant a dependency on a third system and its maintenance.

Results
From 1 to 24 syncs a day
sync frequency
From 20 to 30 min to zero
portal downtime per sync
From 20 to 30 min to 10 to 15
one full sync run
About a year
stable in production after release
Takeaway

A solution's cost does not end at delivery. Given the choice between 90% building and 10% maintaining, or the other way round, I choose the first.

~5,000 portal users15-person team30+ entity types300+ attributesC#.NETreflection with custom attributesfeature flags
Full case story
Vasili Holub · Case 1 04 / 09
Vasili Holub Portfolio · 05 / 09
Case 02 · IT services, internal employee portal · 2025

140+ endpoints moved from in-memory caches to the database

Company  IT services company, under NDARole  .NET developer, de facto lead of the .NET part

Moved 140+ portal endpoints from static in-memory caches to direct database queries. Every endpoint was checked against the old version, and all but 2 or 3 of them answer within 1 second.

Challenge

The portal kept almost everything it knew about employees in static in-memory caches. As the data grew wider (projects, roles, technologies), performance dropped and cached data could go missing. Two requirements came from the director. No endpoint may become slower, and none may take longer than 1 second.

Constraints

The change cut through the whole project while other features were being built in parallel. Resolving merge conflicts took 2 to 3 hours every day. There were no tests and no business description of a correct response, so the old endpoint became the specification.

Decisions
01
Remove the cache instead of keeping it

Instead of extending the cache, which did not fit the company's policy. Nobody could say how fresh the cached data was, and the cache was heavy to build and hold.

02
Two environments, old and new, compared by script

The same request went to both, and Postman post-request scripts compared the responses over mock JSON data covering every entity.

Results
All but 2 or 3 endpoints
answer within the 1-second target, out of 140+
Fewer bugs
no more data disappearing from the cache, and fresher data in the portal
Prod-like environment
built from a sanitized copy of production after the first release was rolled back
Takeaway

A large cross-cutting change belongs in one branch and gets tested in an environment that looks like production. It only works if the rest of the team knows about it and works with you.

140+ endpoints~30 tables with relations~5,000 portal usersC#.NETSQLPostman scripts
Full case story
Vasili Holub · Case 2 05 / 09
Vasili Holub Portfolio · 06 / 09
Case 03 · Fintech · 2026

Standard Grafana dashboards shipped with the services

Company  Fintech product company, under NDARole  Senior Developer, core services team of 5

Built one standard set of Grafana dashboards for the team's core services, kept next to the service code and shipped through the services' Helm chart, the same in every environment.

Challenge

The team lead asked me to set up observability for the processes inside each of the team's core services, six deployable processes in total. The team had dashboards, but each part was configured and delivered its own way.

Constraints

There was no common standard to build on, so the approach itself had to be agreed first. Client installations differed too. Some ran on-premises, others in Azure, so one fixed set of dashboards did not fit all of them.

Decisions
01
Dashboards next to the code, shipped with the service's Helm chart

Instead of setting dashboards up by hand and keeping their definitions in separate configuration repositories, detached from the services and their releases.

02
One template with values per environment

Instead of environment-specific values baked into each dashboard. Switching the datasource switches the environment without rewriting queries.

Results
7 dashboards in production
overview, process and runtime, logs, functional, cluster, Kafka, database, in one shared folder
About 2 months
from task to production, planned scope delivered
3 environments, one JSON
dev, test and prod run the same dashboard definitions
Takeaway

Show work early and ask for feedback sooner. Next time I would build the prototype faster and hand it over earlier.

5-person team6 service processes3 environmentsGrafanaPrometheusLokiOpenTelemetry (.NET)HelmKubernetes
Full case story
Vasili Holub · Case 3 06 / 09
Vasili Holub Portfolio · 07 / 09
Case 04 · Public sector, customs · first rollout 2018, medal 2019

Customs inspection paperwork, from my own idea to a state medal

Organization  National customs serviceRole  initiator and developer of the system

Proposed and built a web system for customs inspection paperwork. A document now takes 5 to 7 minutes instead of 10 to 30, data comes from central reference lists instead of being retyped, and the system earned a state medal.

Challenge

I filled in customs inspection documents myself and saw how much time they took and how often they contained errors. The same data had to be typed again for every document. The head of the customs office supported the idea of entering it once.

Constraints

The system had to pass state certification, including security certification. The customs service officially supported only Oracle, so the system moved from MySQL to Oracle, and I prepared 300 pages of certification documentation.

Decisions
01
A web system with a central database

Instead of extending the old local program, which had no central database, no shared reference lists and no control over who submits what.

02
Present the system to top management as a security measure

Instead of presenting it as faster paperwork and lower inspection costs. All data in one database, and no submissions by people without the right to make them.

Results
From 10 to 30 min down to 5 to 7
time to prepare one inspection document, from the logs of the old and the new program
About 15 customs posts
using the system, rolled out with on-site training
State medal, 2019
for ensuring economic security, awarded for this system
Takeaway

Work with the manager who knows how to present an idea to the people who make the decision.

~15 customs posts300 pages of certification documentationled a UI developer, an intern and a DevOps engineerC#ASP.NETMySQL
Full case story
Vasili Holub · Case 4 07 / 09
Vasili Holub Portfolio · 08 / 09
08 · Career

Seven years in .NET, twenty years in customs before that

2026
Senior Developer
fintech product company
core services team of 5, standard observability dashboards
2021 to 2026
.NET Developer, de facto lead of the .NET part with 2 reports
IT services company
internal employee portal for about 5,000 users
2019 to 2021
.NET Developer
EPAM Systems
client projects
2015 to 2019
IT and analysis roles
national customs service
proposed and built the inspection paperwork system, state medal in 2019
2011 to 2015
Deputy Project Manager
national customs service
international technical assistance projects
2000 to 2011
Leading, then Chief Inspector
national customs service
IT, customs statistics and analysis, rollout of the EOS "Delo" document management system
1999 to 2000
Inspector, then Senior Inspector
national customs service
foreign trade statistics
Recognition
Medal for ensuring the economic security of the Republic of Belarus, 2019, for the customs inspection paperwork system
Certificate of honour, 2009, for the customs rollout of the EOS "Delo" document management system
Taught courses on C# fundamentals and ASP.NET Core, 2022 to 2023
Languages
English B2, Russian native
Education
Belarusian State University
Vasili Holub · Career 08 / 09
Vasili Holub Portfolio · 09 / 09
09 · Contact

Let's talk

Looking for
Senior .NET Developer roles, Team Lead possible. EU locations where my Polish residence permit allows work. Available now.
Based in
Poznań, Poland · hybrid, remote or office · English B2
VH
Vasili Holub
Senior .NET Developer

Vasili is a great team player, a keen listener, and a hard worker. He approaches collaboration thoughtfully, takes feedback seriously, and translates discussions into solid, reliable implementations.

Pavel Kazakov, Vasili's mentor at EPAM Systems. LinkedIn recommendation, February 2026

Vasili Holub · Contact 09 / 09