Nothing Shared, Everything Gained book cover

From Six Months of Nothing to Shipping in Weeks

Make legacy PHP codebases changeable without rewrites. Practical patterns from 7 years consulting 100+ teams. Two perspectives, zero dogma. €0+.

A development team hadn't shipped a single feature in six months. Controllers with 2,000-line methods. Session arrays passed between incompatible structures. A codebase everyone feared to touch.

25 days later, they were shipping again.

This wasn't magic. It was patterns that work.

Peter Avatar

"Test what matters, when it matters"

Paula Avatar

"Test first, to design interfaces"

Not yet released, but to be published soon, probably mid April 2026.

Testimonials

Pragmatic and effective advice for all web development teams. The best book on modern software engineering that I've seen in our space.

The long missing manual for modern web development. This book is a must read for teams that want to build effectively.

The biggest influence on a team's performance I've experienced is high levels of cohesion around how the codebase is grown. A shared understanding of how all the pieces of the system fit together allows everyone to work together seamlessly. Regular occurring chances are executed fast, reviews are easy and technical discussions can focus on important and complicated issues.

In this book, Kore has shaped an excellent collection of the best approaches to web development into a easily digestible format that focuses on practical application. It's a delight that this exists for teams to extract patterns from and shape their applications around it.

Volker Dusch
Head of Engineering Tideways, Release Manager PHP 8.5

This book presents a pragmatic and powerful approach to web application development - one I first encountered 15 years ago while working with Kore. In our consulting projects at the time, I saw firsthand how accessible it was to developers of all skill levels compared to other architectural approaches.

Over the years, we explored many variations of this approach across different clients, and later within our own companies, Frontastic and Tideways. That flexibility is one of its greatest strengths - and it comes through clearly in this book, which explores two distinct mindsets and shows how they can be unified using the same core building blocks.

A highly recommended read for anyone building web applications.

Benjamin Eberlei
Founder of Tideways, Doctrine core member

I would like to start by congratulating you on choosing this book. You don't know it yet, but this book is excellent. I've been a professional software developer for nearly thirty years and (humbly) even I learned a few new tricks. […]

Jan Lehnardt
Apache CouchDB PMC Chair, CEO Neighbourhoodie

Kore introduced me to many of the architectural ideas I rely on daily, and our discussions over the years have shaped how I think about building maintainable software. In an era where AI generates code faster than ever, the need for a shared architectural vocabulary to rein in that growing entropy has never been greater. This book provides exactly that: a practical, honest framework that any team can adopt incrementally.

Nils Adermann
Co-creator of Composer, CEO Private Packagist

Most architecture books take a particular stance. This one introduces you to two perspectives, Paula's and Peter's, and helps you identify with one or the other. Paula designs libraries and requires rigorous interfaces, whereas Peter designs products and prioritises pragmatic speed. It's the first book I've seen that embraces the idea that "it depends" rather than hiding behind it.

Sebastian Bergmann
Creator of PHPUnit, Co-founder thePHP.cc

More to come…

Your Name, Company/Role

Forewords

"I've been a professional software developer for nearly thirty years and even I learned a few new tricks. [...] A simple, yet solid architectural foundation for the working practitioner."

Jan Lehnardt
Apache CouchDB PMC Chair, CEO Neighbourhoodie

Kore introduced me to many of the architectural ideas I rely on daily, and our discussions over the years have shaped how I think about building maintainable software. […] This book provides exactly that: a practical, honest framework that any team can adopt incrementally.

Nils Adermann
Co-creator of Composer, CEO Private Packagist

Foreword by Jan Lehnardt

I would like to start by congratulating you on choosing this book. You don't know it yet, but this book is excellent. I've been a professional software developer for nearly thirty years and (humbly) even I learned a few new tricks.

Programming is a complex topic and developers tend to be very opinionated. As a result there are just about as many opinions about how to program correctly than there are programmers. Consequently, there are countless methodologies, acronyms, frameworks and philosophies that all promise the same thing: if you just follow them to the letter, all your problems are solved and all the complexity of software development will be neatly contained.

These things have two things in common: One, they all come with their own nomenclatures and ontologies. They introduce existing concepts with their own names, add relationships between these concepts and once they have got you started, they will continue to exclusively speak in their own self-referential jargon. — Two, they usually can't keep their promise.

I personally have a hard time getting into these because of all the easily confusing language. Why confusing language? Well programming is complex, so any methodology dealing with programming ought to be complex as well, and it needs to be complete so you can embrace it fully, otherwise you won't reap all its benefits.

