- Deeply understands the technology involved and how people want to use that technology
- Looks at UI the way users do and is disgusted by pain points (ala Steve Jobs)
- Empathizes with users who use technology differently than they do (or anyone else on the team), and is able to build out UI specifically for their use cases
- Wrangles the development team to do everything possible to make life easier for the user; set-up that auto-detects your rig, Mint's on-boarding process where all you have to do is enter your username and password from your bank website log-in, etc.
- Concepts and implements things like emotional hooks, look-and-feel, embedded tutorial, etc.
These things are "seen" and not "done" like playing the piano or other activities which require 10k hours to master. Some people have excellent product experience vision and give themselves permission to use it in a business context. Other designers will push pixels their whole careers.
Some people think deeply about why they do things, others don't. I think that's the critical skill in UX design and cannot be trained.
In time, the more designs I made, the more I started to develop an intuition for things that worked or didn't work. Not to mention that before I learned how to design, I had to learn how to listen to my users - and before I could do that, I needed to learn to check my ego at the door and realize that even as the "designer", it didn't mean I knew a darn thing about what my design should look like until I talked to them (and sometimes, not designing what I originally "wanted" to design as a result). Yes, there are definitely skills involved in "doing" things that are hard to train, and there's a sense of "natural" talent - but with enough effort, even a computer science major like myself can pick up those skills.
And conversely, the hours you spend doing design are hours that are necessarily taken away from other things you want to be an expert on. Like NoSQL databases, or sleep. :)
Most engineers who set out to "make the UI" aren't willing to make those sacrifices, so you get a crappy UI. That's not meant to insult engineers, because they have plenty of other things to worry about. But unless you take it truly, painfully seriously, all you get is shit.
So in real life, capable professionals usually have some innate talents. But it doesn't have to be specifically ux design talent. maybe a talent in fast learning , and grasping complex stuff could be used. maybe a deep natural empathy you have with users.
I recently wrote someone a recommendation where I argued that programming languages and patterns are readily teachable, but holding a complex model in the mind and communicating it effectively to peers, laymen, or computers (the computer is the ultimate simpleton) is less easily taught.
I agree with your linked comment about teaching. One university teacher told me that to lead someone to your point of view, you must first put your arm around them making you start the discussion from where you can see theirs.
I've been "programming" in one sense or another since I was about eight years old. Anything that you have been doing that long since that early is going to seem "inborn" if you don't think about it hard enough.
Certainly, some people are better at certain things than others (just watch me throw a ball), but that can be overcome with hard work (IMHO).