Many of the UI practices developers have absorbed through osmosis– such as grouping buttons with like actions and having them change color when you click on them— have their roots in pre-computer design disciplines. While they often work ok, they often aren't optimal, and an interaction designer can make your users lives' much better. For example, I might look at buttons grouped because they perform a technically similar function and think "what are the user's goals here? What likenesses should gestalt communicate for them? Do the other elements nearby alter the meaning of their grouping?"
Or I might see a standard modal where an alert pops up if the form fails validation because it uses an API which can't yield real-time feedback. Error popups are a big emotional disruption— like getting pulled over and given a warning rather than being redirected with a well-placed road sign. They also add cognitive load because they have to read it AND find the problem fields, the extra click can take time, and dealing with all of that can totally kill a user's flow and concentration. If it's common user stumbling block, I might make the button border and problem field switch to the same color and rapidly shake horizontally like a head shaking 'no.' The emotional rebuff and interruption to the user's flow are significantly reduced. It will drastically improve that user's experience.
While many technical folks consider these trivial issues, good interaction design is consistently one of the reasons folks will shell out serious skrilla for proprietary, less technically sound, less secure, and less flexible commercial software and why open-source alternatives will remain alternatives for everything but developer and technician focused software. One of my primary goals is to ply these skills in the FOSS scene.