Building reliable software is hard. No one methodology can prepare you for the realities of shipping working programs to customers who will do unspeakable things to them all while building new features and the next big version and fixing existing bugs and onboarding new team members and losing valuable ones to greener pastures.

This book does the very smart thing of not adding yet another methodology. It does not pretend to have all the answers. Instead, it is a distillation of over fifteen years of hard-won practical experience that you can read in a couple of hours. It gives names to four main concepts that you will have encountered in the past, maybe under different names and puts them into a compelling perspective. The result is not a new methodology but a simple, yet solid architectural foundation for the working practitioner.

This foundation gives you guidelines for building robust products while acknowledging that you will encounter situations (technical and organisational) that don't fit neatly into its narrative. At those points, the book outlines the trade-offs between various options and leaves the decision to you, allowing you to proceed with confidence because you are now equipped for the consequences.

I wouldn't go so far as to suggest a better title for this book would be "The Essence of Programming" because the author chooses but a slice of the wide world of programming, namely building high-performance, scalable, maintainable web apps that earn their development cost in no time and keep teams happy and moving forward. But that's a sizable chunk and this book managed to indeed capture its essence.

The book uses PHP as the example programming language and relies on typical PHP architecture patterns that might not be as prevalent in other ecosystems. But make no mistake, the things you learn translate easily into your working life, even if you work in other languages or in different areas altogether. I started my career in PHP, but have not used it professionally in a long time. While reading this, my brain constantly jumped into projects past and present with ideas of how they could be improved with what I just had learned. I honestly can't wait to get started.

So again, congratulations for choosing to read an excellent book that will teach you things that will improve your every-day programming life for the rest of your career. My only caveat is that I wish I had a book like this nearly thirty years ago.

Jan Lehnardt, Berlin, March 2026

Foreword by Nils Adermann

Jan's foreword congratulates you on choosing this book. I want to congratulate you on something else: choosing to care about architecture at all.

You might wonder whether a book on software architecture still matters in 2026. With AI generating ever more code at increasing speed, isn't the bottleneck elsewhere? I think the opposite is true. The entropy produced by ever-growing volumes of generated code urgently needs mechanisms to rein it in, to steer it into useful, maintainable products. Individual pieces of code may become more short-lived, but the architecture of the systems they compose is what determines whether a team can move fast or gets buried. Getting that architecture right enables significantly more efficient software development, whether the code is written by humans or by an AI agent, which is after all, still trained on the decisions humans made. A shared architectural vocabulary matters more, not less, when the rate of code production accelerates.

Kore introduced me to many of the architectural ideas I rely on daily, and our discussions over the years have shaped how I think about building maintainable software. His experiences consulting at Qafoo and later building Frontastic as CTO regularly informed my own thinking as I built Private Packagist, a B2B SaaS application serving up key infrastructure for thousands of development teams. That means I have seen the ideas in this book from the outside, as someone who absorbed them through conversation and applied them independently, and I can tell you they work.

Running Private Packagist, Composer and Packagist.org puts me in both of the worlds this book describes and illustrates with the complementary and sometimes opposing viewpoints of Paula and Peter. As a product, it is Peter's world: shipping features, responding to customer needs, and making pragmatic trade-offs is what pays the bills. But it also powers infrastructure that developers depend on for their daily work, which pulls toward Paula's rigor. The tension between those two perspectives is real, and it is one of the things Kore gets right. Rather than pretending one approach is universally correct, he gives you the tools to navigate the trade-off consciously.

What I appreciate most about the architecture described here is its honesty. Abstractions leak. Side effects cannot be eliminated. Legacy code encodes valuable knowledge. Kore does not promise that following five building blocks will solve all your problems. Instead, he gives you a shared mental model that makes problems visible and discussable. In my experience, that shared understanding is the single biggest factor in whether a team moves fast or gets stuck.

A topic I feel particularly strongly about is the book's stance on testing. Too many teams test for purity's sake rather than for actual value. Comprehensive test suites, rather than a few tests to check basic fit for purpose, for code that might be thrown away next sprint are not discipline, they are waste. And worse, they create a psychological attachment to code that should feel cheap to discard. Kore's advice to write testable code always but to invest in tests selectively is an honest and practically useful tip. The architecture he describes makes this possible: when your services are stateless and your dependencies are injected, adding tests later is straightforward. You are not gambling, you are deferring an investment until you know it is worth making.

I have seen the patterns in this book work. Experienced developers will recognize many of them, but the book assembles them into a coherent, teachable whole. When a new engineer joins your team, you can hand them this book and know that you will share a common vocabulary for controllers, services, gateways, and the boundaries between them. That common vocabulary is worth more than any individual pattern.

