I was going to post something about NSConference 2011 anyway, because I agree with the general consensus - that it was bloody brilliant.
Danny Greg’s post has spurred me into action though, because I sort of agree with him, and sort of disagree!
It is certainly true, as Danny said, that it was great to add some more non-programming perspective to an already excellent conference format.
Having some entrepreneurial input was great, as so many of us are dipping our toes in the indie waters. I found both Kevin Hoctor and Ken Aspeslagh’s talks reassuring, inspiring and challenging in equal measure. They managed to pull off a rare trick - talking to developers about business in a way that made the developers want to listen.
And as Danny pointed out, having some more design/interaction sessions was also fantastic. There were lots of great speakers on this topic (including those like Matt Gemmell who’ve spoken in previous years), but Cathy Shive and Aral Balkan were my favourite sessions.
Where I slightly disagree with Danny is in the idea that need for good design is a change that’s just been happening “for a while”. The implication being that whilst it didn’t happen yesterday, it’s happened in the last few years.
The fact is, the need for good design has always been there, and good design has always been evident in the truly good software. Apple have known this all along. I tweeted to Aral about the fact that I thought he was a fan of Don Norman based on the content of his session (he is). The session’s title was a big hint, come to think of it (if you haven’t read The Design Of Everyday Things, do so!). Don was already in my mind though, as a lot of what Cathy said in her talk the day before also made me think of him. The reason I know about Don Norman at all was that he was knocking around at one of the early WWDCs that I went to, in about 1995. That was because Apple had just hired him (it didn’t stop them having a good many design related disasters over the subsequent years, but in theory at least, they’ve always known the value of good design!).
I believe that the best programmers, like the best graphic artists, the best engineers, the best musicians and authors and scientists, have an ability to transcend technique. They may be brilliant technicians in their chosen field, but they also have the ability to strip away all that skill and get to the essence of what’s important- which is why that Antoine de Saint-Exupéry quote is so relevant.
They have an aesthetic appreciation for function, as well as form, and they can whittle away at a design until all it is clean, and elegant, and entirely user centred. This manifests itself in software as something that does the what the user wants - intuitively, delightfully, effortlessly.
I believe that this ability, this particular sort of focus and clarity of thought, is inter-disciplinary, or perhaps cross-disciplinary, or, to put it in nerd terms, it’s orthogonal to the other stuff.
I also believe that having this ability is what we mean when we say “designer”. You can be an average artist, programmer, entrepreneur, and also a great designer. Or you can be a prodigy in your chosen field, and a piss-poor designer. I’d hazard to say that I don’t think you can be truly great at whatever it is you do unless you have both the technical chops and that focus on design.
In a conversation outside the sessions (that I was loitering on the edge of!), Aral and Cathy were both talking about the fact that programmers have a tendency to confuse the ability to draw with the ability to design. Cathy (I think) was also saying that many programmers have that design ability - and that it manifests itself in other ways, like designing nice APIs. That we tend not to give ourselves the credit that we deserve, and also tend not to recognise how we can transfer these skills.
I think that’s true - many programmers are too hard on themselves when it comes to design - but there is also a converse truth. In my experience, many programmers are actually piss-poor at designing APIs! The same thing that makes them bad at designing user interfaces actually makes them bad at designing code too. They overcomplicate, or they over-focus. They fail to see the cheesy wood texture for the b-trees. They are actually not good designers.
I’m generalising of course, but I do actually think that this is a character trait that’s quite common in programmers, and whilst we’re being generous about ourselves in other ways, we also have to recognise the fact that many otherwise good programmers can’t design. They do lots of things that are absolutely essential, but they can’t, and shouldn’t, be responsible for the design!
An appreciation for design is critical to making good iPhone apps. It’s also critical to making good frameworks. Or good chairs. It is therefore essential that we are aware of the importance of design. It doesn’t mean that we’re all going to suddenly become designers - some of us will have to settle for being really good programmers who work with really good designers.
It does mean that it’s really great to have such excellent design related sessions at NSConference!