"How is DDD actually used in open source, and how does it relate to maintenance quality?" — famously discussed, yet almost no large-scale evidence existed. This study tackles it by mining 865 repositories 🔍
Title: Domain-Driven Design in Practice: A Mining Study of Maintenance and Evolution in Open-Source Repositories
URL:
❓ What does it study?
💡 Starting from 1,260 DDD-tagged GitHub repos filtered down to 865 (Java/C#/TypeScript), it analyzes eight tactical building blocks: Entities, Value Objects, Aggregates, Repositories, Domain Services, Domain Events, Application Services, Factories.
❓ How are they detected?
💡 A three-layer pipeline: DDD-specific annotations, naming conventions (e.g. OrderRepository), and package/directory structure — proceeding only when precision ≥0.75 is met.
❓ What's the biggest technical challenge?
💡 Bounded Context boundary violations. It operationalizes the "model-code gap" as cross-context dependencies, with violation rate = cross-BC deps / total inter-class deps. Boundary inference is human-validated requiring Cohen's kappa ≥0.80.
❓ How is rigor ensured?
💡 Kruskal-Wallis + Dunn post-hoc for cross-language tests, Spearman's rho for correlations, controlling age/size/language/type/team-size as confounders, with a pre-registered "degradation plan" that narrows scope rather than invalidating results if detection misses precision thresholds.
The methodological rigor stands out — a solid empirical foundation for discussing DDD maintenance and evolution.
#
DDD# #
SoftwareEngineering#
Show more
The gap between "what software actually does" and "what users believe it does" — this paper tackles that root problem with one unifying measure: explicit meaning 📐
Title: Making Software Meaningful
URL:
📐 Overview
The paper advocates adopting "explicit meaning" as a unifying measure to improve software usability, modularity, and accountability. It describes software behavior as a shared representation grounded in domain-specific language, not technical jargon.
❓ Challenges Solved
Software engineering has a fundamental gap.
・"What the software actually does" diverges from "what users believe it does"
・That divergence breeds poor usability, bugs, and distrust
The thesis: quality improves when developers and users hold a single, explicit understanding of what the software does and why.
💡 Methodology & Proposed Approach
It organizes domain-specific phenomena (individuals, actions, and resulting facts) into concepts as a shared vocabulary, shown through three applications.
・Usability design: align user and designer perspectives via shared meaning
・Modular code generation: use LLMs to map conceptual units of meaning to code units, boosting modularity and legibility
・Agent accountability: implement codes of conduct based on explicitly defined intended behaviors
🌍 Use Cases
It applies to improving modularity and legibility in LLM-assisted development, and to AI governance by making an autonomous agent's intended behavior explicit and accountable. It argues for putting "meaning" at the center as humans and AI build software together.
#
SoftwareEngineering# #
AIGovernance#
Show more
Most software engineers are facing an identity crisis bordering on depression.
As CTOs aggressively evangelize tokenmaxxing, a class divide ensues.
The lazy. The lazy push code. They don't write it. They don't manually test it. They don't even read it. They're on autopilot. See Jira ticket, prompt for task, submit code. Many of them are barely on their computer the whole day. A comment on the PR asking why they did this? The lazy ask AI. A Slack message? The lazy ask AI. Need to prepare for standup? The lazy ask AI. As long as it sounds enough like them and isn't detected. Some of the lazy are even overemployed, and work multiple jobs. The lazy smart ones get away with this, and even rewarded. After all, software engineering for the lazy is just a dance to convince your colleagues you're smart and hard working.
The craftsmen. The craftsmen are tired. Very tired. 15 PRs in queue. Slack blowing up. The entire burden of review falls on the craftsman. The burden of understanding. They try. They work their way through the code, thoughtfully commenting to improve what ships. The response? A lazy: "That's a clever idea! You're absolutely right." with an incorrect change. It's fine, the craftsman says. I can fix them. They write a doc urging his colleagues to be better. The next day? 20,000 line PR to review. Day after day, their workload grows. Bugs seep into production. No one seems to care. Another round of AI is thrown at it. Their animosity to their colleagues rises. Eventually, they give up. It's just not what it used to be. The craft they loved is dead. They eventually wake up, a lazy.
This isn't all companies. Many companies are genuinely more productive, adopt the right set of principles and practices around AI development and have highly talented teams that trust each other. It tends to happen in bigger companies that are 10+yrs old with a higher talent variance. But it happens. A lot.
Show more
AI-native software engineering teams operate very differently than traditional teams. The obvious difference is that AI-native teams use coding agents to build products much faster, but this leads to many other changes in how we operate. For example, some great engineers now play broader roles than just writing code. They are partly product managers, designers, sometimes marketers. Further, small teams who work in the same office, where they can communicate face-to-face, can move incredibly quickly.
Because we can now build fast, a greater fraction of time must be spent deciding what to build. To deal with this project-management bottleneck, some teams are pushing engineer:product manager (PM) some teams are pushing engineer:product manager (PM) ratios downward from, say, 8:1 to as low as 1:1. But we can do even better: If we have one PM who decides what to build and one engineer who builds it, the communication between them becomes a bottleneck. This is why the fastest-moving teams I see tend to have engineers who know how to do some product work (and, optionally, some PMs who know how to do some engineering work). When an engineer understands users and can make decisions on what to build and build it directly, they can execute incredibly quickly.
I’ve seen engineers successfully expand their roles to including making product decisions, and PMs expand their roles to building software. The tech industry has more engineers than PMs, but both are promising paths. If you are an engineer, you’ll find it useful to learn some product management skills, and if you’re a PM, please learn to build!
Looking beyond the product-management bottleneck, I also see bottlenecks in design, marketing, legal compliance, and much more. When we speed up coding 10x or 100x, everything else becomes slow in comparison. For example, some of my teams have built great features so quickly that the marketing organization was left scrambling to figure out how to communicate them to users — a marketing bottleneck. Or when a team can build software in a day that the legal department needs a week to review, that’s a legal compliance bottleneck. In this way, agentic coding isn’t just changing the workflow of software engineering, it’s also changing all the teams around it.
When smaller, AI-enabled teams can get more done, generalists excel. Traditional companies need to pull together people from many specialties — engineering, product management, design, marketing, legal, etc. — to execute projects and create value. This has resulted in large teams of specialists who work together. But if a team of 2 persons is to get work done that require 5 different specialities, then some of those individuals must play roles outside a single speciality. In some small teams, individuals do have deep specializations. For example, one might be a great engineer and another a great PM. But they also understand the other key functions needed to move a project forward, and can jump into thinking through other kinds of problems as needed. Of course, proficiency with AI tools is a big help, since it helps us to think through problems that involve different roles.
Even in a two-person team, to move fast, communication bottlenecks also must be minimized. This is why I value teams that work in the same location. Remote teams can perform well too, but the highest speed is achieved by having everyone in the room, able to communicate instantaneously to solve problems.
This post focuses on AI-native teams with around 2-10 persons, but not everything can be done by a small team. I'll address the coordination of larger teams in the future.
I realize these shifts to job roles are tough to navigate for many people. At the same time, I am encouraged that individuals and small teams who are willing to learn the relevant skills are now able to get far more done than was possible before. This is the golden age of learning and building!
[Original text: ]
Show more
FM Speaker Highlight: Vicky Lin
Senior Manager at Advantech with over 10 years of experience in software engineering, system architecture, and AI platform development. She specializes in cloud computing, edge AI, and heterogeneous systems, with deep expertise in MLOps and scalable system design.
Can't wait to have her at FM26.
FUTUREMODE 2026
📍 Taipei Expo Dome | Sep 4–6, 2026
🌐
🏟 Early Bird Till 7/1
Local -
International -
Show more