
Code That Passes Its Tests for a Reason Nobody Chose
Code that works while nobody can explain why is a liability. A pass validator that stayed green for six seasons shows how to spot programming by coincidence.
Code That Makes Sense
Hi, I am
Software crafter, CTO, and technical coach
Currently available for hands-on engineering engagements, CTO advisory, technical coaching, and speaking.

I believe the scarcest resource in software engineering today is not speed - it's judgment.
AI writes code faster than any human ever could. But someone still has to decide whether that code is correct, maintainable, and worth shipping. That decision requires experience, context, and the kind of intuition you only build by doing the work.
I've spent 15+ years as a software engineer, engineering lead, and CTO. I've designed cloud architectures, refactored monoliths into microservices, and led teams through transformations at companies ranging from startups to Fortune 100. At IBM, I co-created the XP Farm framework and co-led its adoption - not just locally, but globally - impacting thousands of developers through coaching in software crafting, TDD, and clean architecture.
Now, as CTO of Craftosphere, partner at BriX Consulting, and part of the nWave team, I focus on helping engineering teams maintain quality in an AI-assisted world - through embedded coaching, tooling, and writing about the trade-offs behind everyday software design decisions. nWave is where the coaching philosophy meets the code: an AI-augmented framework that enforces TDD, peer review, and software craftsmanship at every step.
I publish Code That Makes Sense - a newsletter for senior engineers who use AI daily but refuse to stop thinking.
Outside of code: certified trek guide, motorbike rider, DIY builder, guitar player, and proud owner of four dogs.
CraftosphereRemote
I provide strategic technical leadership at Craftosphere, setting the company's vision and coaching methodology. As the primary technical coach, I guide engineering teams through transformation: embedded coaching, workshops, and consulting aimed at improving both delivery and engineering culture.
I build production code with AI coding agents daily. nWave and FlagZen are the public artifacts of that practice.
I publish Code That Makes Sense, a newsletter on engineering judgment for the AI era, and I'm developing an engineering quality index - an open framework for measuring engineering judgment across teams.
BriX ConsultingRemote
As a partner at BriX Consulting, I deliver Extreme Programming lectures and embedded coaching sessions focused on technical skills, team practices, and engineering morale. I also collaborate on strategic company direction and refine our coaching methodologies.
I co-authored the Software Craftsmanship Dojo - a hands-on workshop program - along with the Unicorns' Ecosystem and the BOKaRy (Body of Knowledge and Reference) framework. I'm also part of the nWave team - building an AI-augmented development framework that enforces TDD, peer review, and software craftsmanship practices throughout the development lifecycle.
IBM ISSC HungaryBudapest, Hungary
I worked with decision-makers across IBM to modernize development methodologies and tooling. I co-created the XP Farm framework and co-led its adoption - not just locally in Budapest, but globally across IBM - advocating for software craftsmanship, TDD, and clean architecture as organizational standards. I established feedback mechanisms for data-driven coaching decisions and shared insights with the global developer community.
IBM ISSC HungaryBudapest, Hungary
I led the end-to-end design and implementation of scalable, cloud-based software solutions. The core project was a monolith-to-microservices migration - I architected the target state, guided the team through refactoring, and ensured we maintained production stability throughout the transition.
Apertus Nonprofit Kft.Budapest, Hungary
I led cross-functional teams through the full software development lifecycle - architecture, implementation, testing, and deployment. I provided technical direction, mentored team members, conducted performance testing, and acted as the bridge between engineering and business stakeholders.
EPAM Academy, Pentaschool, Ruander, Masterfields, SzámalkBudapest, Hungary
I taught Java, Spring, and software engineering at multiple training academies. I focused on practical, hands-on instruction, adapting my approach to different learning styles and experience levels. The goal was always the same: give people the foundation to build real careers as developers.
Self-employedBudapest, Hungary
I worked as a freelance software engineer alongside my studies and first roles. I built and shipped an ERP system with Microsoft Office integrations for a law firm and several other companies, on Java EE across on-premise and Google App Engine deployments. With two collaborators, I co-built a Budapest-wide fare marketplace connecting consumers to taxi, airport, and heavy cargo providers, including Android and iOS clients. For another client, I built a bicycle trek designer for Lake Balaton, shipped as a website and an Android app.
Maintainer, top-3 contributor · 2025 - Present
Feature delivery in seven AI-assisted waves, with craftsmanship enforced at every step.
An open-source (MIT) framework that breaks feature delivery into seven waves from discovery to delivery, with specialized AI agents producing artifacts at each stage and human approval between them. It enforces TDD, peer review, and software craftsmanship throughout.
Author · 2026 - Present
Feature flags as code: flags are interfaces, variants are classes, dispatch is generated at compile time.
Feature flags as a code organization pattern rather than configuration: flags are interfaces, variants are classes, and an annotation processor generates the dispatch at compile time. Zero reflection, every behavior path testable and IDE-navigable. Released at 1.1.0, open source.
Builder · 2026 - Present
A five-node Raspberry Pi 5 private cloud on NixOS, Nomad, and Consul that tolerates two server failures.
A five-node Raspberry Pi 5 private cloud on NixOS with HashiCorp Nomad and Consul - every node runs both server and client roles, so the cluster tolerates two simultaneous server failures. Pull-based GitOps keeps each node reconciling itself against git, with an x86_64 build host cross-compiling what the Pis are too slow to build.
I have a deep understanding of software engineering principles and best practices including agile, SOLID, design patterns, hexagonal architecture, clean code, refactoring, and domain-driven design.
I empower individuals and teams by providing hands-on coaching and mentorship in areas such as software craftsmanship and modern development methodologies. I act as a catalyst for cultural change, striving for a culture of psychological safety and ownership to help teams achieve technical mastery and measurably improve their software delivery performance.
I am part of the nWave team - building an AI-augmented framework that enforces TDD, peer review, and software craftsmanship throughout the SDLC. I believe AI should make engineers better, not replace their judgment. I write about this in Code That Makes Sense.
I apply and train XP techniques, such as direct client communication, pair programming, TDD, BDD, CI/CD, team code ownership, and coding standards.
I structure systems around the business domain, not the database schema. I apply bounded contexts, ubiquitous language, and strategic design to keep complex codebases comprehensible. It's how I think about architecture before writing a single line.
I use automation and DevOps/DevSecOps practices to increase delivery throughput. I admire Infrastructure as Code technologies like Terraform and Pulumi.
My home turf. 15+ years building on the Java ecosystem, 10+ of them with Spring Boot and Spring Cloud. I prefer Gradle, but used Maven for years too. For years, I refused to switch from Java EE to Spring. It's one of my biggest regrets.
I design distributed systems with microservices architecture on GCP and IBM Cloud in production, and I'm hands-on with AWS through personal projects and Terraform. I use Docker, Kubernetes, and Nomad for flexibility and portability. Infrastructure as Code over ClickOps, every time.
I design systems that survive contact with reality. Microservices, event-driven patterns, scalable backends. I have led a monolith-to-microservices migration at IBM with a measured 99.99% uptime, raising archival throughput from roughly 2 TB to 11 TB per month. I prefer hexagonal architecture for new builds.

