Understanding what users want to do, what they actually do and how they feel about using a system defines the effectiveness of any digital experience. Function and interface are the core ingredients for most digital projects, but there are many more intangible elements that help dictate a user's actions and perceptions. An awesome user experience is much more than data, pictures and buttons. It's the transition between views, how a button animates, knowing when to emphasize the interface and when to hide it. Ultimately, all of these ingredients add up to form an emotional reaction that determines the product's overall success.
There are endless approaches to planning digital experiences. Some teams place these decisions on various designers, developers, researchers and directors. Sometimes the user experience is drafted in a silo by information architects months in advance of any design work, and sometimes it's improvised in the middle of a project's creation. I can say there's no single formula that works for every project. The best projects seem to achieve a delicate balance of planning, reflection and iteration. Predicting human behavior is arguably the most powerful skill you can have as an interaction designer, architect, engineer (insert title here). You can draft a 300 page functional spec document, with use-case flows, personas, and wireframes annotating every detail of every view, but if the final outcome doesn't result in a positive emotional reaction then all you're piles of strategy will be perceived as a failure.
It's the balance of dreaming big and being pragmatic that that will help you reach meaningful goals. Big dreams tend to incur big production costs, and pragmatism often limits creativity. So it's important to have a reliable set of tools that helps you to not only dream big, but also get the job done fast.
Here are a few resources to add to your UX toolbox to help you draft, sketch, research, revise and execute ideas faster.
UI Patterns hosts a collection of categorized interface components that not only lists different ways of solving common design problems, but also rationalizing about how, when, and why such solutions should be used.