Senior Software Engineer at MongoDB, where I work on developer-facing tools and system. My current work includes Compass, mongosh, the official MongoDB plugins for VSCode and IntelliJ, and the official MCP Server. I focus on developer experience, language design, and organic architectures. My thinking is shaped as much by production constraints as by experimentation, and I care about the long-term ergonomics of code, teams, and the business. I see myself as a systems-thinker who can jump across abstraction levels, from how something is implemented to how it affects an organisation and the business.
Across more than a decade of experience, I’ve worked at the intersection of system design, tooling, and developer experience. I’ve led engineering teams, including organizations of 20+ people, and have worked in Staff Engineer roles where architecture, execution, and cross-team alignment were part of the day-to-day. I’m especially interested in how boundaries between systems, responsibilities, and mental models can be made explicit and safe to evolve.
I’ve worked in consulting across a wide range of contexts: from generalist product and platform teams at ThoughtWorks, to infrastructure-focused technical engagements at MongoDB. In the latter, I designed high-availability, cross-region architectures for large-scale systems, balancing latency, performance, cost, compliance, and operational risk. That work often meant combining hands-on implementation with architectural design and advisory roles, supporting teams during migration, integration, and redesign phases.
Over the years, I've worked on systems across domains such as:
- database infrastructure and tooling, like in MongoDB.
- robotics, using distributed actor-based coordination;
- financial systems, including invoicing, banking, and regulatory-sensitive services;
- fraud detection and NLP pipelines for large-scale classification and search;
- developer tooling platforms and marketplace infrastructure (e.g., classifieds).
Outside of production work, I’ve explored these ideas further through personal tools and language/runtime experiments:
Project Modeling Systems
- pottery: a simplified, convention-driven project model written in Java. It offers a YAML-based, predictable alternative to Maven, with an emphasis on clarity and developer experience.
- clpom: a minimal project model for Common Lisp. Designed as a simpler alternative to ASDF, focused on reducing boilerplate and improving toolability.
Language and Runtime Design
- Sonata: an experimental language built around runtime dispatch, contract-driven APIs, and domain-oriented composition. A work in progress aimed at exploring business-aligned language features.
- cl-sonkv: a small key-value store written in Common Lisp. Built for simplicity and transparency, it explores basic durability and data layout without external dependencies.
UI Architecture Experimentation
- morphonent: a functional UI library that models transitions and state via pure functions. Designed to prioritize testability, moldability, and composable UI interactions.
Delivery Forecasting Tooling
- jira-montecarlo: a CLI tool for probabilistic delivery forecasting. It uses Monte Carlo simulations and throughput data to replace point estimation with statistical modeling.
What I'm Looking For
I’m not currently looking for a new role, but I care deeply about the kinds of problems I want to work on next.
In the future, I’m interested in roles like Staff Engineer or Director of Engineering, where I can extend my current focus to include broader system direction, team topology, and long-term technical strategy. I’m also exploring how AI (particularly probabilistic models) can support system design conversations, architecture under uncertainty, and evolving requirements.
I'm based in Catalonia and prefer to work remotely, async-first, and with high trust. I speak English (professional level), Catalan, and Spanish (both native). I regularly overlap with timezones from UTC−1 to UTC+4, and I’ve successfully worked with distributed teams across Europe, the Americas, and Asia. I’m not open to relocation.
Mentoring & Talks
I occasionally mentor engineers: especially around system design, architecture and growth. I’ve also delivered internal architecture reviews, run workshops, and spoken at various conferences in Barcelona on topics like domain modeling, developer experience, and adaptive systems.
I’m open to more public speaking, guest sessions, or collaborative workshops: especially when the topics align with how organisations build software that changes.
Topics I care about include software boundaries, change-resilient architecture, developer tooling, and AI-assisted software design.
What I Write About
This page is my notebook. I write about the topics I care about, the systems I explore, and the experiments I run:
- architecture under changing environments
- team boundaries
- developer experience
- the trade-offs behind the systems we build
Lately, I’ve been especially focused on how language-level abstractions shape runtime and organizational boundaries and how we can design for change instead of resistance.
Selected Posts
Here are a few posts that reflect how I think and work:
- Software that changes, designing for maintainability
- Software delivery is about forecasting, not foreseeing
- Four Key Metrics and team performance
📬 You can reach me at me<AT>kmr<DOT>today.
🚫 Not open to vendor outreach or commercial prospecting.