Code That Passes Its Tests for a Reason Nobody Chose
Code that works while nobody can explain why is a liability. A pass validator that stayed green for six seasons shows how to spot programming by coincidence.
Code That Makes Sense
Why "We Tried TDD and It Was Too Slow" Is Rarely About TDD
XP practices reinforce each other: "TDD was too slow" usually means TDD without refactoring. Minimum viable XP is CI, TDD, and refactoring.
Code That Makes Sense
Two Weeks of Workarounds, Thirty Minutes of Root Cause
AI coding tools are fast at answers and blind to questions: two weeks of Claude Code workarounds, one human question, and a thirty-minute root cause.
Code That Makes Sense
We Can't Refactor What We Don't Understand
Legacy code is code without understanding. Three cheap mapping techniques change that: dependency maps, characterization tests, and strangler fig seams.
Code That Makes Sense
One Step Per Concern, and a Strangler Fig to Move the Callers
A case study about a real registration method that grew to 19 parameters and how we made it maintainable using the Pipes and Filters and Strangler Fig patterns.
Code That Makes Sense
Testability Is a Property of the Design, Not the Layer
Frontend testability is a property of the design, not the framework. Pull the business rule out of the component and 'hard to test' stops being true.
Code That Makes Sense
Coverage Counts Execution, Not Verification
Coverage counts the lines that ran, not the lines verified. A method can reach 100% with its rules unverified. Mutation testing measures the gap.
Code That Makes Sense
How To Effectively Do It as a Habit
Most refactoring never needed a sprint or a backlog item. It fits inside the feature branch we already have open, as long as the commits stay separate.
Code That Makes Sense
They're Not Against Quality, They're Optimizing Something Else
Your team lead isn't against quality. His "no" to refactoring is due to delivery pressure and risk, not indifference, and here's how to argue in his terms.
Code That Makes Sense
Measure What Shipping Without Design Actually Costs
"Just ship it" isn't wrong, it's unpriced. The post is about what shipping without design actually costs, in three numbers a manager already tracks.
Code That Makes Sense
Intentional Debt Is a Tool, Accidental Debt Is the Problem
Tech debt is two opposite things sharing one name: an intentional shortcut we chose, and an accidental mess nobody intended.
Code That Makes Sense
A Service Is a Layer, Not a Boundary
A service class isn't big because the domain is hard, but because the behavior never went home. A domain name holds the line that the Service suffix never could.
Code That Makes Sense
A Flag Is A Variant, Not A Config
A feature flag that branches on a string is a type code in disguise. Replace it with polymorphic dispatch, and the generated wiring makes a flag safe to delete.
Code That Makes Sense
How an Operation Gets an Identity and a History
A transfer between two accounts fits in neither. The DDD move: promote the verb to an aggregate, then let event sourcing calculate the balances.
Code That Makes Sense
Composing Behavior Without Anemia
Decorator stacks optional layers, Chain of Responsibility orders guards that short-circuit. Two more ways to slim a heavy aggregate without going anemic.
Code That Makes Sense
Splitting Behavior Without Anemia
Aggregates get heavy when you keep stuffing rules in. Specification, Policy, State, and Strategy move behavior out without sliding into the anemic-domain trap.
Code That Makes Sense
Application Services Hold No Rules
Domain services decide, application services orchestrate: one rule splits any XService into a pure policy and a rule-free use case.
Code That Makes Sense
Where Should Business Rules Live?
Hexagonal architecture doesn't guarantee a good domain. The anemic-model trap: fields inside, rules outside, and the encapsulation promise quietly broken.
Code That Makes Sense
Why Should We Focus on the Domain First?
Why architecture discussions keep collapsing into schema arguments, and the order of operations that puts domain discovery before the database.
Code That Makes Sense
Stories, acceptance criteria, BDD - layers of precision, not rivals
User stories, acceptance criteria, and BDD scenarios are layers of precision, not rivals. Walk each story down the ladder before the code catches up.
Code That Makes Sense
And Why It's Our Job to Learn Theirs
Customers won't learn your jargon and they shouldn't have to. The translation burden sits with developers - here are the tools that actually close the gap.
Code That Makes Sense
Balancing Code Health and Feature Delivery
Balancing Code Health and Feature Delivery
Code That Makes Sense
When the Type-Code Affects Behavior And It Should Change at Runtime
When the Type-Code Affects Behavior And It Should Change at Runtime
Code That Makes Sense
When the Type-Code Affects Behavior
We've previously dived into the complexities and maintenance challenges of switch-case and saw a refactoring technique for simple scenarios. Today, we'll raise the bar a bit and focus on situations when our type code affects behavior. We'll use pets to demonstrate the concepts.
Code That Makes Sense
When the Type-Code Doesn't Affect Behavior
In the previous part, we had an overview of why switch-case could be hard to maintain. This part will focus on the simplest scenario: when type-code only affects data, not behavior. We'll do this by modeling a pizzeria.
Code That Makes Sense
Why I Strive for Avoiding Its Usage
In a nutshell: switch-case makes code harder to maintain. We’ll understand the reasons to eliminate it and see when its usage is justified.
Code That Makes Sense

