Mental Model vs. Implementation Model
One of the most useful concepts of UX and product design I've learned, is the difference between a mental model and an implementation model.
As programmers we have a tendency to think in technical, modular terms which is an implementation model. What does the implementation of this feature do? It creates a ZIP archive containing the files and folders.
On the mental model, it compresses files. Never mind ZIP, from a mental model perspective the various compression technologies doesn't matter. To the mental model of the user, compression is what it's doing and that is the result they want to achieve.
How does compression work on Windows and Mac?
Let's take a look at the context menu of a folder and see.
On Windows it says "Add to archived folder". Not that goal oriented, yet it doesn't mention ZIP or any other compression technology.
On Mac it's a little different. It says "Compress files" which is the exact result you might want to achieve.
I was actually fooled by this text, since I'm very technically and implementation minded, I thought for a second it would compress part of the disk. Like Windows 95 "I'll-shrink-files-and-become-really-slow" compression.
The hard part is to move above the implementation model, and think in a mental model instead. The implementation model and mindset is so deeply ingrained in us, that it’s almost impossible to set aside.
After all, we’ve taught ourselves to code and so many other things exactly by reverse engineering the implementation to see what’s underneath and how it works so we can align to fit the bill accordingly - and now you want to forget all that? Very difficult!
One thing I find useful is to have a particular person in mind - someone you know and understand and knows what their job is and why and how they’re using the software you’re designing.
Try to ask yourself “what would that person think if I named the button ‘Add to archived folder’?” - actually imagine the person getting to use the product or feature for the first time.
Sometimes when I think I’ve been really clever and came up with a clear and intuitive design, only to discover how flawed it is.
Often it only requires me to imagine that person use it, without seeing. If I pretend to show them at an earlier stage, it sometimes helps me shift my thinking more towards the mental model and forget being a developer for a brief moment.
Another example of copy-paste. What happens if you press CTRL + C without selecting any text, file or folder - and then paste? Did it just copy empty to the clipboard, or did it know that it was an obvious mistake?