Skip to content

I'll help youscale your Rails apprefactor legacy Rails appsaudit Rails codebaseslead your Rails teambuild products with Railsscale your Rails app, refactor legacy Rails apps, audit Rails codebases, lead your Rails team, build products with Rails

I help CTOs and founders build and scale profitable products. For over a decade, I've shipped greenfield apps and refactored legacy Rails codebases, building the judgment that no AI prompt can replace.

years of commercial Rails experience
12+years of commercial Rails experience
years leading as Tech Lead
4years leading as Tech Lead
Computer Science
M.ScComputer Science
Marcin Olszewski, Senior Ruby on Rails Engineer & Tech Lead

Working daily with Ruby on Rails, PostgreSQL, Redis, Sidekiq, RSpec, Hotwire, Turbo, Stimulus, Astro, Tailwind CSS, Sass, Docker, Heroku, Fly.io, Cloudflare, Rollbar, Papertrail, Scout APM, New Relic, Git, Postman, Claude

About

Who you'd be working with

Hi, my name is Marcin. I started writing Rails professionally in 2014 and have been at it ever since. I've worked mostly inside applications that businesses run on: years of history, many authors and no room for downtime. I've upgraded, refactored and secured them, while adding whatever the business needed next.

I've also taken a product from a blank repository to launch, so I know both ends of the story. I work as a Tech Lead: I set the technical direction, lead the team and still write code myself. And I care just as much about building a team people enjoy working in.

A lot of my work happens away from the keyboard, with product owners and marketing teams. I've learned to look at a feature the way they do: will it bring in traffic, lift conversion or open a new sales channel? I explain the technical side in terms of cost and risk, and I say so when something isn't worth building at all.

  • Architecture & system design

    The costliest mistakes happen before the first commit. I start from the requirements and decide early what runs in a queue, what gets cached and what's better handed off outside the Rails app.

  • Legacy modernization

    Every app ages. Quick fixes, team turnover and shifting requirements pile up until nobody wants to open the codebase. I bring it back step by step, without a rewrite, until it runs better and is a pleasure to work on again.

  • Performance & scaling

    Fixing N+1 is the easy part. The real problems hide in query plans, missing indexes and memory usage, and I've spent more hours in logs and APM than I can count tracking them down.

  • Payments & integrations

    Payment providers, couriers and accounting systems don't always behave the way their docs promise. I build integrations that handle it: safe retries, no double charges and a clear trail when something goes wrong.

  • Team leadership

    I'd rather lead a close-knit team than a room full of rock stars, so I hire for culture fit. I build a team where asking a question never feels risky, and some of the engineers I've mentored are tech leads today.

  • AI-native development

    AI makes a team dramatically faster, and it makes mistakes just as fast. I use Claude Code every day, but agents and engineers follow the same rules: tests, conventions and review before anything reaches main.

The Main Building of Warsaw University of Technology

Education

I built my foundations at Warsaw University of Technology, earning an M.Sc. in Computer Science at the Faculty of Electronics and Information Technology. It's widely regarded as Poland's top-ranked technical university, and year after year its computer science program is named the best in the country.

Selected projects

Real products, and what I built on each of them

Over my career I've worked on more than a dozen projects, but three of them hold a special place in my memory. These are the ones where my work made the biggest difference, and the ones that shaped me as a developer. Each came with its own challenges, but they share one thing: working on them was a genuinely important part of my life.

E-commerce at scale

Years of upgrades and new revenue on a live travel platform

Japan Rail Passes sold worldwide, kept modern while it kept selling.

JRPass has been the global go-to platform for Japanese rail passes since 2009. I joined initially as an engineer to deliver a single critical feature, and through deep ownership I progressed into a Tech Lead role expanding far beyond standard development. My mission was to keep this core revenue engine modern, secure, and commercially flexible. All without a rewrite, a feature freeze, or taking the shop offline.