Read it. Discuss it with your team. Adopt what fits. Improve what doesn't. That is the whole point.

Nils Adermann, Berlin, March 2026

"Stateless code has nowhere to hide bugs."
100+ teams

Tested across 7 years of consulting work

Scaled in production

25x traffic spikes without drama

Built to last

8 years at Frontastic, multiple pivots, no rewrites

Years of Open Source development

First TDD library in the PHP ecosystem and contributed to many projects

What Makes This Different

Not academic theory

Patterns that saved actual teams from actual disasters

Not dogmatic

Two perspectives (library dev vs product dev) for every decision

Not greenfield

Most of this is about fixing legacy code that earns money

Not TDD evangelism

Write testable code. Test what matters when it matters.

Choose Your Bundle

Reader

  • The complete book
  • PDF format
  • The code (Symfony & Laravel)
Suggested
29
Slide to adjust

Architect

  • Everything in Shipper, plus:
  • Executable style guide for each approach
  • Review, refactoring & testing playbooks
Suggested
49
Slide to adjust

All bundles can be adjusted to €0. Pay what feels right for your situation. You'll also be able to pay up later after recgonizing the books value.

Two Perspectives, One Goal

Paula Avatar

Paula

"I build libraries. My code needs interfaces, extension points, comprehensive tests. When I ship, it must be right – I can't break other people's code."
peter Avatar

Peter

"I build products. I control all the code. I can change anything. I write testable code, but only test what matters. Speed over speculation."

Both are right. Context determines which approach fits.
This book shows you when to use each.

Paula's Context

  • Open source libraries
  • Frameworks
  • External dependencies
→ Full rigor

The Middle

  • Stable APIs
  • Core platform code
  • Team shared libraries
→ Selective approach

Peter's Context

  • Early stage products
  • Full code control
  • Fast pivots needed
→ Pragmatic speed

What You'll Learn

P

When Building Libraries

  • Extract interfaces early
  • Comprehensive type safety
  • TDD for discovering clean APIs
  • Documentation that lasts
P

When Building Products

  • Keep it simple until proven
  • Add tests when it matters
  • Refactor when you need to change
  • Trust your team to read code

Always

  • Minimize side effects
  • Push effects to edges
  • Make code testable (not tested)
  • Write changeable code

Bonus: Your Architecture, Automated

The patterns in this book are precise enough to automate. The Architect bundle includes style guides and playbooks that encode Paula's and Peter's principles, ready to plug into your review workflow or CI pipeline.

• Style guide per architectural approach
• Code review playbook
• Refactoring decision matrix
• Test strategy templates
P

"These help onboard new team members fast."

P

"I use them for quick reviews before commits."

Proven in Production

20+ years

Open Source in PHP

  • Co-created first TDD library in PHP (eZ Components)
  • Libraries still in production today
  • Many contributions to PHP QA tools & libs
100+ teams

Consulted over 7 years

  • Pattern: Controllers with 2,000-line methods
  • Fix: 25 days to shippable code
  • Result: Teams shipping again in weeks
8 years

At Frontastic (CTO → exit)

  • Multiple product pivots
  • Zero "we need to rewrite" moments
  • 25x traffic spike handled without drama
"PHP was never the bottleneck. It was always databases, external services, third-party APIs."

About Kore Nordmann

Kore Nordmann

Kore helped pioneer test-driven development in the PHP ecosystem, working alongside Sebastian Bergmann, Tobias Schlitt, and Derick Rethans on eZ Components; the test-driven PHP component library (now Zeta Components, where his Graph and Document libraries are still in use).

Spent 7 years consulting with 100+ development teams, turning unmaintainable legacy codebases into shipping machines, together with Tobias Schlitt and Manuel Pichler.

Served as CTO and co-founder at Frontastic, scaling from zero to €2M ARR and 70 employees before a successful exit to commercetools. Proving these patterns hold up through multiple pivots, 25x traffic spikes, and acquisition.

→ Full CV: kore-nordmann.de/curriculum-vitae

Frequently Asked Questions

Q: Can I really pay €0?
A: Yes. I'd rather you read it and apply the patterns than skip it because of price. If it saves your team even one day of debugging, consider paying then.
Q: What's the difference between your site and Leanpub/Amazon?
A: Direct purchase gets you code files and AI integration (Architect bundle). Platform versions are book-only. Choose what works for you.
Q: Do you update the book?
A: Yes. Errata fixes are free forever. Major revisions will be announced (and heavily discounted for existing owners).
Q: Why the different perspectives (Paula/Peter)?
A: Because "it depends" is the real answer to most architecture questions. The book shows you what it depends ON.