I’ve long argued that UI design, programming, and product strategy should be learned apprentice-style with your hands and through experience, not through school and pedagogy. That can sound anti-academic, but it’s not. I recently got around to reading The Design of Everyday Things, the classic by Donald Norman (himself an academic) and he has this to say:

People function through their use of two kinds of knowledge: knowledge of and knowledge how.
Knowledge how [is] what psychologists call procedural knowledge.
Procedural knowledge is difficult or impossible to write down and difficult to teach. It is best taught by demonstration and best learned through practice. Even the best teachers cannot usually describe what they are doing. Procedural knowledge is largely subconscious.

I couldn’t have asked for a better statement of the problem. It’s really darn hard to take all the physical and mental processes going on when you do something like design an interface and boil them down to declarative statements like “do this or that.”

When I learned design, I was partly self-taught and partly mentored by Jason. When I learned programming—as much as I’ve learned—I didn’t make progress until I got personal explanations from David and Marcel.

When I go to conferences about design I see a lot of declarative knowledge. Knowledge of. The latest CSS rules. The new JavaScript syntax. Ten ways to make users happy (supposedly) or whatever else. What I don’t see are procedures—somebody standing up there with a pen or a text editor and making things happen and showing how it’s done. That’s what I want to see and that’s what I think our industry needs more of.

Addendum: Some examples of showing ‘how’:

  • A Tour of the Design Process at 37signals, my presentation from FOWA London 2010, demos the mechanics at each stage of a design: modeling, sketching, coding, Photoshopping and implementing in Rails.
  • Tom Preston-Werner sits down with a laptop and teaches the fundamentals of Git by actually typing commands in Mastering Git Basics.
  • Kent Beck’s screencasts on TDD show how test-driven development is done by a master with real code.