Pretty and Broken trumps Ugly and Working
There, I've said it. Programming is a beauty contest, and if your software ain't pretty, it will lose out to something with half the function. This is a really difficult thing to admit as I'm not a designer, but the user interface is more important than the functionality.
Of course this isn't always true - quite often banks and other large businesses use software that was written 20 years ago (and still looks the part), but for the majority of businesses (especially in the web sector), it's just a home truth that design is more important.
So let's explore why.
Reason number one why the UI is important is trust. Users don't know whether to trust a site or not when they visit it, so they'll go for easy visual clues. Clues like how clean or professional a site looks will either attract or scare off potential customers. If your website looks like it was thrown together in a slapdash fashion, then users will already be sceptical; if your site looks clean, then most users will assume that you're a trustworthy, professional outfit.
A clean design can convince a user to spend more money on an inferior product, to give more details than they normally would, and to refer their friends. On the other side, a poor interface can drive users away from a good service, or even turn the user off buying at all.
If you were told to pick a reliable car out of a brand new Lamborghini Gallardo, and a 10 year old Toyota Corolla, which would you pick? Most people would go the Gallardo, despite the danger of engine failure because it looks nicer. In web terms, users respond better to 'responsive' interfaces that load parts of the page at a time because they feel faster, even if they're not.
It's a well known trick to put an animated progress bar on operations where we have absolutely no way to know the progress of, simply because it tricks the user into thinking we know. The code behind it could fail catastrophically, but so long as movement is occurring, the user will patiently wait. On the other hand, users will often keep refreshing pages that are working fine simply because they don't see a response within a couple of seconds.
It's a strange reality of the web world where users will often trust a modern-looking new-comer over a dated-looking (but well established) service. So far as I can tell, this is all about the perception that the modern looking site is using newer and better technology, even when the underlying stack is exactly the same. Sure, the established brands will gain customers from referrals, and from being the 'known' brand, but leaching new users can be easy if you look more modern.
How does this relate to functionality?
Most users don't know how software works. Their one and only interface is the user interface, so their entire knowledge base is based around how the user interface works. As such, all their cues about the quality of the system come from the one part they can see. If their regular user stories can be fulfilled without having to see anything ugly, then the software is "good" in their eyes. If the software is horrifically insecure, or held together by hopes and wishes, the user will never know.
I have run into this hurdle many times in my professional career - a client will demand updates, but only accept them if they can see the difference. It can be difficult when you're working on large, complex, back-end functionality, and they're obsessing over basic front-end minutiae. It's a balancing act. If you build the full front-end design first, and then start fleshing out the functionality, you will end up with an angry client who can't see the changes happening, but know that you're spending a lot of hours building something that looks done to them. If you leave the front-end to last, then you will end up with an angry client who wants to know why everything is just so ugly.
The ugly truth is that users will work with what they can see, and if what they can see is pretty, then it doesn't matter how well it actually works. Design is a really important factor in web development, and one that can't be ignored or put off. In the open source world, people tend to favour function over form, but those users are not the standard target, and can still fall prey to good design tricks.
So it's food for thought if you're starting a business, or looking at an upgrade to your software, or working in any form of software development - Pretty and Broken trumps Ugly and Working.
An Aside - Anti-design
There's a common practice among certain industries to take these rules and invert them to deliberately scare users away. For example, in the US, credit companies are obligated to give access to credit reports for free, so they make websites which deliberately look untrustworthy. It makes users feel unsafe about using the service, and opt instead for the professional looking paid options available on the main credit sites.
Another tactic used by scammers is to deliberately make broken-looking emails and websites with spelling mistakes. This allows them to weed out users who will look at the site, and think critically enough to spot it for a scam (leaving only the users who won't see it for what it really is).