Summary

In this chapter, we briefly touched on the concepts of problem and solution spaces, requirements, complexity, knowledge and ignorance. Although at first, these topics seem not to be directly related to software development, they actually have a significant impact of how and what we deliver.

Make no mistake by thinking that you can deliver valuable solutions for your customers just by writing code. And that you can deliver faster and better by typing more characters per second and writing cleaner code. In fact, customers do not care about your core or how fast you type. They only care that your software solves their problems in a way that no one solved it before. As Gojko Adžić wrote in his nice little book about impact mapping (Impact Mapping: Making a Big Impact With Software Products and Projects, 2012 Provoking Thoughts), you cannot only formulate user stories like:

  • As a someone
  • In order to do something
  • I need to use some functionality

Your user someone might be already doing something by executing some functionality even without your software. Using pen and paper. Using Excel. Using a system of your competitor. What you need to ensure is that you make a difference, make an impact. Your system will let people work faster, more efficient, allow them to save money or even not to do this work at all if you completely automate it.

In order to build such software, you must understand the problem of your user. You need to crunch the domain knowledge, decrease the level of ignorance, properly classify the problem complexity and try to avoid cognitive biases on the way to your goal. This is an essential part of DDD, although not all of these topics are covered in the Blue Book.

In the next chapter, we will do a deep dive into the importance of language and discover the definition of ubiquitous language.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.117.187.113