Re: Besides being users ourselves.
As an HCI/UX Designer and UI Designer since around the start of the 90's, I'm still working with some of the best software engineers and architects in the business, on anything from small, web based UIs to mainframe systems management via Eclipse, mobile and HTML5 ...</drone>
I have also used Linux/KDE pretty much exclusively since 1997. I've always preferred the extensive customisation available in KDE to anything Gnome offered. The ethos with Gnome and latterly with Canonical, Microsoft and especially Apple is limited customisation due to a presumption that their choices are good enough... nay, the best choice for all users. I've never been a chronic settings tinkerer but when something irritates me I'll usually have a way to fix it in KDE. In other OSs/WindowManagers, I usually waste a lot of time looking, only to find it's not catered for. I admit that there's a large element of getting used to stuff but KDE is just easier (with a few notable exceptions) to my mind. Live and let live though. I've recently had a Mac forced on me (need to use Adobe cloud tools) and having gone in with an open mind, I've found it to be a mixed bag. Some stuff is pure genius but there's a surprising range of UI that's just awful. An example that drives me nuts every time is the window control. It seems like there's an underlying complex state model, which determines what you can see and what size it's allowed to be. In KDE, I can pick any one of a running applications windows directly and easily specify minimised, maximised (even maximised horizontally or maximised vertically), arbitrary size or shaded (just the title bar). It's all very simple, application independent and deterministic.
Now, coming on to the Engineers ability to deliver UI. The problem with FOSS is that teams are generally self selecting, under resourced, under appreciated, are being paid to do another (commercial) job and are expected to maintain enthusiasm and drive over many releases, while frequently being diverted by life events (marriage, kids, job changes). To deliver UI, different skills are required than are generally possessed by the detail crazy, completer finisher, linear thinkers who code for a living. To do a good job on UI, we need people who can, in their initial investigations, put aside the limitations of the possible and enquire of and empathise with the problems and tasks the user is trying to handle. People who can diverge crazily and facilitate others to do the same, then converge. People who know how to see the bigger problem and be innovative in designing a solution for it. People who know how to do user research. People who know how to negotiate the relative importance of shipping function vs a great user experience. There's a lot more. I've spent my career trying to exploit these skills and hone the associated techniques, so that a software engineer can be confident that delivering a design I've worked on will meet or exceed users needs, even on complex systems. Not just because I asserted some personal conviction but because I've iteratively researched, validated and checked, with the people who ultimately will use it! Now, step forward the software engineer who's got time and skills to do everything I mentioned (and much more) and remain independent and have time to write and unit test the code - probably unpaid?