
A handbook for enterprise system developers guiding them through the intracacies and lessons learned in enterprise application development. Patterns are supported by code examples, in both Java and C#.
For design, Evans’ Domain-Driven Design does a good job of representing classic object-oriented design, and Fowler’s Patterns of Enterprise Application Architecture is good for expanding past business logic to larger systems.
For coding habits, “The Pragmatic Programmer” is a classic for a reason.
Supported tools:
- Codex: AGENTS.md
- Cursor: .cursor/rules/.mdc
- Claude Code: .claude/rules/.md
Books included:
1. A Philosophy of Software Design — John Ousterhout
2. Clean Architecture — Robert C. Martin
3. Clean Code — Robert C. Martin
4. Code Complete — Steve McConnell
5. Designing Data-Intensive Applications — Martin Kleppmann
6. Domain-Driven Design — Eric Evans
7. Domain-Driven Design Distilled — Vaughn Vernon
8. Implementing Domain-Driven Design — Vaughn Vernon
9. Patterns of Enterprise Application Architecture — Martin Fowler
10. Refactoring — Martin Fowler
11. Release It! — Michael T. Nygard
12. The Pragmatic Programmer — Andrew Hunt and David Thomas
13. Working Effectively with Legacy Code — Michael Feathers
The idea is not to summarize or replace the books, but to turn their engineering principles into practical instructions that can guide agent behavior during implementation, refactoring, review, and testing.
Repo: https://github.com/ciembor/agent-rules-books
Have fun, Maciej Ciemborowicz
- Patterns of Enterprise Application Architecture (Martin Fowler) - early-mid 2000s and it stays valuable to this day. It's nice to have a formalized view of concepts you know in practice.
- Clean Architecture (Robert Martin) - Great application architecture concepts being formalized
- Designing Data Intensive Applications (Martin Kleppmann) - Fantastic perspective on your application's data. This is probably the most recommended book I've seen on Hacker News.
- SQL Performance Explained (Markus Winand) - Just a killer, concise book to make you truly understand basic DB performance, specifically with indexes. I've met so many developers (myself included before this book) who thought any index will work and then they'd just wing it. Your RDBMS has tools for finding the best optimizations in your queries and you should use them. Your indexes are also more picky than you may think, but they're also incredibly fast if you place them correctly. It's a lot easier to see once you understand.
I wouldn't worry about this too much. As long as what you're doing seems to vaguely match whatever information about best practices you can find online, you're probably good. As long as you're not inventing your own security tech, using floating point values for financial data or reusing feature flags in a high frequency trading scenario, any bad decisions made along the way probably won't be catastrophic and are more likely to be learning experiences.
More eyes on code is a good thing, but can go too far where a person is cargo culting their beliefs and subjective experience as objective things, leading you to learn the wrong stuff, or at least to a degree where you have an irrational attachment to some practices (e.g. some people always lean towards EAV in DB design, even though that practice has a time and place, same for microservices vs monoliths vs modular monoliths etc.).
> ...and might be missing out on a lot of learning.
This is probably what you should focus on. See if you can attend industry events, watch some talks done by people who've been in the industry for a long time, there's actually lots of nice stuff on YouTube that's not just advertisement for the latest technology or practice. Here's some people whose content I enjoy:
Dylan Beattie
Venkat Subramaniam
Kevlin Henney
Maybe look at some of the better received books. Here's a starting point: A Philosophy of Software Design
Algorithms
Building Secure & Reliable Systems
Clean Architecture A Craftsman Guide to Software Structure and Design
Clean Code
Code Complete
Design Patterns Elements of Reusable Object-Oriented Software
Next-Level Database Techniques For Developers
Patterns of Enterprise Application Architecture
Peopleware
SQL Antipatterns
The Clean Coder
The Mythical Man Month
The Pragmatic Programmer
Working Effectively With Legacy Code
Again, take none of that as gospel, but maybe give them a passing glance.Also, props to whoever mentioned learning by doing in a low stakes environment (side projects) and online communities!
- Just Enough Software Architecture
- Domain Driven Design - Tackling Complexity in the Heart of Software (Eric Evans) I recommend this one more than Vaughn Vernon's DDD.
- Clean Architecture (Robert Martin)
- Fundamentals of Software Architecture: an Engineering Approach
- Design Patterns (Gamma et al)
- Site Reliability Engineering: How Google Runs Production Systems
- Refactoring: Improving the Design of Existing Code (2nd Edition) (Addison-Wesley Signature Series (Fowler))
- Refactoring to Patterns
- Patterns of Enterprise Application Architecture
-Head First Design Patterns Building Extensible and Maintainable Object Oriented Software and I
- https://www.youtube.com/watch?v=odxOPxYJdjg
- "Architecture Modernization: Socio-technical alignment of software, strategy, and structure"
- Software Architecture in Practice
- Documenting Software Architectures: Views and Beyond
- Head first: Software Architecture
Another book recommendation is Head First Design Patterns - the one I read used Java in the examples but I learned better with the style of that book than a textbook style. There are probably a lot of design patterns books out there including the original by the "Gang of Four".
The most important thing after reading about these patterns is learning when to use one and to do that you just need to go use them. Some caution though, I found myself putting patterns into use more frequently than was probably necessary simply because it was a new thing.