I noticed I’ve been tagging many of my posts under “design”, while it wasn’t really clear what kind of design – code, UI, visual? I couldn’t peg the exact meaning until finally, via Scott Rosenberg’s blog, I was introduced to Mitch Kapor’s concept of “Software Designer”. Rosenberg explains:
This person’s role incorporated some of the work often associated with the “software architect” on the one hand and the “interaction designer” or “UI designer” on the other. The software designer wasn’t just a graphic designer, nor was he just an engineer; he was responsible for the “overall design” of a program.
In a way, Kapor’s manifesto applies the auteur theory to software.
I like this a lot. While it’s becoming common knowledge that interaction with the user has critical role on an application’s success, especially in a Web situation where switching to a competing product can be substantially easier, it also seemed to me that the typical UI professional’s role definition is too specialized and too detached from the software’s internal workings. Deciding what and how to build requires understanding of your decisions’ effect on the app’s scalability, security, code complexity etc. A good Software Designer might simplify or cancel a certain cool UI feature when it will unproportionally bloat the codebase, making maintainence and adding other features significantly harder. Good experience means responsive, functioning software before good GUI.
Like the classic architect, the Software Designer’s work on the appearance and human interaction of the product is constantly informed and shaped by understanding of the materials’ characteristics and project constraints. Like the “auteur” (ie, film director) the Software Designer (aka Product Manager?) carries in her mind the vision of the finished product, complete with the spirit and experience that cannot be captured in a screenplay or a product specifications.
Kapor described the role of Software Designer back in 1990 (There’s a whole online book there, Bringing Design to Software. I think that with the current rise of Web apps their significantly faster design-build-repeat iteration speed, it has really found its time. It seems to me people like 37signals or Joel Spolsky are talking about something very similar now.