A fundamental part of Solving Problems is the data that this problem must face, the conditions in which it does so, the origin of that data, the relationship they have with previously stored data, having to store data permanently, etc. And each and every one of the foregoing in turn generates problems to be solved and conditions to be taken into account. In other words, the data "comes to life" on its own when the Programmer solves problems.