So I helped my Mom buy an iPhone last week; she loves it! I’ve been teaching her all kinds of things. Wanna hear something funny, though? She actually apologizes to Siri!
So said a friend of mine one afternoon over coffee, giggling over how much fun her mother was having with her new, “magical” device. As she went on, excited about being able to FaceTime with her and send pictures from around Kansas City, I paused.
She apologized to an app? Out loud?
It shouldn’t be a surprise to induce that kind of reaction from an Apple product: they certainly do a lot of research to make them as approachable as possible. So why would I be surprised that someone would actually apologize to this very life-like entity in their phone for not speaking clearly enough it would understand?
It’s not like Apple wouldn’t prefer this reaction. A look at some of their advertising confirms it.
Yet I can’t really call Apple to the carpet here. As a software engineer, I take a great deal of satisfaction from the exclamations of “WHOA! How’d you DO that?” and “I didn’t know that was even POSSIBLE!” Even my mother loves telling people I “make magic with a computer”.
But I’m beginning to believe it’s starting to make our work much, much harder.
Writing Software: Art or Science?
When I worked at Cerner, the CEO, Neal Patterson, would love to ask a roomful of software engineers and architects a simple, but provocative question:
“Is writing software an art or a science?”
The resulting discussion would be lengthy, philosophical and lively. It was always interesting how people would lean one way and then the next… but an hour later everyone would agree: it’s both. Writing software is as much Art as it is Science. The most common praise between code authors involves how fast or well something works… but there’s more to it than that.
A computer science professor of mine would give ten points for assignments: one point if it worked, two points for the exhaustive test plan, and the remaining seven for what he called “elegance“. I’ve heard code likened to poetry, sonnets of instruction that ebb and flow down the page, much like any spoken language. Anyone who writes it can tell you code can be as beautiful in structure as it is in functionality or performance. Yet unlike literature, it can never just “be”; it is constantly revised, picked over, elevated, shunned, taken as gospel.
And thus, painstakingly and lovingly revised, the software is loaded onto devices all around the world. This is where it gets fun, as it begins to take on a life of its own. Users begin to “play” with it, using it for it’s intended (and, if its good, unintended) purposes. And it is upon these peoples’ reactions that the fate of egos, careers, (and, really, dreams) lie… that’s a lot of pressure.
So it comes as no surprise to me that we take advantage of this “magician” status. In this technology age developers are constantly sought out: founders seeking “technical co-founders”, start-ups seeking “hired guns”, recruiters shamelessly flooding LinkedIn with monikers like “ninja”, “jedi”, and “rockstar”.
Thankfully, with some exceptions, developers I know don’t seem to be easily taken by hubris. Most are just in love with their work, solving problems, contributing to amazing communities, creating out of sheer will… basically artists in the medium of computer science. The delight and awe from people is what we love, and the Merlin/Yoda perception is just a perk.
But indulging in this perk is a mistake.
A quick dose of perceived reality
When I started working at Facebook, my world was quickly enveloped with the reality of the “Social Graph”. Suddenly I could see just how powerful a click of the “Like” button could be. I wasn’t just telling Facebook I liked an author: I was connecting myself to a branch of a system that could then intelligently connect me elsewhere.
Sure, people have heard the term “Social Graph”. I mean, Facebook launched “Graph Search”, which began answering all kinds of really interesting, (and some believed, creepy) questions about their Facebook.
I diligently answered all of my friends’ questions about it, but then I began asking a question in return: what does your Social Graph look like?
Some would try to describe a network of entities as dots and lines… but the most would arrive at something different. The most popular was a two-axis line graph of connections and friends over time. So here we have a computer science data structure, elevated out of code and into the real world. People are building out an incredible network of information…
…and yet most don’t understand why or how it works.
But it goes much further than that. I had a friend reach out to me, convinced that a former boyfriend with lots of money had hired someone to hack her Twitter. She was sure that there were “programs out there” for which you could pay as little as $50 and take over someone’s account. I sent her a link to Twitter’s phishing scam FAQ and told her to email their support team. Her last reply:
We know it’s him, we are just trying to figure out how this guy is doing it… I can’t believe Twitter can’t fix it!
If you’re at all involved in the software industry, this should be setting off as many alarm bells as it did for me: why would a simple case of phishing be elevated to a hacking conspiracy? More importantly: why is it one where the blame ultimately falls at the feet of the service provider?
I believe the answer is simple: when someone uses magical functionality, they expect the magic to protect them as well.
Art becomes Sorcery, Science becomes Alchemy
When someone buys a lawnmower, they understand at a basic level how it works: gas engine, spinning blades, cuts grass. And the manufacturer includes a manual with plenty of warnings and are thus released from any liability of damage or injury… but they might as well leave it out. Your car breaks down on the side of a highway? You pop the hood and take a look inside. Why?
Because at the most fundamental of levels, you understand how these things work. You put in gas, that gas burns, exhaust come out the back, and the wheels turn. Television, radio, satellites, GPS… we grasp these concepts at a basic level. No magic there. This carries with cars, microwaves, firearms, checking accounts… these things are fundamentally understood from common experience.
At 16, I bought a 1988 Grand Am for $2000. As with any car that age and price, there was an expectation that it would “need a bit of work”. In the end, it turned out to be one of those high school cars to which you simply added oil, rather than change it.
Among other things, my father and I had to replace a portion of the engine block. Rather than spend a lot of money on a service shop, we bought a Chilton Repair Manual, a comprehensive book of instructions for the car from bumper to bumper. In the end, I provided its pages with plenty of grease marks and it provided me with plenty of saved cash and experience.
The only software that comes with a Chilton manual is Open Source.
In the world of technology, we’re driven to make it simple to initiate and then as easy-to-use as possible. Once the user is engaged, the focus shifts to “customer support”: phone banks, online documentation, bug reports and forums. This is the status quo, (and an expensive one, at that).
It’s not that our industry is negligent, or lazy. On the contrary, software engineers are diligent, trying to solve a range of user problems as they would any other problem: with software. Indeed, larger and larger proportions of programs are allocated trying to detect problems, missteps, confusion or attack from users. If you click “Send” on an email to your mother about your son’s “attachment to his blue blanket”, Google Mail will warn you your message lacks an attached file.
Software understanding its users has trumped
users understanding their software.
And because of this, software becomes sorcery. Harry Potter becomes real life: consumers are muggles, reliant on the wizards who conjured these amazements to keep our world working, (and safe). Only those who have raw talent, nurtured that talent, trained, dedicated their lives to these magical constructs know for certain how they work.
How many movies or television shows have used nebulous software concepts as either hero or villain in their plot? In some like-our world, an evil geek in glasses unleashes some 3D hydra virus upon a banking network, stealing billions. Elsewhere, like the Deus ex Machina of ancient Greece, fast hands over a keyboard in the FBI office by some geek in glasses overcomes evil.
Honestly, it doesn’t take much to suspend disbelief. Take this clip from a popular television show, depicting a world where two people can type on one keyboard, and unplugging a single terminal stops a network “hack”?
I believe educating people on the fly, only as necessary, has led to distrust, more expensive support, and diminished demand. Further, it has caused a reluctance to be open, both from people to try new services and from services who don’t want to harm the trust they’ve built thus far. I think it’s time we bring the software systems we use, including their development, support, capabilities and limitations, beyond their meager support systems and into greater public (and social) awareness.
The New Perk
Imagine if people had an opportunity to understood software better at a fundamental level?
That Siri isn’t some magic assistant in a phone, but is really a Internet-powered vocal-recognition engine with a well-seeded database of responses?
That a cable modem gives a unique “phone number address” that is public, so it’s safer to have an internal set of numbers with Caller ID?
That “the blue E” is not “the Internet”, and there are other windows through which to view the actual Internet?
Wouldn’t this lead to the contracting of this “infinite possibility” and thus, “potential evil” of the software world? That granting a video service access to your graph means not having to watch an advertisement for a steakhouse when you’re a vegetarian? That the word “privacy” is no longer as black and white as what’s written in your diary vs written on a billboard?
Wouldn’t understanding software lead to people being better equipped to recognize problems? That a site promising free music wants to install something you don’t recognize? That a Nigerian prince sitting on vast wealth plucked an email address out of thin air? That the person trolling your blog didn’t drop fifty bucks on some program to hack your Twitter account?
Two things happen: support infrastructure is relieved of stress, and savvy users are better equipped to tell you what they want.
Sure, we may lose a bit of our magical personas. But I think it’s a small price to pay.
How do we do it?
“Never oppose if you can’t propose.” It’s a great mantra for software development, and it’s one I’ll hold here. I’m supporting four solutions that could lead us to a better ecosystem.
More Open-source Initiatives
For end-users, more open-source software means greater transparency and more understanding. Knowing that your favorite iPhone app isn’t hundreds of thousands of lines of code that doesn’t transfer your contact list or bank information to the developer should be a fact easily believed. Public, readable code can help.
Even though consumers don’t care to know how their favorite sausage is made, they have a very good idea already. This should be the case with software.
Product marketing still serves as the biggest instigator of a product relationship. Not only should they and their materials be well-versed in what the product is (and isn’t), both should resist the temptation to cast their products as “mystical”. Leaving the details to the user manual, (which, let’s face it, most people ignore until they have a problem), will only lead to frustration.
Users should be more delighted and amazed by how well it works and less by that it works.
Creating a Resource for Popular Culture
Sources of entertainment can be more effective in education than any textbook or manual. Case in point: some tourists ask to see more info on Jack when they visit the Titanic museum.
Therefore, I believe providing writers with a credible source of information and “tech fact checking” could be a useful tool. It could help to keep plots involving software and technology more “in the clouds” of the possible, rather than in the stratosphere of the incredible.
I want to launch a new .org website to curate and collect “tech facts and stories” for the entertainment industry.
Creating Popular Culture
My last suggestion is perhaps the most ambitious of all… but as a software engineer with a background in theatre, I had to list it.
I’d like to pitch a television series in which the first 15 minutes is used to describe a common technology and how it works. This could include little-known facts, detailed descriptions and how to use it properly and safely. The remaining 45 minutes would be a guest-written and directed comedy or drama in which the tech is prominently featured.
By making technology the focus instead of the foil in a popular culture context, people might gain better understanding of how it works and fits in their lives.
These are the first four ideas I’ve had. I’m still working to create more, and other posts on this topic. In the meantime, I welcome your thoughts!