Software Engineering Lesson #1: NEVER assume domain knowledge

This is a lesson for me as a teacher more than for students. Although I hope I will be able to transfer it to students too.

I have been issuing exam exercises for years now, spanning diverse topics and domains very remotely connected between each other, i.e., food, healthcare, transportation, banking, tourism, art, chemistry, and so on.

From time to time, depending on the domain of the exercise, I get questions from people asking things like:

  • is an atom bigger or smaller than a molecule?crossword-letter-tiles-hi
  • what’s the relation between a planet and a star?
  • OR EVEN: what is a cross-word? How do you play?

Usually, after a moment reflecting my disbelief, I kindly respond explaining things from relativity theory to gaming. But then, any use of this? Obviously yes! The main, first and core lesson any software engineer should always keep in mind:

#1: NEVER assume domain knowledge in your stakeholders.

If you do, you will quickly end up deluded (and you risk big in your projects, because you may start working based on statements from people that probably are not really knowledgeable of what’s really going to be needed).