
Andrei Nevedomskii
I am a software engineer with 15+ years of experience in IT.
I am passionate about clean code; flexible, yet simple architecture; smart testing and open source. Recently I've been using Kotlin 100% of time, so I'm fluent in it, as well as Java. I'm familiar with Spring Framework (contributed to it, gave public talks about it), Ktor, Gradle, Maven, mockk and many other frameworks. I learn fast and always try to make sure that I share my knowledge with the team. What I like about being an engineer, is that if I see something's broken or wrong - I don't need to wait for someone to fix it, as I can do it myself. And this is also why I like open source. :)
Experience
Responsibilities:
Ensuring a healthy and striving Kotlin community within the company (around 300 engineers), as well as shaping hiring practices and organizing public events and talks to promote the company's engineering excellence.
Achievements:
- revived Kotlin community within the company (dedicated Slack channel) by engaging people with posts and polls, and encouraging participation in discussions. Shaped a healthy culture where people aren't afraid to ask questions.
- designed and built tooling for engineers to start new services within minutes instead of hours or even days, resulting in significant time savings as well as standardization of the tooling to build services in Kotlin. Managed to attract 27 contributors from the company.
- Implemented native Kotlin compiler for protobuf based on SquareUp's Wire, resulting in reduction of incidents and better developer experience.
- reworked the interview approach to eliminate bias during assignment reviews.
- resolved a few heated discussions between the engineers in a healthy and friendly manner by providing empathy and reasoning for decisions.
- contributed to quite a few open-source projects solving issues the engineers in the company had. Among others: support for Kotlin coroutines instrumentation in DataDog; support for getting prefixed properties in Gradle; fixes to MicroMeter, Cohort, Koin, etc.
Responsibilities:
Working as a part of the team responsible for booking financial flows of the company.
Achievements:
- redesigned and reimplemented from scratch the service to integrate with the Israel tax authority using event-driven architecture, resulting in a significant reduction of incidents and ease of troubleshooting.
- optimized DB performance of the Ledger service, reducing the time it took to generate accounting reports from hours to minutes.
Responsibilities:
Design and implementation of a service responsible for bank accounts management and SEPA transactions processing. Code review and mentoring of other engineers in the team.
Achievements:
- improved test reliability by switching from H2 to real DB engine via testcontainers;
- reduced maintenance cost of payment processing logic by switching to event-driven approach;
- improved team performance by teaching how to write code in Kotlin properly;
- gave a tech talk on hexagonal architecture.
Responsibilities:
Design and implementation of a software architecture within multiple projects in the company. Driving specific domains within the projects (MasterCard transactions integration, SalesForce integration), as well as some projects themselves. Communication with the stakeholders to build up requirements and deliver what's expected from the team. Code review and mentoring of other engineers in the team.
Achievements:
- delivered a service to automate transaction disputes in Italy and Austria, while driving the topics of MasterCard transactions integration (one of the highest loads in the company) and SalesForce integration;
- delivered an MVP of a service to automate claims, while acting as a tech lead for the team;
- dramatically improved code quality within the team by introducing functional testing and Data-Driven Testing (code coverage has increased to 96%, amount of failing deployments reduced to zero);
- decreased tests writing effort by introducing a shared library that got adopted by multiple teams;
- improved software engineering world-wide by contributing to opensource projects such as Spring Framework, MockK, IntelliJ IDEA, lombok, as well as publishing some opensource libraries of my own;
- improved software engineering company-wide by contributing to other projects within the compan
Responsibilities:
Development of a high load service used to store errors' description text and provide it to consumers via the REST API. The point is to allow our consumers to change errors' description text without rebuilding their own apps. It's kind of like a CMS.
Achievements:
- Migrated the project's build system from Maven to Gradle.
- Developed a couple of Gradle plugins.
- Contributions to IntelliJ IDEA (improved Gradle support), Lombok.
- Developed a Spring Framework extension to provide more flexible dependency resolution. Gave a couple of public talks about it.
- Gave a public talk to the university students on how we implemented Agile/SCRUM in our team.
Responsibilities:
Development of a high load service used to store configuration parameters of other services (ZooKeeper-like service). This includes writing the new code and development of unit-, integration- and functional tests for it. Participation in the design processes of ER-models and architecture, code review.
Achievements:
- Participated in the development of the high load service which is one of the core services of the SberBank's banking platform and is successfully running in a production environment;
- Rewrote one of the modules of the service in Kotlin in an attempt to finally go away from Java 7 and to have lambdas and other fancy stuff :)
Responsibilities:
Administration of VMware-based virtual infrastructure (vCenter 5.5 x 1 + ESXi 5.5 x >100 + Datastore x ~100 + VM x ~4000), automation.
Achievements:
- Ddeveloped a service to collect, store and aggregate metrics of VMware vCenter and Zabbix (approx. 30 million of records per hour);
- Developed an app to manage metrics collection service via a REST API;
- Developed a web service as an API to get data from HP SM in json format;
- Developed an app for the batch conversion of physical servers to virtual machines;
Responsibilities:
System administration of Linux servers, automation.
Achievements:
- PowerShell: developed a script to collect and store (into Oracle DB) real time metrics of VMware vSphere (approx. 20 million records per hour);
- PowerShell: developed a script to automate and parallelize deployment of VMs (Linux/Windows/Solaris) into VMware infrastructure with extended functionality of post-deployment customization of the guest OS. It allowed to reduce deployment time from multiple hours to multiple minutes.
- PowerShell: developed a script to automate creation of configuration items in HP Service Manager. There was no access to the API, so I had to emulate the work of UI via reverse engineering of POST requests. It was the first solution to automate CI creation in a whole Sberbank as far as I know.
Various other positions as a system administrator with focus on automation.
