1. When a system is very simple, we explain its actions in terms of its properties and external forces acting on it.
2. When it's a medium complexity system, we tend to explain its actions in terms of its design, putting ourselves in the designer's shoes.
3. When it's a complex enough goal-seeking system, we begin to empathise with the system itself, thinking why "it chose" a course of action.
I remember how impressed I was with this classification and how much sense it made in terms of how we're able to understand the world and predict what will happen next.
From this angle, much of modern computer software is clearly in category 3, and it just makes things easier for us to think of it as having a mind of its own.