This is the story about implementing and evolving contract tests in a growing EV charging software company.

It was a moment when our company reached maturity, and the number of main components becomes stable, but there was still too much ahead to implement. With the growth of integrations and isolated components came the requirement to make the system more reliable, transparent for maintainers and API consumers, and control breaking changes.

On the way to the quality, we had integration and end-to-end tests, but these are slow and require quite a lot of time for maintenance with the growth. We started…

Просто добавь эту зависимость, говорили они

Скрипты сборки являются неотъемлимой часть рабочего процесса разработчиков. Они включают функционал от вывода информации для отладки до ключевых команд вашего пайплайна. В Java стэке основными инструментами являются Maven и Gradle.

Часто ли вы были довольны теми pom.xml и build.gralde файлами, которые вы написали длительное время назад или которые достались вам в поддержку?

Не принято требовать особого качества от данных файлов в репозитории в сравнении с качеством кода, которому мы уделяем внимание, и про которое написано много книг. В тоже время, многие были бы рады более понятному содержанию и очевидному поведению.


Любой элемент инструмента сборки рано или поздно создает проблему, иногда…

We can find billions of articles with interview questions for every programming language and specialization and its amount grows rapidly as global technology stack does. It goes along with a lot of interview steps, tasks, and assessments that help us to better understand the person you have a conversation with and his/her experience. But all this information barely helps to better conduct the average interview. I asked myself about the common improvement we as interviewers can apply to and found that for me the most valuable is asking the question Why.

The first advantage of this question is that the…

Once my team got a requirement to modify HTTP image resources at a server on the fly. We started a discussion with variants to change this server but then a rational question comes up: What if there is a client that doesn’t need image modification?


Apparently we can add optional HTTP query parameters to the server request to keep backward compatibility for anyone. It’s appropriate for a lot of cases and the cleanest solution would be to write server web filters and check query parameters for any request to apply image processing logic.

I felt enthusiastic about this solution and…

Однажды код будет прекрасным, возможно сегодня

Нет программиста, который не думал о том, как бы написать код еще лучше.
Нет разработчика, который на code review не думал, что код коллеги непонятен и может быть написан лучше.
Нет руководителя, который не думал о важности качества кода и решений, принимаемых нанятыми им людьми.

Artem Ptushkin

Software engineer, clean code enthusiast, and contract testing expert

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store