Are there more fundamental design principles, or is it more a matter of experimentation and experience?
When I work with designers I notice that the finished result is often very far away from the initial idea, and that the intermediate steps are obviously experiments in some direction. It is apparent that a lot of time goes into trying things out that are never seen in the finished product. It's probably a lot like writing essays: write a lot and throw away the 90% you don't really need.
So in short: I think there are no shortcuts, it's about experience and hard work.
"Design of Everyday Things" by Don Norman "The Visual Display of Quantitative Information" by Edward Tufte "Don't Make Me Think" by Steve Krug
Tufte will give you the vocabulary around visual concepts. Norman will give you the vocabulary around evaluating basic usability. Krug will apply both to the domain of the web.
Additional recommendations: About Face 3.0 -- written by the head of Cooper Design, it outlines in somewhat dry fashion the frontiers of user experience process. Buy this only if you're desperately interested in becoming an interaction designer, or you want to institute user-centered design in your organization. It's really the UCD bible.
I gotta recommend reading "Don't Make Me Think" by Steve Krug. It is the best beginning user experience design book out there.
Try to turn things around - there are a lot of designers (and kids and grandpas) that code something up. This usually ends up as a horrible mess, not following any programming paradigms, spaghetti code, non-existing security, etc. We've all seen it happen. But you only see this if you're a professional programmer. Non-professionals don't see the detail, the design decisions, the security measures, the scalability, etc. They just see a slow or buggy site. Or worst-case they see their credit cards exposed.
Design is the same, just to a larger degree - everyone thinks they can do it, because well done design seems so simple. When they try to do their own, however, it is never quite as good and they don't understand why. The reason is the exact same as why novice programmers create crappy programs. To do a great and simple design you need a lot of experience and a lot of knowledge. Certain things need to align, some colors match others don't, certain design elements send certain signals to the user, etc. Have you ever noticed the drop-shadow on the logo on Google's homepage? Chances are you haven't, but it is a core part of their design - you don't notice it, but it holds up the whole page.
As a novice designer you can only get so far until you start running into problems that require expert knowledge and experience. Just like programming.
And when you start talking about usability (which I think the flaws in the linked pic are) things get even worse. Read Jakob Nielsens useit(http://www.useit.com) if you want to learn more about it.