Why You Should Know About the Domain
2 min read

Why You Should Know About the Domain

Given everything else equal, who builds a more maintainable project, a developer with or without domain knowledge?

Scenario

There are two developers; a company approaches each to create the accounting software. Both developers receive the same specifications, but one of the developers has experience with accounting.

Given everything else equal, which developer will build a more maintainable project?

The Domain

“That subject area to which the user applies the program is the domain of the software.” Domain-Driven Design, Eric Evans.

How important is it for a developer to know about the domain? Another example is while developing software for a biology lab, do we need to know about biology?

Why Is the Domain Important?

In the book Domain-Driven Design, Eric Evans gives an excellent example of why this is important. While filming “Monty Python and the Holy Grail,” a specific scene had to be shot many times until they made it funny.

Yet, in the first film's review, the actor realized that they had used one of the earlier takes, which wasn’t funny. So the actor asked the editor why they didn’t use the last one, and the editor said that someone walked in-shot and they couldn’t use it.

The editor was like a developer without knowing the domain. The editor focused on technical excellence, making sure that there were no flaws in the scene. He or she worried about how the other editors would judge the work. The actor wanted people to laugh.

In the end, the director restored the scene to the funny one because it was more important that the scene was funny than the technical excellence.

I also found an insightful comment online that I’d like to share as well:

“a sufficiently detailed specification is source code and therefore requires a developer with domain knowledge to write it” jk

Advantages

Given everything else equal, who builds a more maintainable project, a developer with or without domain knowledge?

In my opinion, the answer is a developer with domain knowledge. Because the developer with that knowledge:

  • Communicates better with the stakeholders.
  • Finds errors and edge cases in the specifications.
  • Anticipates how the software evolves and prepares for future changes.
  • Avoids poor design choices.
  • Anticipates future blockers.
Be the developer with domain knowledge.

If you like this post, consider sharing it with your friends on twitter or forwarding this email to them 🙈

Don't hesitate to reach out to me if you have any questions or see an error. I highly appreciate it.

And thanks to Michal and Yusef for reviewing this article 🙏

Thanks for reading, don't be a stranger 👋

GIMTEC is the newsletter I wish I had earlier in my software engineering career.

Every other Wednesday, I share an article on a topic that you won't learn at work.

Join more than 5,000 subscribers below.

Thanks for subscribing! A confirmation email has been sent.

Check the SPAM folder if you don't receive it shortly.

Sorry, there was an error 🤫.

Try again and contact me at llorenc[at]gimtec.io if it doesn't work. Thanks!