{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreihxwlqfijwd2kza6khoai6dsl7lzcjgn5fb5szyp6onox4d4o3ggm",
"uri": "at://did:plc:vyjlfm46mfv6u4vjp6qtrfx2/app.bsky.feed.post/3mnut2pyqydf2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreidg2k33tiuupnstmiowh7hyyvtsbe3gyhfygiytrzynysnhoctrxi"
},
"mimeType": "image/jpeg",
"size": 81260
},
"path": "/articles/driven-development",
"publishedAt": "2026-06-09T06:30:00.000Z",
"site": "https://thedailywtf.com",
"tags": [
"CodeSOD",
"shouldn't drink and drive",
"Learn more."
],
"textContent": "We should always be _wary_ of \"(.+)-driven development\". Things like test-driven development, or domain-driven development are fine, but they're also frequently approached from a perspective of _dogma_ , which creates its own terrible outcomes.\n\nBut let's talk about domain-driven development. Without getting too bogged down into the details of the approach, the idea is pretty straightforward: describe you domain model without reference to any lower-level concerns, so you can effectively write your domain logic in an abstract language tuned to your specific needs. In other words, it's just a pretty good practice. DDD offers tools and techniques for doing it, and as stated, can be adopted as a point of _dogma_ instead of technique.\n\n**Julien** joined a team which bragged about their use of DDD. Everything they did followed DDD best practices, they said. The fact that they piled up all sorts of related buzzwords when talking about it should have been a red flag.\n\nHere's one of their \"domain\" classes:\n\n\n namespace Acme\\Documents\\Domain;\n\n interface CakeSessionRepositoryInterface\n {\n public function isLoggedIn(string $cookieId);\n }\n\n\nIn \"domain\" patterns, a \"repository\" interacts with domain objects in your data store. Things it shouldn't do:\n\n * perform an authentication check\n * interact with cookies\n * care about session information\n * be tightly coupled with your underlying web framework (CakePHP, in this case)\n\n\n\nExcluding the curly-brackets, every line in this short snippet is wrong, which is impressive.\n\nIt looks like their domain shouldn't drink and drive.\n\n[Advertisement] Keep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.Learn more.",
"title": "CodeSOD: Driven Development"
}