Learn that refactoring is a natural and essential part of a software's evolution
Baeldung CS
A quick and practical introduction to programming to an interface.
Baeldung CS
Learn about object-oriented and functional programming and discover that they are not mutually exclusive.
Baeldung CS

Learn the advantages and disadvantages of the configuring a mock object the when().thenXxx() or the doXxx().when() way.
Baeldung
Explore the core concepts behind the object-oriented programming.
Baeldung CS
Learn how to map a single Java entity to multiple database tables using JPA.
Baeldung
Explore how to configure your Java applications using command-line arguments.
Baeldung
Explore the properties and representation of composition, aggregation, and association in Java.
Baeldung
Learn how Epsilon works, and explore the common use cases.
Baeldung
Explore how Z Garbage Collector manages to keep low pause times on even multi-terabyte heaps.
Baeldung
Learn about the peek() method and explore the lifecycle of a stream.
Baeldung
Explore multiple ways of handling dynamic JSON objects with Jackson.
Baeldung
Explore several ways to remove leading and trailing characters from a String.
Baeldung
Learn how to model a many-to-many relationship in Java using JPA
Baeldung

A quick tutorial to using JPA Criteria Queries using Spring Data JPA.
Baeldung
In this tutorial, we'll see multiple solutions to efficiently removing all occurrences of a value, describing the pros and cons.
Baeldung
Learn how to manipulate the HTTP response using the ResponseEntity class.
Baeldung
Have a look at the @ResponseStatus annotation and how to use it to set the response status code.
Baeldung


Explore the main annotations you can use to handle HTTP requests and responses in Spring MVC.
Baeldung

Learn about the most important annotations we need to handle persistence using the Spring Data project
Baeldung
Take a look at how to work with boolean values in Thymeleaf.
Baeldung
Outstanding Technical Achievement Award
Fivefold IBM CIO Hungary Champion
OITM Competition 2018 - Overall 2nd Prize
OITM Competition 2018 - Java (Spring, Hibernate) Category 1st Prize
OITM Competition 2018 - Java EE Category 1st Prize
OITM Competition 2018 - Java Innovation Category 2nd Prize
WTW (Win The Web) 24h Programming Competition 1st Place