When writing software, we are often faced with making decisions about how concrete our code is. For example, if you are tasked with writing a chat application, you need to have answers to the following questions:
- Is the chat between two people or can it be more than two?
- What kind of content is being exchanged? Text, image, video, audio, or a combination? Maybe all of it?
- How long of a chat history should be stored?
You can probably easily spot further questions that can come up. In a well-planned and thoroughly thought-through project, there would be an answer to all these questions. However, in almost all the projects that I have seen, many of these questions are overlooked, and well-intended projects still face these questions. Some of these questions are also too technical for the people who tasked you with this. However, let&apos...