(And, yes, I have an affiliate link there. That's why I got a high karma score here, so I could start raking in the millions with affiliate links to books...)
Papaerback - http://www.amazon.co.uk/Non-Designers-Design-Book-Robin-Will...
Kindle - http://www.amazon.co.uk/Non-Designers-Design-Book-3rd-ebook/...
I do not fathom the people who have been downvoting my comment. By all means, if you find someone on this site who submits nothing but link spam, downvote and flag them. Otherwise, why get your knickers in a knot about me getting a pittance for recommending a book I happened to like?
After stoping to care for downvotes and upvotes, I started to see my karma as a _wallet_, with it I could _spend_ points in irrelevant comments, bad jokes, etc., but not carelessly, just enough to have a good laugh without compromise or worry. Positive points in my _wallet_ means I'm still contributing positively to this community, just that.
I would never downvote you for it, and I'm not saying you're wrong to put it in, I'm just trying to explain how some of us here will see it.
I'm more likely to check out the link if (a) you have nothing to gain and (b) I've seen great design work you've done. Without that I usually can't be bothered.
An Amazon link doesn't save as much time as it would have in the 90s and the message looks spammier for it.
"Most people make the mistake of thinking design is what it looks like. People think it's this veneer -- that the designers are handed this box and told, 'Make it look good!' That's not what we think design is. It's not just what it looks like and feels like. Design is how it works."
If you want to learn about design, before reading books about colors, fonts, grid layouts or how to make an inner glow in Photoshop, you should start by reading something like Don Norman's "The Design of Everyday Things" to gain an appreciation for how things work, and why. Then worry about making them look good.
This is a book that developers should read because it helps you think about thinking, and is applicable to APIs and other software internals.
Warning: If you read this book you may find yourself distractedly aware of the UI faux pas circus that surrounds us (e.g. doors that have handles that look pull-able, but can only be pushed).
If this book can get even one designer to resist the urge to make screen UIs that look like glass bubbles or brushed metal the world will be a better place.
I also like Nigel Cross's stuff. His book Designerly Ways of Knowing (2006) is good but published in some absurdly expensive, for-libraries-only monograph series, so find it in a library rather than buying it. His more recent book, Design Thinking, is a collection of case studies with some analysis, a bit lighter but also good (and not $149: http://www.amazon.com/gp/product/1847886361/ref=as_li_ss_tl?...)
It is not a complete education on the topic, but it's a huge step forwards.
To these i say: learning design is good and valuable, but if you want to learn design because you want your next websites or web apps to look good, IMHO you'll be better off outsourcing to a designer who spent years studying these things (you won't become a great designer overnight). For a couple hundred dollars you can find somebody (good) on odesk to design a couple pages that would look much better than a starting designer could do.
I've been doing design for interactive media for over twenty years and I can tell you that most self educated "web designers" are really just decorators who know HTML. And not that there's anything wrong with that but there's a huge difference between a decorator and someone who thinks like architect when you need one. Simply put: Despite our love of the idea of the brilliant actor or rock star who becomes famous overnight most of us really do need an education.
Does it pass the test if it aligns to a grid, contains a pleasant color palette, has enough whitespace, hierarchy, and contrast? Or is there something more fundamental you strive for?
I think a formal design education would be much less concerned with the former, and more concerned with the latter -- what are your most fundamental first principles as a person, and how can you instill those into your design and/or design process.
I want to see more articles about that.
Alignment, whitespace, hierarchy and contrast are elements of visual syntax. You internalize the rules so much that when you're designing you're not thinking about it; you are thinking about what you are trying to achieve.
Say you need to design a sign-up page for a newsletter, you need to:
1. Tell users what the newsletter is about
2. Say how often it's published
3. Make them feel comfortable giving out their e-mail
4. Give some demonstration of value
As you are designing, you are thinking about what is the best way to accomplish each of these goals in a visual manner. You often don't even think where to align stuff, it just falls into place because you know where it's supposed to be.
Since everybody is plugging their own stuff, I wrote on the subject of programming and design here: http://method.ac/blog/design/programmers-designers.html
The former is introductory design (and the focus of the article). The latter is advanced design & expression - applying one's voice towards different fundamentals.
Programming, on the other hand, seems to be a fairly analytical and logical activity that involves verbalizing logic in a programming language.
I suggest starting out with "The New Drawing on the Right Side of the Brain" because if you try to approach design as you would approach programming it will look like a stick figure.
As an alternative perhaps Khoi Vinh's Ordering Disorder.
Also, Check out Smashing Magazine, http://www.smashingmagazine.com/ it is a great resource for design! and if you get more into web app design 37 signals has an awesome blog called Signal vs Noise. Check it out!
Plenty of free courses out there as well of course. I personally prefer paying for most self-learning stuff since I'll be investing so much time into it.