A young codebase can look clean because it has not yet accumulated competing requirements. A mature one earns readability by making years of decisions visible without making every reader relive them.
Prefer boring boundaries
Stable modules describe what they own, what they return and what they refuse to know. The goal is not maximum abstraction; it is a small number of dependable places to look.
function publishArticle(article) {n validate(article);n const record = repository.save(article);n return events.articlePublished(record.id);n}
The code is not impressive. That is the point. Its sequence can be understood before the implementation details are opened.