I really think that to become a better software designer (even if “UX Designer” – or something fancy like that – is not your job description) everything starts from a simple notion: well-designed software is considerate and helpful.
Just think about it: software exists to help us humans, lifting from us the weight of repetitive or computationally expensive tasks; and, usually, even badly-designed software is capable of carrying out complex tasks, and perform extremely difficult operations in small time. So, “helpful” usually isn’t a problem.
But think about “considerate”. Just try to imagine the software you use the most during your daily routine as a human assistant. How would you describe him (or her), if you were asked about his personality? Would you picture him as a well-behaved, considerate and smart young man, or words like “dumb, presumptuous and bipolar dumb-ass” would come to mind?
You will find that linking human traits with inanimate things is something very easy to do when you interact with them: and well, interaction is the essence of software.
So it’s clear: the quality of user experience is determined by software’s “personality” too. How much? It depends on the user and on the interactions required by the software (how many times it requires your attention, for how long you use it, how are its functions important for your goals…). Surely, working with an insolent and witty software doesn’t make you happy or productive: it frustrates you. And user’s frustration is the worst enemy of good software design.
Hence, this is the best advice anyone who cares about user experience in software design can give to his fellows designers, software architects, engineers or whatever:
Give your software the gift of a considerate, helpful and smart personality.