Take a look at the Rails Rumble 2010 entries: http://railsrumble.com/
There's a whole stack of apps there, developed within 48 hours by small groups of people. They're not all beautiful, but there is (to my eye) a pretty high standard of presentation for most of them.
I am sure I am not alone in feeling like there's this chunk of knowledge I'm missing - in terms of how, and when, to go about making something beautiful.
I'm fascinated by the concept of optimizing user experience - it certainly has the potential to make or break an application's popularity. If you can spend valuable time tweaking code to make it more appealing to the compiler, why can't it work in the other direction too? Though I don't think it's reasonable to expect myself to be incredible at both, I'd like to be able to put together a prototype that looks nice. After all, I wouldn't show people code that I knew was bad and ugly.
Part A - I would love to know - how does this aspect fit into the flow of the project? At what point do you start turning things from black-text-on-white-background into a beautiful and intelligent layout? I'm sure it's usually incremental, but is there a specific point at which you decide to shift focus over to implementing your UI? I know I usually go through many notebook pages of UI ideas even before I've written any code. Is it worthwhile doing mockups in photoshop at this stage? Showing different designs to people and asking for feedback? Or do you usually do this after your core functionality is built? And where do you draw the line, say 'this is ready enough for now!' and release the thing?
Part B - In terms of user interface and usability, there's a lot of information out there. Much of it, however, is from the early days of graphical computing and the web. There are still great things to learn from stuff like Joel on Software but I'd like some good information about user interactions and expectations in the AJAX era. There must have been some more wisdom accumulated in the last decade! I'm looking for some shoulders to stand on - 'our experience showed us that you should never do <xyz> because users find it confusing'.
Part C - I've always been curious about how small teams of people manage to cope with the graphical elements of web application building. Does a team of 2-3 people in an early days startup usually contain a designer/artist? Is that something you can reliably outsource? Is it ever a good idea to have your design done by someone else and then shoehorn your view code and javascript into it (for a prototype/beta), or should it always be a closely collaborative process?
Part D - Finally - I'm interested in any of you people who can see BOTH sides of the coin. If you started off as a programmer and then learned how to make stuff sexy and usable - what put you on that path? Where did you start learning? What were your major obstacles, and how did you overcome them?
Looking forward to hearing what everyone has to say.
Dan
A - I'm pretty sure most people design the UX/UI before they start coding (at least mock ups). If you have already coded all your backend, you might feel constrained when designing the UI or might realize too late that you oversaw some critical parts of your system. Let me illustrate:
Let's say you are building a "C.V. builder app". You might start coding with the assumption that the user has to be login to start building his C.V. However, if you imagine the UX first, you might realize that it would be nice to ask the user to register only once he wants to save his newly created C.V. That simple detail might have a huge impact on your code base.
B - Some resources & inspiration: http://uxmovement.com/, http://ui-patterns.com/, http://www.smashingmagazine.com/category/inspiration/, http://www.dribbble.com.
C - If you're good at UX/UI design but lack the Photoshop skills to bring your vision to life, it should be safe to outsource. In any case, make sure your designer really "gets" your vision.
D - I started learning to design and program at about the same time. Since then, I've put most my time into programming and although I consider myself pretty good at designing user interfaces, I lack the technical skill and experience to make them look beautiful. If you're the same as me, I would suggest spending some time trying to really master Photoshop or such tool. Also, some color/typography theory can't hurt.