Indirection / Transformation
Or, by transforming the problem into one you already know how to solve.
Or, by transforming the problem into one you already know how to solve.
Don Norman once wrote an incredible book called The Design of Everyday Things. The book was originally going to be called "The Psychology of Everyday Things" but the title wasn't buzzy enough to market the book. The book isn't about slick visual design as you might initially think; it's actually a very thoughtful look at the way the objects around us make sense in our minds, how objects hint at how they are meant to be used, and how they convey (or encapsulate) information. This book is a must-read for anyone building tools, and is full of lessons for those of us who build software.
Anyway.
One particularly important part (page 183) speaks of the notion of "Explorable Systems". It's how we learn about appliances, televisions, a new stereo, or video games. We often push buttons and develop a mental model of the object's behavior by looking at it and the changes in state: lights turn on, certain things can be opened, or your character (in a game) moves a certain way. This is done really well nowadays when it comes to a lot of consumer software, but is done abysmally for what we use to make the darn stuff: code.
I ask you: think, for a moment, about how poorly programming languages facilitate Norman's three requirements lists for a system to be "explorable":
If you're a programmer and reading these, you probably just chuckled. The stuff you work with typically does none of these things, or very poorly.
Ever sit in front of a freshly opened IDE and wonder, what the fuck can I do with this? That's how I felt when I first ran the promising new Light Table. Before me was a blank canvas and I knew it was somehow powerful but I no idea what to do with it; I didn't see brushes, I didn't see paint, I hadn't the foggiest idea how to build a useful program with it. The system was invisible. I had to have all of it in my head. The object here (a language and compiler, hidden somewhere) conveyed zero information itself in the world.
What if we made code slightly more ... un-code? (And no, I don't mean some super heavy abstraction that totally nerfs your tool. Just a very light layer that lets you make the same old stuff but through a different interface than a raw text editor, where everything must be carried in your head. It would map very directly to real code, and still you'd have to think in terms of the real code, but it would guide you to write good code. Some working environment that is fully import/exportable with regular old code, but puts it into a form that is less tiring to manipulate) And still maintain the awesome underlying power of code? What if options can be laid out? What if the space were more explorable?
Why do I, a professional, need to look up, on a daily basis, trivial things in Google like the fact that LIs can have "list-style" of either "disc", "square", or "circle"?
Why do I have to read a fucking manual? Why can't the manual be baked into the product?
http://dribbble.com/shots/665336-Animation-1-Squarespace-6
Most people would say that human progress springs from innovation, which is driven by stuff like "necessity" or "following dreams" or "passion to solve problems" or somesuch platitudes. These are kinda nice statements that look good on a greeting card, the kind of thing that's safe to tell to kids. But I'm on the Internet so I'm gonna be candid here.
In my honest opinion, meaningful material improvement is really pushed by something else.
Great ideas sprout from when something just really ticks you off and you start thinking, why can't this thing just fucking work for me? At some point the small annoyances you deal with just boil over.
I could go on forever.
Obviously, anger can be an incredible creative force. You need to be impatient. You can't be chill and sitting around; worthy ideas never just pop into anyone's head like a bolt of lightning. People usually don't sit around thinking "hey, wouldn't it be cool if..." and come up with something worthwhile (case in point: that's probably how the Segway came into being). They start with annoyance and go from there.
This requirement for progress is not limited to tech products or companies; the same applies to small improvements: to architecture, to the way you've laid out the shelves in your home, to services, where the trash bin is relative to your desk (too far, isn't it?), to your daily routine, the work process of your team (why is our code review tool so fucking slow?), anything at all.
Look at how pissed Gordon Ramsey is on all his shows (which are, not coincidentally, all about fixing failed restaurants and curing people of their incompetence).
There are a multitude of minor irritants that we suppress daily just so we're able to function. Maybe you're the kind of person who copes and say "that's just how it is", and learn to ignore them, to push them past your peripheral vision into the mental background. Or, you can be a hero. You can be proactive and realize that if we are to really make anything better, it's vital to attune yourself to them. If you've ever watched Star Wars, then you know that such sensitivity to one's environment is what being a Jedi is all about ...
Qui-Gon Jin told a young Anakin Skywalker:
"[midi-chlorians] continually speak to you, telling you the will of the Force. When you learn to quiet your mind, you will hear them speaking to you."
Like Anakin, you've got to quiet your mind and pay attention to the little things. You should, when you use everyday objects, use them both deliberately and demandingly. Notice their many tiny deficiencies. Then, let the hate flow through you.
And, if you can, go do something about it. Go become that hero of the Republic.
Take a look at some of these images:
Screens have been quite good at displacing many kinds of brick-and-mortar retail. Record shops and bookstores were the first victims. Physical print is seemingly dead, or at least being pushed to survive on tactile value (quality paper, great photos; magazines you buy because they look good on your coffee table) and not on the informational content alone. It's also pointed out a lot that in other categories, quite a few people find stuff through their iPads and this trend is gaining momentum. But it can’t go on forever; at some point we will reach an equilibrium that's grounded in fundamentals. So while Amazon. for example, is a fascinating business (one whose main ingredients are CPU power, bandwidth, hard disks, robots, boxes, and trucks), it can’t expand its reach indefinitely. It has literally become a machine for moving goods to where they need to be ... but only when they are specifically demanded.
So in 50 years, where will the line be drawn between e-commerce and offline commerce? How will the two feed into each other? Will there even be a line? Why will we buy the things we buy?
Any item with purely informational value (pure text, images, recorded music) is already there. The ones soon to follow are those with very little tactile value: commodity electronics (routers, cables, batteries, etc ... sorry, Best Buy / Radio Shack), drugs, tools, household supplies, generally disposable stuff that fills some simple need in your life but doesn't enrich it; these items don’t need to be experienced to be useful.
Amazon can't sell everything in its cluttered, crappy product pages. You don't even go to Amazon unless you already know what you're looking for. On Amazon, you're going to buy a case of shampoo you need but not the next shirt or vintage summer dress or handmade earrings. Such products are going to be sold directly by vertically-integrated companies with distinctive brands, unique stories, and compelling content. They are where you discover things you didn't even know you wanted.
Will there even be shelves of stuff laying around in plain sight, wasting precious retail space? Try this thought experiment: if Amazon's logistics machine were INFINITELY efficient and fast at distributing goods, everyone else would use it as a platform, pushing the value of those shelves and inventory rapidly towards zero. Stores are forced to become less about stuff and much more about pitching product to you and making you desire it. Ultimately, they become more like showrooms.
In 20 years, will it be more of an immersive experience, involving a lot of interaction with the brand itself? Just imagine if you had a company selling camping gear and apparel. Maybe you'd walk into a store and see not racks and shelves but instead a tent, a fire pit, and even a wood-chopping station and it would all be arranged in a way that you wouldn't even know you were in a shop. Everything would be in a natural context. In this space, an aspirational lifestyle would already be set up before you; all you need to do is fill in the blanks by literally walking into the scene. You'll enjoy this little scene so much that you'll start to desire the items that were an integral part of it.
This is what Chobani has already done with their SoHo shop.
You walk in and there's a menu of seven different ways you can enjoy a cup of Chobani: with pomegranate and chia seeds and honey, or with blueberries and walnuts. After you place your order you're invited to observe through a window as someone prepares it, and you receive a colorful little recipe card to take home. At the end of the experience, after you've enjoyed the yogurt, (or as they colorfully called it, "a Yogurt Creation") you find that you can even keep a complementary branded glass cup. It sits in your cupboard, reminding you daily.
But ... it's on West Broadway in a fashionable area but they're selling $5 cups of yogurt, so they can't possibly be trying to be a real business. How can this be?
eCommerce isn't just about taking orders. It's really about telling a compelling story about a product using images, prose, video, and music. Stores, too, aren’t about cash registers and shelves; they’re going to do the same thing, but through your senses and things you can touch.
Any recursive function can also be implemented as an iterative one using a stack.
http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey
Thanks to @grayrest for showing me this.
Amazon's Jeff Bezos:
If you're seated in front of a large panel with fifty buttons, you push them and see what happens. You watch what each one does on its own, and you start to notice patterns. Sometimes complex and interesting effects emerge because two buttons actually interact in a non-obvious way. Any system is like this; you fuck around with it until you grok it. Every time you give it an input, it responds and your mind makes a note of it, developing a more and more comprehensive model of its behavior. At some point, that understanding becomes like a reflex. When you're learning to shoot a basketball, your muscles learn the subtle control needed to give the ball just the right amount of thrust. The faster you can iteratively make these "changes and observations", the faster you learn the hidden properties.
Sure. Obviously! But in life, there is a broad spectrum of activities, varying in how difficult or expensive they are to learn and master. But some of them don't need to be that hard; technology done right can make them easier.
Understanding how to play Pac Man takes about 10 seconds. The first time you run into a ghost you know they're bad for you. Meanwhile, learning how to bake a semi-edible cake takes at least an hour to figure out something small, like how you screwed up by using too much milk. Reduce the milk, try again. Taste it. Oops, you used too many eggs and probably took it out of the oven too soon. Baking requires several factors to go right AND has a long cycle time.
In general, the ideal medium gives you a direct connection between your action and a result. Instantaneously. Video Games have really mastered this concept (at least, the well-designed ones like Mega Man X) with tight controls and self-teaching levels. No manuals. You press a button, jump and see how far you can go. The rules of this little universe are illuminated immediately, as you play. Could you imagine if programming were as tactile as that? Try to envision a language + environment that didn't need a manual or any outside documentation. What would that look like?
Difficulty is directly tied to the length of the feedback loop, multiplied by the number of input factors (dimensions). It also depends on whether the information you receive indicates a clear direction when you screw up. If you get a lot of conflicting information or ambiguity, it's not that helpful; imagine if some PacMan ghosts hurt you while others didn't, but they all looked the same and it seemed pretty random. Pretty frustrating, eh? As it just so happens, programming languages do exactly this shit. It's extremely frustrating for novices.
But keep in mind: software doesn't need to be foolproof. In fact, making foolproof software is extremely time consuming because 90% of your code will deal with edge cases from side effects of side effects messing with other side effects. There is a notion of "acceptable failure" that should be embraced, so long as the cause is made clear and it's easy to CTRL+Z out of it. User error is a perfectly acceptable scenario if the feedback is clear and immediate. You don't blame the designer if Mario falls into a pit; you were warned.
We usually mean "visual artist", but there's very little distinction between an artist of that type and a scientist or engineer of the highest caliber, and I've never had a distinction in my mind between those two types of people.
They've just been to me people who pursue different paths but basically kinda headed for the same goal ... which is to express something of what they perceive to be the truth around them ... so that others can see it, so that others can benefit by it.
No ... I think the artistry is in having the insight into what one sees around them, generally putting things together in ways no one else has, and finding ways to express that to other people who don't have that same insight, so that they can get some of the advantage of that insight, which lets lets them feel a certain way or to do a certain thing.
-sj
The next time you build some kind of product (be it software, a physical thing, or even a physical place or system like the NYC subway), try this thought experiment:
All kinds of interesting challenges for makers emerge from the user errors that happen when you're trashed:
Your vision is impaired. on top of that, you'll be a lot slower cognitively. it's hard to read things... especially small labels. Everything is bleary and I can hardly squint. It's such a huge effort so i'm not gonna bother reading them at all and just cross my fingers and hope it does what it looks like. It's good to make the interface as synaesthetic as possible. If I screwed up and forgot to enter something, instead of being like "Enter a date in the third input field labelled 'End Date'" just fucking highlight the thing. Otherwise i'm gonna be like "ok where the hell in this page full of form-fields is that one labelled oh shit i gotta read each of these ARGH FUCKIT RAGEQUIT) A heavy iron gate with a big flashing red sign making scary noises is more likely to make me stop and turn around than some unassuming wooden door with a little "Do Not Enter" placard that takes me five minutes to notice while I'm fiddling with the knob. The more sensory dimensions you hit someone with (color, movement, sound, etc), the more likely it'll register through the noise, and the faster they understand what the product is trying to say to them.
Your pointing and gesturing becomes a lot less precise. You stumble into the bathroom and slap blindly at the wall for the light switch instead of carefully pressing it with one finger. If it has one of those fine tuned brightness knobs? Useless. It's really got only two relevant states now: all the way on or all the way off. It's gonna be really hard to click that tiny little button. TV remote? Forget it. So, you should make control targets nice, fat, and generous. Leave no ambiguity, and make important features especially distinguished. See what exaggeration does...
Because when you're drunk, lots of things start to look the same. These two switches with the same color laying right next to each other? I'm definitely gonna grab the wrong one now. The N, Q, and R trains all have yellow circles for symbols and stop at the same platform ... I just might jump on the wrong one.
You stop thinking and just run on habit. If all the light switches in my house turn the lights ON when they're in the UP position, except the one in the bedroom, I'm definitely gonna fuck up.
So, anyway ... there are even more examples. Next time, just perform this test yourself. Have a few drinks and see if that thing isn't frustrating to use.