Tomasz Nurkiewicz

... Warsaw, Poland
nurkiewicz (at GMail) · nurkiewicz.com · github.com/nurkiewicz
...
Born ..., Poland

Java Champion (since 2018)

15 years professionally in the Java ecosystem. I enjoy back-end, scalability, distributed systems and data visualization. I'm passionate about alternative JVM languages, and languages in general. My motto: code not tested automatically is not a feature but just a rumour.

Author of Reactive Programming with RxJava (O'Reilly)
Conference speaker (100+ talks, including JavaOne, QCon, Devoxx; multiple best speaker awards)
Trainer (1000+ people trained, mostly reactive programming)
Podcaster: Around IT in 256 seconds
Writing articles around Java since 2009
I used to be very active on StackOverflow (top 0.02%)

Work experience

Senior Engineering Tech Lead @ Monday.com
Aug. 2023 – present
Chief Technology Officer @ DevSkiller
Apr. 2020 – Jul. 2023 (3 yrs 3 mos)
  • Managed a team of 10 engineers, overseeing technology stack. Mostly Spring Boot with Java and Python deployed on Kubernetes on top of Google Cloud Platform. We embraced consumer-driven contracts to enable testing in distributed systems
  • Designed resilient architecture to avoid single point of failure. Primarily used RabbitMQ to avoid temporal coupling
  • Designed and developed plugin platform on top of Google Cloud Run. Plugins are isolated via serverless functions and iframe sandboxes. Despite hosting customer's code, the overall cost was minimal
  • Delivered in-browser IDE with advanced code completion and debugging. Low latency is essential, so IDE is dynamically deployed in the closest region. Also, IDE images are prebuilt to avoid initial indexing costs. Almost one hundred containers started per day.
  • Optimized cloud costs (fine-tuning VMs, auto-scaling), migrated to different vendor to cut VM spending by 70%.
Principal / Senior Software Engineer @ Allegro
Nov 2016 – Mar 2020 (3 yrs 5 mos)
  • Worked in a large microservice ecosystem (a few thousand instances of about 800 apps), mostly communicating RESTfuly or over message broker. We put strong emphasis on schema management and data governance
  • Worked on a pricing module handling up to 200 transactions per second over multiple services
  • Taking advantage of Kafka to support fault-tolerance
  • Implemented horizontally-scalable and fault-tolerant job scheduler. Design goals: auto-scaling through dynamic shard allocation. Millions of scheduled tasks
  • Worked in multiple teams, including pricing, ads, big data and platform using Kotlin, Scala and Python
Senior Software Developer @ 4finance
Oct 2014 – Oct 2016 (2 yrs 1 mo)
  • Developed on top of monolithic backoffice application supporting almost 20 countries, each with different legislation and business rules. Mostly integrating with various payment providers around the world.
  • Built and delivered new line of credit product to replace legacy system, improving maintainability and visibility of the platform
  • I got "Easiest Person to Work With" award, voted by other employees from multiple offices
Senior Software Developer @ Citi
Sep 2013 – Sep 2014 (1 yr 1 mo)
  • Delivered backoffice software running financial computations. Worked with corporate bonds and Credit Default Swaps (CDS). System was based on Clojure, Akka and private cloud.
  • I designed a caching layer on top of Hazelcast to speed up startup times of stateless nodes. This improved scaling performance and reduced network traffic.
Senior Java Developer @ Kezzler
Oslo, Norway
Dec 2010 – Aug 2013 (2 yrs 9 mos)
  • Full-stack development (Backbone.js, SOAP, Spring) of large-scale product verification system. Using cryptographic hashes to track and trace commodity products
  • Built custom TCP/IP server in Netty for fast data retrieval
Senior Java Developer / Java EE Developer @ JAVEO
Sep 2009 – Nov 2010 / Oct 2007 – Aug 2009 (3 yrs 2 mos)
  • Worked on large-scale enterprise applications for telecoms and insurance companies. This includes large mobile number portability system that communicated with all other telecoms in Poland.
  • Apache Struts 1/2, Apache Wicket, Apache CXF
Intern in R&D Center @ Comarch
Jul 2007 – Sep 2007 (3 mos)
  • Building data visualization module for desktop reporting software written in Java. Strong emphasis on immutable data structures

Skills

Java
Spring Boot · ORM · REST · TDD
Reactive programming
Reactor · Non-blocking · Resiliency
JVM
Kotlin · Scala · Clojure · bytecode
Distributed systems
Messaging (Kafka, RabbitMQ, JMS) · Observability · Troubleshooting
Python
Flask · Scraping · Scripting
Machine learning
Basic algorithms · Pandas · Math
Infrastructure
Docker · Shell · GCP · CI/CD
Databases
SQL · MongoDB · Redis · Cassandra
Frontend
JavaScript · TypeScript · CSS

Languages

Polish (native)
English

Education

Master of Science (M.Sc.), Comp. Sci. @ Warsaw University of Technology
2004 – 2009
  • Master’s Thesis: I wrote a compiler for educational programming language on top of JVM
  • Degree with honours

Certificates

Machine Learning @ Coursera
Jan 2016
Principles of Reactive Programming @ Coursera
Nov 2013
Functional Programming Principles in Scala @ Coursera
Nov 2012
Business Component Developer (SCBCD, CX-310-091) @ Sun Microsystems
Aug 2009
Web Component Developer (SCWCD, CX-310-083) @ Sun Microsystems
Jun 2009
Java Developer (SCJD CX-310-252A) @ Sun Microsystems
Nov 2008
Java Programmer (SCJP, CX-310-065) @Sun Microsystems
Aug 2008