From a programmer’s perspective, taking care of memory and time are the most important issues. Computers have limited memory and accessing it has a computational cost.
The first step I always do before I start programming is to think about the problem and the data structure. To define the data structure well, it is necessary to know what will be the way to access the data. For example, how to iterate over the elements, access an element or insert elements. Also, it is important to know the relationship between the elements: are they unique, do they aggregates, or is there an order?