A few weeks ago I read a letter called Please Don’t Help My Kids. This excerpt resonated with me:
It is not my job … to prevent my children from feeling frustration, fear, or discomfort. If I do, I have robbed them of the opportunity to learn that those things are not the end of the world, and can be overcome or used to their advantage.
Doing something the first time is a challenge. I have 2 young kids, and I watch them struggle with the most rudimentary things. Eventually they figure it out. Usually it comes with tears and pleading. But that’s how they’ll learn to do the next thing. That’s how they’ll get the confidence to take on the next challenge. That’s how you level up.
Learning to program
I was fortunate enough to take a programming class at The Starter League last fall. The word on the street is Ruby on Rails (the programming framework we used) is so easy: “You can make a blog in 5 minutes.” Jeff Cohen and Raghu Betina are amazing teachers. They taught me that, yes Rails is easy, but first you need to feel frustration and discomfort before you can really learn.
The first four weeks of class was comprised of handwriting Ruby code without Rails. It was frustrating because “I thought I could do this in 5 minutes.” Maddening because “I have to do this every time!?” Enlightening because once I learned about what Rails did (after 4 weeks), how it worked with Ruby, my mind was open. I was like Neo in The Matrix when he sees the world decoded.
Make it “idiot-proof”
Are we doing ourselves a disservice by building conveniences into our products? As makers we’re always trying to add convenience for customers. We all try to build features and products that lessen friction.
We never stop learning after childhood though. Maybe things shouldn’t be too easy. Friction is good. That’s how we learn.
Is idiot-proofing for idiots?
At CES earlier this month there were cars that drove and parked themselves. That is truly amazing technology. First you had to shift your own gears with manual transmission. Then automakers created automatic transmission. The car knows when to shift. You don’t need to think about it. Now they’re developing self-driving cars. They’re making cars idiot-proof. Consider a generation that will never know how to drive a car.
I took a road trip last summer. Against my better judgement I took a sketchy dirt road because my GPS navigation told me to. I drove for what seemed like hours down a dirt road not knowing where it would lead. If I had read a paper map I would have discovered that the road I was driving on was taking me a few miles away from where I wanted to go.
What’s the perfect balance for making things easy, but still difficult enough to make it a worthwhile experience? Is idiot-proofing for idiots, or am I an idiot for thinking so?
Peter Hentges
on 30 Jan 13Another way to think of idiot-proofing is that it is selecting for a different set of skills. In the car example, we move from needing the knowledge of gearing and the physical coordination for a manual transmission, to no longer needing that knowledge or physical ability with an automatic. The shift (no pun intended) allowed a new group of users to operate a car, expanding their popularity. A move to driverless cars that can park themselves similarly removes another set of skills from those required to operate a car and makes the audience for those using cars even broader. (As our nation ages, how many seniors would maintain independence longer with a driverless car?)
In each case, there are also advantages to retaining and using the knowledge for earlier generations of automobiles. But such knowledge isn’t necessary for the key aspect of what the car is for: getting from point A to point B. So in deciding how to construct an interface, one must be aware of the assumptions one is making about the skills necessary to accomplish the task and weigh that against the need of the audience to complete the task.
Doug Johnson
on 30 Jan 13There is no right answer to the question of whether idiot proofing is good or bad. Is it necessary for people to learn to drive cars in the future? The answer to that will be the same as your answer to whether or not it is OK to step on an airline flight if you haven’t learned to pilot the airplane.
While I’m all for letting people learn to do pretty much anything they want to learn and are willing to put in the work for, it doesn’t follow for me that we are doing them a disservice if we make things idiot proof for them.
Many people just want to get the job done. They don’t want to futz with the computer, to have to figure out a bunch of arcane commands and keystroke combinations, they just want to have their computer be idiot proof and let them get their work done.
The reason why we are concerned about making things idiot proof is because it puts the onus on us (yes, I’m a professional software developer) to actually do our job…perfectly. If the software we write is truly idiot proof, then the need to learn using software as a skill wouldn’t come up…just as, someday, learning to drive a car will seem to be something that only historians and reenactors would be interested in. “Hey man, this weekend I was out at the old shopping mall, you know that big flat space, and there were people dressed in old clothes and actually making their transports go where ever they told them to. They even had this competition thing called “parking”, whatever that is. Weird.”
The struggle is part of the process of learning, no question. But if the thing being learned is only to overcome the obstacle that some arbitrary set of steps has placed between us and accomplishing our REAL goal, then I vote for idiot proof every time.
Vincent
on 30 Jan 13I do like idiot-proofing.
First, because it helps buildings things for “people that have better things to do with teir lives”. I really thinks it siply makes the world a better place.
Second, I once read an article about how Ruby is the perfect language to learn programming. Why? Because it is not low level enough (like Assembly or even C) to have to think about small details, yet it is not high level enough (like Lisp or Haskell) to be able to understand its concepts from scratch. Learning requires to dive into the work and get results. Later, you can then dig further into the details and think about the high order problems.
Matthew Carriere
on 30 Jan 13Another apologist for how difficult Rails has become… these posts are starting to sound like Microsoft Evangelists wrote them…
“Its a difficult problem so the solution is difficult.”
Give me a fucking break.
Rails 2 was the best release of the framework. It has become more frustrating, irritating, and difficult with every release. Software development SHOULD get easier. It kills me what’s happened to this framework – it was so great.
Want to know how embarrassing Rails is? Take a look at SharePoint. Yes Microsoft SharePoint. I do a TON of that development (in addition to open source) and somehow with a bloated and insanely complicated product – they have made development EASIER-FASTER-BETTER in 2013. We are blasting out SharePoint applications faster than we ever have on our team. I used to lose my shit with how bad the SharePoint development experience was. It got easier. Microsoft made a product easier to develop for.
That’s how it should be.
Keep drinking the kool-aid. Rails WAS awesome. Its a cluster fuck now.
And if you should have checked a map instead of used your GPS then you have a shitty GPS. The entire GPS concept isn’t flawed.
Idiot proofing is not for idiots. Calling it that is. Its called usability.
Welcome to 2012.
Alex
on 30 Jan 13It’s always good to know more, but I don’t think it’s worth worrying about too much in the abstract. There are thousands of skills that the vast majority of people, at least in first-world countries, no longer possess: just about everything related to producing food, clothing and medicine, for instance. Is that a problem? Maybe. It’s hard to know what skills, specifically, we should know more of, and there’s no way to learn them all.
Gavin
on 30 Jan 13I think any discussion of friction has much to do with the level of acceptable friction and context. If a child slips and skins their knee, then that will heal and a lesson perhaps is learned. However, if the force of friction is improperly calculated in a rocket launch, many millions of dollars can be lost.
In development, we don’t need to add friction to the mundane and the routine. I do not need 6 questions asked in the creation of a table if all I want is the basic default view. It may however be useful to explain friction when the damage is large-scale, irreparable or seriously affects others.
Chad Burt
on 30 Jan 13Good ideas, but I think the car example is a bad analogy. People use cars to get where they need to go. I have a manual GTI and I drive for fun too, but that’s not the norm. If 90% of drivers could just get where they need to go and carry on with their laptop in the meantime that would be great.
Rails and web frameworks are different in that a serious developer needs to know a lot in the long run about their tools to be effective. Is Rails for serious, large-scale projects? I’d expect so. That doesn’t mean there should be a high barrier to entry, but there should be the balance you discuss in the post to maintain a system than encourages further learning.
In contrast, cars aren’t built to allow for some significant portion of drivers to eventual start driving professionally. Those people can start with kart racing instead.
David Andersen
on 30 Jan 13Making tasks easier is both so non-experts can execute those tasks easily and correctly and so everyone can spend their valuable time on more important activities. Learning to do something the basic/harder way has its valuable purposes too, but not as a way of life. The last thing I want to do is milk a cow every morning or shovel coal into my basement. Good on the guy, however, who considers milking his cow every morning a more important activity. It’s different for all of us.
F
on 30 Jan 13Idiot proofing and automating are not the same thing. It’s great when we can choose if we want to think about something or not. I can certainly go buy a manual transmission car if I want to. But I look forward to the day in every sphere, including cars, that I don’t have to think about things unless I want to. I have too much on my mind anyway. As life has grown more complex, our ability to use technology to simplify hasn’t kept up.
If we’re idiots, it’s because we’re managing too much, not because we’re managing too little.
And your GPS just sucks. There’s no reason why GPS can’t be accurate, much more accurate than you navigating with a map.
David Andersen
on 30 Jan 13The linked letter, btw, is excellent and not about idiot-proofing at all.
Phillip Birmingham
on 30 Jan 13In development, there is always something new to learn, and we all have some limit to our cognitive bandwidth—we can only learn so much so fast. There’s always going to be a tradeoff between learning the underpinnings of your field and learning the practical stuff that allows you to get things done.
I don’t think a developer would be shortchanging herself by going straight to Rails any more than you did by skipping C (or assembly language, though that is a weaker analogy) and going straight to Ruby.
Uzo Olisemeka
on 30 Jan 13Interesting.
I think the original post and discussion is missing an important perspective: context. It’s an important factor in determining whether idiot-proofing is for idiots. Or not.
As a new-ish developer I’ve managed to stay away from frameworks (and to a lesser extent libraries) because my strongest asset as a creator is an intimate knowledge of my toolkit. It allows me to know what is / isn’t possible, what the inherent limitations and best use-cases of my tools are, thus letting me know what I can take on with reasonable accuracy. Not that it’s impossible with frameworks (in fact, many will argue the converse is more right than wrong) but the temptation to promise to deliver what you’ve HEARD your framework can do is nil. You avoid situations where you’ve collected money and you get that moment of clarity where it’s obvious it will take longer than you thought to mold your framework’s offerings to what your client needs. When your job is to turn abstract ideas into tangible results/products, knowledge is where the true value is. Idiot-proofing promises you expert-level quality at beginner-level understanding and we know this to be untrue, regardless of discipline. Idiot-proofing is definitely for idiots in this context.
As a consumer, you aren’t charged with the responsibility of quality assurance. The limit of your interaction is an opinion: recommendation or disapproval. There’s no accountability, so how well (or badly) you consume is unlikely to turn the spotlight back on you. I don’t need a chef’s level understanding to enjoy (or dislike) a meal. For the purpose of consumption, idiot-proof is genius. It allows people to enjoy things without the proper level of understanding of what it took to get there. I love public transit: the price-point and convenience is perfect for me. I don’t need to understand urban planning, traffic flow, the mathematics of how many people it takes to make a route profitable, the compensations one needs to make between city-wide coverage and investing in profitable routes. I just tap my NFC payment card and get going. They’ve done the hard work and reduced it to a simple fee of $3.25 per trip. Getting around my city is idiot-proof, and I’m eternally grateful for it.
tldr version: Idiot-proof is perfect for consumers and terrible for creators. It’s crystallized in advice most entrepreneurs will get at some point in their journey (and would be wise to heed): “Outsource everything but your core competencies”.
That’s simply because you’re a consumer everywhere else but what you require for your service. In that, you’re an expert and you need as much knowledge there as you can afford.
John
on 31 Jan 13We are all idiots from time to time, who hasn’t skipped through a wizard only to realise that the options chosen were not what we though? That’s why a certain amount of idiot proofing is necessary.
But I do agree with you. There is a point where idiot proofing becomes counter productive. You’re never going to have enough idiot proofing for a really determined idiot, but it’s a lot easier to build in enough for the occasional, accidental idiot.
Jim
on 31 Jan 13People always choose simple path, quick and easy. Sometimes they don’t enjoy the process.
It’s very different from our GOD. Create our world in 7 days not 1 seconds, even He could so
Jamie
on 31 Jan 13There’s some great discussion going on here. Thanks for sharing your thoughts.
Regarding the car example: I think Tiptronic is a perfect solution for offering some friction to learn more.
It is pretty fun to drive too. :P
Dennis Eusebio
on 31 Jan 13There’s a concept in gaming where really great games are easy to get into, but take time and effort to master. So the majority of people can enjoy the core awesomeness of the game but those who choose to can take things to this ultimate level can unlock more enriching experiences.
I think the things we create can be designed in the same way.
To think that we should design cars that make sure everyone knows all the inner workings is assuming that everyone has the same motivations for buying a car. Some people love these things and want to be more involved (I’m in that camp), but some people just want to get to A to B without ever thinking about a thing. But in other areas of my life, for instance say thermostats, I’m fine with letting it do whatever the hell it does so that I don’t have to think about anything and everything hvac related.
We all only have x amount of focus to give to things so that level of engagement should be applied to a small amount of things we choose to be passionate about. If everything we ever used was as involved as say the first automobile, we would all be wasting time on so many things that just don’t matter to us.
GeeIWonder.
on 31 Jan 13Idiot-proofing is good where it add resilience, and bad when it removes it.
Idiot-proofing is bad where it shifts but does not reduce the consequence of a point of failure. Because the known unknowns are easier to deal with than the unknown unknowns or something like that.
Idiot-proofing is good where it is used towards incremental innovation and implementation, and bad where it becomes the main feature. The scaffolding is not the point, the arch is.
Dan Lombardi
on 31 Jan 13Some things should be idiot-proof, like operating an elevator, using the remote for a TV, making a call on my smartphone, and setting my programmable home thermostat. There is no value for knowing the inner workings of these things.
Critical thinking tasks should not be idiot-proof. Writing an effective email or a novel, reviewing a contract, playing an instrument, making hiring and firing decisions, teaching a child how to play a sport. These are tasks that are devalued and made less human if we try to make them idiot-proof.
We need to be able to push a button to have some things done consistently, efficiently and properly. Not everything should have a button, though.
Chris Berkhout
on 31 Jan 13Forget about “do make things idiot-proof” vs “don’t make things idiot-proof”...
Instead, “do simplify”, and “don’t over-simplify”.
Assaf Lavie
on 01 Feb 13The answer is everybody is an idiot, sometimes.
Some very smart people can sometimes be confused by pretty simple interfaces. It’s all about their expectations and context in that moment. Making things idiot-proof doesn’t mean you think less of your users.
cfafxuud
on 02 Feb 131
This discussion is closed.