What I worked on

  • Incrementally upgraded Ruby and Rails versions and modernized the test suite to ensure long-term stability.
  • Transitioned the platform from separate mobile and desktop views to full responsive design (RWD) and refactored an order model originally built for a single product to support regional passes, eTickets, and partner distribution.
  • Replaced legacy admin JavaScript with Turbo and Stimulus, choosing pragmatic, maintainable tech over heavy frontend frameworks.
  • Integrated two major payment gateways including Adyen with full 3D Secure, implemented Apple Pay, and introduced country-specific installment options.
  • Engineered a B2B affiliate program and managed complex third-party integrations with couriers, accounting systems, and business partners.
  • Delivered hundreds of tasks, from quick bug fixes to epic-sized features like a marketing-friendly internal CMS.
  • Led an SEO and performance overhaul: better Core Web Vitals, smaller CSS and JS bundles, JSON-LD markup and A/B tests.
  • Kept the business running by watching live exceptions, and built a rack-attack security layer that throttles aggressive scrapers and blocks brute-force and probing attempts.
  • Led, built, and mentored the engineering team, charting technical direction while maintaining a collaborative and enjoyable culture.
  • Ruby on Rails
  • Adyen / 3D Secure
  • Apple Pay
  • Hotwire / Turbo
  • SEO & CWV
  • Tech leadership

Recommendation

Haroun KhanOwner, JRPass

As the owner of JRPass, a Rails e-commerce platform serving customers globally, I had the privilege of working with Marcin for a number of years. In that time, he was, without question, the technical backbone of the development team.

Marcin is the kind of engineer who can do it all, building new features, shaping architecture, modernising legacy code, integrating third-party services, and keeping the entire application healthy at the same time. What made him exceptional was not just the breadth of that work, but that he approached every part of it with the same sense of ownership. He didn't wait to be told what mattered. He saw what needed doing and did it.

What I remember most is that he was the person you could trust. When things got difficult, and with a platform of this scale and history, they sometimes did, but he worked through the uncertainty methodically and delivered. Through real pressure and complexity, year after year, he never stopped caring about doing the right thing for the product and the team.

Any team looking for an expert Rails engineer who combines genuine technical depth with long-term reliability, someone who will make your platform better not just this quarter but over the next few years, should talk to Marcin. I highly recommend him.

Product built from zero

A hotel search engine processing millions of records a day

A booking platform for Japanese accommodation, taken from a blank repository through public launch.

JapanDen is a booking platform for Japanese accommodation, with more than 4,500 properties across the country, from traditional ryokan to capsule hotels and major hubs including Tokyo, Kyoto, and Osaka. Owned the end-to-end product lifecycle from original concept to successful market release.

What I worked on

  • Built or helped build nearly every part of the product: the hotel search engine, the backoffice, the full purchase flow including payments, and the pipeline syncing time-sensitive data from partner services.
  • Designed and built the system that refreshes millions of availability and pricing records a day, ranking offers from cached data while still checking live, so customers always see current prices.
  • Built location search by name and by geolocation, importing and reshaping Japan's geographic data so it could be matched quickly against partner records.
  • Helped build the team that now owns the product and keeps modernizing it.
  • Ruby on Rails
  • PostgreSQL
  • Sidekiq
  • Redis
  • Partner APIs
  • Payments
  • Search & ranking

Where it started

One of Poland's biggest medical portals, moved off Typo3

Decades of medical journals and drug references, made easy to search and read online.

Podyplomie.pl is one of the biggest Polish websites for doctors, dentists and pharmacists, run by the publisher Medical Tribune Poland: medical journals, courses that count towards the training points doctors have to collect, clinical guidelines and drug references. I was on the team that moved it from Typo3 and years of custom PHP to Rails. That took months of work, done in stages, because the site had to stay up and the editors had to keep publishing the whole time.

