To bestow us with the perspective of a designer, let's explore a simple problem. We must construct an abstraction that allows users to give us two strings, a subject string and a query string. We must then calculate a count of the query strings found within the subject string.
So, consider the following query string:
"the"
And have a look at the following subject string:
"the fox jumped over the lazy brown dog"
We should receive a result of 2.
For our purposes as a designer, we care about the experience of those who must use our code. For now, we won't worry about our implementation; we will instead only consider the interface, as it is primarily the interface to our code that will drive our fellow programmers' experiences.
The very first thing we may do as a designer is to define a function with a carefully chosen...