Very often, upon asking for my input on a function’s UI, a developer will say, “That makes a lot of sense. I never would have thought of doing it that way.” It’s not that I’m smarter, but that my design training has taught me to ask questions and approach the problem from several different angles before settling on a solution.
One of the reasons that UIs designed by developers are typically so poor is that they implement their first idea about a function’s behavior and visual representation. One must realize that the first idea is only the first idea. Sometimes it may end up being the best idea, but more often than not, better solutions exist—they just require some iterative thinking.