What I worked on

  • Moved the site off Typo3 and custom PHP in stages, over many months. Old and new ran side by side the whole time, so readers never had to wait for a big switch-over.
  • Wrote the tools that moved the content itself. Years of articles, journal issues and drug entries had to come out of the old databases and into the new model.
  • Made decades of medical writing easy to get to: full-text search on Elasticsearch, with one search box covering articles, news and products in the shop.
  • Built the first online edition of Leki współczesnej terapii, a drug encyclopedia in print since 1957.
  • Built the subscriptions and permissions that decide who can read what, and single sign-on so one account works across all of the publisher's sites.
  • Built the admin panel editors use for articles and categories, and the pages that show their work to readers.
  • Built the tablet editions of the journals for subscribers, using Adobe Digital Publishing Suite.
  • Ruby on Rails
  • Legacy migration
  • Elasticsearch
  • SSO & permissions
  • Editorial tooling
  • Digital publishing

Recommendation

Marek ZielińskiDigital Director, Podyplomie.pl

Marcin is a devoted developer, focused on providing clean, well-organized code. He proved his talent to deliver working software, methodically, taking care of every aspect of the solution. Able to adapt to different technologies, constantly keeping an eye on new tools and methods.

Really good teammate, with a unique sense of humor. It is a pleasure to work with him.

Not only Rails

Rails is my stack and what I enjoy working in most. Over the years I've also written in most of the popular languages, especially JavaScript, which has been with me alongside Ruby the whole time. Ruby with Rails is great for web apps, but other jobs call for other tools, and I pick them on purpose when a project starts.

Browser extension

A query builder for the Scryfall search box

Fill in a form and it writes the search query for you. Open source, for Chrome and Firefox.

Scryfall is where most Magic: The Gathering players go to look up cards. Its search can do almost anything, as long as you know the query syntax, and most people never learn it. Yassir is a browser extension for Chrome and Firefox that adds a form to Scryfall's search box. You pick what you're looking for and it writes the query for you. If you'd rather type, you still can, and the form follows along. I built it on my own, from the first commit to the store listings, in TypeScript and Preact. Preact was a deliberate choice: it's a light, widely used alternative to React with almost the same syntax, the same components and hooks, which matters when the code ships inside someone else's page.

What I worked on

  • The form covers the filters players use most. A few fields make things easier than the syntax ever could. Sets are the best example. There are over a thousand of them, and on Scryfall you need each one's code. In Yassir you find them by name and pick as many as you like.
  • Tags were the other big one. Scryfall keeps thousands of them on a separate site, Scryfall Tagger, that a lot of players don't know exists. I picked the ones worth knowing and put them in a field you can search by name or by what the tag means.
  • The form stays out of Scryfall's way. It doesn't touch the page layout and opens only when you click into the search box. Getting that right on a site I don't control meant a shadow root for the UI, a workaround for scryfall.com's content security policy, and keeping the site's keyboard shortcuts quiet while you type. It runs only on scryfall.com and collects no data.
  • Whatever is in the search box is the source of truth. I wrote a parser for Scryfall's syntax, negation, brackets and OR included, so the form reads the query back and fills itself in, even after a reload. Anything the form has no field for turns into a pin you can remove with a click, so nothing you typed gets lost.
  • I wrote it with AI agents, and nothing they write goes in unchecked. Every commit runs strict TypeScript, Biome, knip and Vitest, and a Playwright smoke test checks it against the live site. Each significant change gets its own tests, so new work can't quietly break what already works.
  • It's out on the Chrome Web Store and Firefox Add-ons, and the code is on GitHub under the MIT license.
  • TypeScript
  • Preact / React hooks
  • Browser extension
  • Vite / WXT
  • Vitest
  • Playwright

More coming soon

Contact

Got a Rails app that needs to outgrow its technical debt?

I work with teams in an advisory capacity, as a code auditor, or as a Senior Tech Lead on board. The fastest route to a conversation is LinkedIn.

  • Architecture consulting

    Decisions that survive the next five years of growth.

  • Code & security audit

    A map of your technical debt, prioritized and costed.

  • Senior Tech Lead / interim

    Leading the team, hiring and mentoring.

Warsaw, Poland · remote, CET ±3h