Data drives most of the interactions on an application. So it makes sense that it should drive how we write the code behind the interactions.
Computers only understand data, that data may be in the form of instruction, something to store for later, or as something to process.
When we interact with a computer in any form, we do it for data. A simple example of this is when we use a calculator, or calculator application. In this case, we enter a number an operator (+, -, /, *) and another number.
Some slightly more complicated examples could be to write or read an article where we transfer data from the writer to the reader, or when we watch a movie or play a game where someone added data in the form of images, sounds, or interactions for us to experience. The list goes on and includes anything we do to interact with a computer.
As a non-computer, we still mainly function on data. In fact, our ability to process data often puts computers to shame. We can take a few seemingly unrelated pieces of data and extrapolate wholly new concepts. While this is a fantastic ability, we often overuse this ability and ignore data that is available that would give us a more precise answer then we could come up without it.
Let me give you an obvious example. Take the following equations.
5 * 3 / (x + 2) = y
Now give me the value of y as a number. We obviously can't do that with any hope of a correct answer without knowing x. However, that is the kind of thing we can do much better than a computer. It will still be wrong but if it were on a multiple choice quiz in school we would still pick a number based on what kind of numbers x has been in previous questions and what seems like a reasonable answer at least has a chance of being right and so is better then a definite wrong answer.
When we are writing our code, we often make assumptions about how they will be used and don't take the time to figure out what x is.
Assumptions are unopened windows that foolish birds fly into, and their broken bodies are evidence gathered too late. - Bryan Davis