As I said in recent other questions, the CMS we're developing at work is becoming a huge mess that's getting everybody lost (we started joking about "not caring about it anymore" with some coworkers...) I have been interested by the DDD for a quite a while now, and I am already testing it out myself on a personnal project (with "experts" friends). So far, things are ok !

I founded out that DDD provides really interesting guidelines and concepts. As I am being more and more frustrated by our CMS code base, I am recently spending lots of time thinking on how to fix things up or help stirring the project to a saner horizon. DDD suddenly sprung into my mind as a potential solution to help us. We lack specifications, documentations, naming conventions, well defined architecture... barely everything vital to a huge project !

I guess "ubiquitous language", "bounded contexts", "aggregate root" all are concepts that can provide some help even though the project's already started and not with DDD in mind... Moreover, we use Python, and I sincerely feel like using Python on huge project requires even more to pay attention to what we are doing. DDD could maybe provide us some tools for fixing our design...

What would be right steps for ensuring we could sanitize the way we're working without ending up with even more mess ? Could something else than DDD provides more help to get us back on the right track ?

  • 4
    Questions like "$situation: what do you think?" are a poor fit for QA format - can you try to scope this down to a specific single question that can have an authoritative / objective answer? – Daenyth Mar 9 '17 at 19:25
  • Thank you ! Does it look better now ? :s – Shirraz Mar 9 '17 at 20:11
  • Just to be sure: Is your biggest problem actually code organisation, or is it work organisation? In other words, do you have a clear way of deciding what gets developed when and by whom? If not, you should probably first decide on a development method, probably something agile like Kanban or Scrum. – Michael Borgwardt Mar 9 '17 at 20:30
  • To be honest, we do try following Agile/Kanban principles... I am not experimented with it, but I feel like we just put a fashionable term on our messy work organization, and that "Agile" means "we code first and think later" for our unofficial lead dev. Because we actully spend almost all of our time coding (and fixing what we coded recently). e also tried to work more in parrallel, but still that guy keeps getting in everybody's way... That's why I thought about DDD, both for its strategic and tactic ideas... – Shirraz Mar 10 '17 at 8:10
  • DDD is mostly for green field projects, i.e. projects in early stage, or nearly scratch, so that you can get your initial design closer in line with the domain expert's (and future user's) expectations. – rwong Mar 10 '17 at 13:08