It’s been a slow progression. First, I moved from Eclipse, for years my Integrated Development Environment of choice, to NetBeans, which I’ve been using for the last year or so. It’s faster, leaner, and less prone to bringing down my computer for no readily apparent reason. But now, slowly, I’m making my way to Coda. And it’s like a breath of fresh air. It just works.
It surely helps that Coda is a native code web development IDE, while the other two are optimized for (and built on) Java. For large applications, Java is a dog. But there’s something more to it: while NetBeans and Eclipse feel engineered, Coda feels designed. As well as checking that everything works, someone went through the trouble of checking how it feels to use. The emotional experience was an important part of the design.
Beyond programming languages and development methodologies, the most important skill a developer can have is empathy. To be useful, software needs to be built with a deep understanding of my needs as a user, which may be different to another user’s needs. I write both software and short stories, and I use the same approach for both: I’m writing for an audience. Open source often feels like it’s scratching an itch; rather than users, the software is often written for the developer. We know that over 80% of Linux kernel contributions are made by corporations, so it’s reasonable to infer that most open source software is built to feel an internal corporate need.
Consequently, interaction design is underrepresented in open source. Versions 0.1 through 0.9 of Elgg featured interfaces built by Dave Tosh and myself, reacting to reports of what users found difficult or confusing. They were usable, but although I’m proud of them, they were undeniably clunky. From version 1.0, we had Pete Harris on board, an actual UX designer, who made a world of difference to the project. I don’t think Elgg would be as popular as it is without him. (Now that he’s moved on – alongside the rest of the 1.0 core team – I’m interested to see how the interface develops.)
Open source is an important, valid methodology with many applications. I still completely stand behind it, but I’m not willing to use inferior software for ideology’s sake. So how can we improve the design ethic in open source?
Part of the problem is market. To be blunt, commercial software needs to sell, and usable interfaces are an integral part of that; open source projects don’t, and often sell support as a funding strategy. Making the software easier isn’t, therefore, always part of the dynamic. (You’ll notice that the best-designed open source projects - WordPress, StatusNet et al – all have a commercial version.) It’s also not necessarily part of the engineer’s agenda: I’ve too often heard software developers discuss design as a kind of fluffy afterthought that they don’t view as being as important. I try not to hire developers with this mindset; anyone who thinks they’re more important than anyone else in the development process is destructive.
Another problem, though, is designer attitude. Who wants to give away their hard work for free, after all? Designers already complain about their work being undervalued on marketplaces like 99designs. (Oddly, very few developers complain about their profession being undervalued on sites like oDesk, although I think it is.) While developers see having a Github repository as a kind of portfolio, and participation in an open source project as career-building, designers don’t have the same incentives. Although there are individual examples – Chris Messina’s involvement in Firefox undoubtedly boosted his career, for example – a designer’s participation in an open source community is not generally seen as being awesome. Yet.
Open source companies have an incentive here, and a responsibility to the community to promote this ethos. They should understand the importance of hiring designers, and they should give preference to designers who have contributed to open source projects. Most importantly, developers should understand that designers are engineers too: they just work with a different set of tools.