Adam Warski



I’m a programmer. I started with Quick Basic and Turbo Pascal in the ’90s, then moved on to Scheme, OCaml, Smalltalk, Prolog, C, and Java during my studies and to more Java, Scala, and other JVM (and some non-JVM) languages during my professional career.

I completed a master’s degree in Computer Science at the University of Warsaw. After that, I worked at JBoss/RedHat, where I was introduced to remote work and open-source software. Both stayed with me: I’ve worked remotely ever since (our company is fully remote), and we’re heavy OSS users (and developers). Later, I did some Java consulting and development. In 2009, together with Tomek, Jan, and Paweł, we co-founded SoftwareMill. That’s where I work to this day, leading the research & development efforts. Since 2023, we’ve been part of the VirtusLab group.

I’ve created and maintained open-source projects for more than 16 years. I enjoy sharing what I learn through articles, videos, and conferences. Not only is it great to see your work being helpful to others, but the community is an invaluable gauge as to which ideas are worth pursuing and solve real problems and which don’t.

My main interests have always revolved around the back end, lately gravitating towards “developer experience”. I highly value the elegance and code verification capabilities granted by statically typed functional programming (FP). One of my goals is to expand the presence of FP in “every day” programming toolkits. This means balancing practicality, conciseness, maintainability, abstraction, and safety. It also involves understanding the fundamental benefits and trade-offs of approaches such as functional or reactive programming.

Another axis of my interest is distributed systems and architectures, especially when it comes to understanding the fundamental value and limitations that each specific approach brings. I aim to be technically honest when choosing and recommending a particular approach, not based on personal preferences or fashions but on sound technical arguments. That’s why several of my articles explore architectures of systems like Kafka, their scaling and replication characteristics, and various approaches to messaging.

Finally, since IT stands for “Information Technology”, I believe there’s underappreciated value in ensuring that information doesn’t disappear. On one hand, this means data replication; on the other, it means not deleting the data in the first place. That is the focus of the Envers project, as well as my research into event sourcing, which might be implemented successfully not only through large-scale architectures like CQRS but also in smaller, relational systems.

Any questions?

Can’t find the answer you’re looking for?