I was hired as a Principal Engineer to introduce Java into ShipMonk's technology stack. ShipMonk is historically a (nicely written) modular monolith in PHP, which has grown to the size where it is necessary to start chopping it into smaller right-sized services (not to be confused with microservices), and on that occasion we decided to rewrite some of the legacy parts in Java.
I was tasked with hiring a team of Java Developers and building a system for synchronizing customer data with external systems (orders, stock, etc.). The basis of the application is built on Spring Boot, Hibernate, and PostgreSQL. Everything is dockerized and runs in k8s. The system's architecture was designed to be an event-driven integration engine with bits of event-sourcing principles. The emphasis was on our ability to quickly debug any issue (e.g., wrongly synced data) and introduce new integrations quickly and cheaply.
Due to my team's success, I was later promoted to Director of Engineering and given two additional teams, totaling about 30 engineers, 3 of which were my direct reports.
My whole ShipMonk affair was an eye-opening experience like few before. I've made the most significant advancements in my ability to hire, lead a team, and deliver incremental, measurable, valuable product improvements out of all my roles.
I've led the development of applications that help automate processes in the Health & Pharma industry. Our main topics were Market Access, Pharmaceutical Pricing, and we've worked on new ones.
Most of my time was spent developing the Price Monitor, which we wrote as an API in Java (Spring Boot, Hibernate, PostgreSQL, ElasticSearch, ...) used in the frontend JavaScript app. A big part of the system was a data pipeline, which we've used to process 250+ data sources. The entire system runs on AWS, and the backend sits in Docker.
I've laid out the infrastructure for the first products, which was then improved and used by all the other projects. Later, we switched to IaaC to manage it. I've also managed most of our servers, including self-hosted Gitlab and Gitlab CI Runners.
I've designed big part of the data pipeline and worked on huge chunks of the system, including data extraction, transformation (cleanup, normalization, etc.), deduplication, and historicization, and then loading the data from the data warehouse to the analytical applications.
I've also done most of the hiring of other developers, team management, and product specification breakdowns into technical tasks.
I was improving my ability to write well-designed, clean, and perfectly tested applications with Symfony under the advisement of Vašek Purchart.
In Rohlik (a Czech word for roll - yes, the pastry), I had a role similar to Damejidlo. Still, I was mostly doing damage (and technical debt) control and minimalization because of the development speed, more than any kind of proper design planning.
I've greatly enjoyed the finalization of HTTPS configuration and deployment of ElasticSearch for the product database, which helped us immensely with performance. I've also rewritten our custom geocoding to an open-source library. And as the last task, me and Jiří Pudil wrote a custom client for the ČSOB card payment gateway.
My role was similar to that of a technical lead or a system architect. The team consulted with me on most technical challenges, but most of my work was programming in PHP.
From the beginning, I lead the rewrite of the application to Doctrine 2 ORM. The rewrite was continuous because we could not afford to stop the development or throw away the existing application. As the first thing, I made sure we started using the Composer and Nette/Tester to start writing tests.
I've also integrated and deployed Redis for sessions and caching, HTTPS for the whole website, RabbitMQ for background processing, Monolog and Papertrail for logs handling, and other technologies.
For over a year, I was unemployed by my own decision and lived on savings and small projects so that I could program for fun and improve. And I believe it paid off :)
My first "real job" as a full-time programmer and my first experience with working in a team. I started here right after high school while still learning the basics of Nette Framework. Our team worked on insurance contract management for the Triglav insurance company. Currently, the company no longer exists.
I discovered "the web" somewhere around 2004, and I immediately knew that it was something I'd be making a living on.
At first, I only played with HTML and CSS, but later, I discovered JavaScript.
The first web-related book I bought was about CSS by Petr Staníček to learn HTML coding and styling properly.
In high school, I discovered PHP and started learning programming.
This was around when webhostings were only beginning to deploy PHP 5.2 and the scripts had to be written with the .php5
extension - fun times.
In high school, I decided to create the best CMS and get rich off of it, and I've made several websites on the first version. However, I quickly realized how much I didn't yet know, which resulted in the CMS eventually dying because of my inability to finish it without perfecting it while rewriting it about ten times from scratch over a few years.
Subsequently, I discovered Nette Framework, which triggered another round of rewriting that was never finished. Thankfully, by then, I'd gained some common sense and split the project into several smaller useful parts, which can be used in various applications.
I've actively used Nette Framework for about ten years - answering questions on the forum, writing a bit of documentation, and contributing pull requests here and there.
My GitHub profile contains various projects I've worked on or contributed to.
Highest achieved education: University Bachelor