One of the biggest hurdles I face when developing is design. Not just the graphic design, but the functional design as well. Screen flows, consistency, maintaining clarity. The coding is the easy part. But I often need to refactor my coding several times as I discover that my functional design is too flawed for even me to overlook.