The mental model
Values live in the machine, names are arrows to them. Assignment draws an arrow, and a change to a value is visible from every arrow that points at it. This model explains both the surprise and the fix, and it is the same in every language with this kind of value.
When it bites
Whenever one value is shared, a change through any handle is seen by all of them. That is useful for sharing state, and dangerous when you meant to work on one copy. Saying which one you want, change or copy, is the discipline that prevents the bug.