Notes On Ken Kocienda’s “Creative Selection” (2018)y


“When software behavior is mysterious, get more organized.”
– Ken Kocienda, Creative Selection (2018)

As a seeker of books about the pragmatics of the creative process, I’m always looking for ways to re-think through making music. I’ve learned from chefs (Ferran Adria), high wire artists (Philippe Petit), filmmakers (David Lynch), architects (Kyna Leski), musicians (Dennis DeSantis), art critics (John Berger), animators (Ed Catmull), inventors (James Dyson), and mathematicians (Nassim Taleb), to name a few. I’ve written about the books of many of these people on brettworks, and I continue to return to their writing because questions of invention and how ideas are ushered to life are fascinating.

With these readings in mind, Ken Kocienda’s Creative Selection is an enthralling addition to the literature on creativity. The book is an inside look at the design process at Apple where Kocienda worked for many years as a programmer—his tenure at the company overlapped with the release of its Safari web browser in 2006 and the first iPhone in 2007. As a member of Apple’s elite and secretive “Purple” design team which developed the iPhone, Kocienda was the main architect of the phone’s touch keyboard and its auto-correct feature. Creative Selection reveals the many layers of decision-making that shaped these and other technological innovations at Apple, whose products creates the sensation that “magic was in the overall effect” (26). In essence, Kocienda has written a field manual for understanding the processes of design and coding as endless refinements of small details towards an end-goal of seamless functioning.

Kocienda and his colleagues evolved an iterative working method which the author refers to as creative selection. The method revolves around making many, many demo versions of software and hardware so that team members can try it out, figure out what works and what doesn’t, and give feedback for improvement. The demo practice always involves four steps:

make a demo,

get feedback,

make changes based on feedback
(often diverging some aspect of the product in the process),

and then make another demo.

“Start approximating your end goal as soon as possible” advises Kocienda. “Maximize the impact of your most difficult effort. Combine inspiration, decisiveness, and craft to make demos” (66).

Creative Selection is a treasure trove of stories about how a programmer at Apple works, illuminating the “long chain linking inspiration to proposal to plan to process to product” (112). Kocienda lets us watch over his shoulder as he recounts developing the code for the iPhone’s touch keyboard and its auto-correct. While typing on glass-faced smartphones seems normal now, in 2007 it was untested. We learn how the virtual keyboard design was the result of numerous rounds of demos in which the Purple team members auditioned various designs and then tried them out on dummy iPhones tethered to computers. What is interesting here is how every design and coding decision was informed by the results of demo sessions. In other words, decisions were always attempted solutions to a perceived problem. The Purple team never worked in the abstract, preferring to use mock-ups—“literally, we had to demonstrate our idea” (128)—that functioned in one way or another. Kocienda speaks of using “vision to spur the actions that create the results” by “closing the gap between the accidental and intentional, to achieve not just a something or even an everything but a specific and well-chosen thing” (112).

What excited me most about Creative Selection is how, page after page, the book inspired a re-thinking of the creative process, and of course, I thought about how Kocienda’s concepts might be relevant to composing music. Kocienda shows the endless problem-solving that programming entails to devise “the algorithmic task” (203) to make software do what you want it to— seemingly effortlessly. (As I typed those last two words, my iPhone auto-correct jumped to life, fixing my spelling on the fly. Ha!) Kocienda describes the lengths he went to in figuring out how to make this touch magic happen. The main tasks were deciding on the size and layout of the keyboard, how it would respond to typing, and the coding necessary to make that work. “I had to constantly ask myself whether what seemed like a good solution to me was actually a good solution. I didn’t know. Typing on a small sheet of glass was new” (160).

With regards to auto-correct, this functionality would depend on how iPhone users type. Kocienda “imagined what a series of keyboard touches to type a word would look like as a picture, a geometrical pattern, a key-tap constellation“ (202). With the shapes of these patterns in mind, he envisioned “a process of building a pattern from the user’s taps and searching the dictionary for the closest-matching pattern from the ideal set (202). The coding or algorithmic task “became finding the keyboarding constellation that looked most similar to the one a superhuman typist would type” (203). With this brilliant solution (illustrated with helpful sketches of the iPhone’s screen), Kocienda narrates his move from the conceptual to the practical. “On a conceptual level, it was about designing the keyboard as a means for people to communicate their intent to the device and structuring the software so it could understand that intent (174). On a practical level, programming for an “excellent user experience was as much about preventing negative experiences as facilitating positive ones (167).

Creative Solutions has plenty of stories like this that get you thinking about the iterative nature of the design process. Within these stories are useful lessons for thinking about creativity in other domains of practice. Here are some of the lessons:

First, make demos—lots of demos. Demos are where you try things out to see if and how they work.

Second, get feedback. Every creative choice should have a reason for being and bring you closer to a desired outcome. “Persist too long in making choices without justifying them” says Kocienda, “and an entire creative effort might wander aimlessly. The results might be the sum of wishy-washy half decisions (184).

Third, the creative process happens in small steps, each of which helps a project evolve into a better working version of itself. “We improved our demos in incremental steps. We evolved our work by slowly converging on better versions of the vision” (221).

Fourth, these incremental steps involve tuning and optimizing (206) details of a product so that it works as well as it can. “No detail is too small” Kocienda says (249). He describes many examples of the programmer’s work, such as:

“rewriting source code to improve the programming instructions, fixing compiler error messages, rebuilding the code, running the program or app, debugging, and then going back to the source code, to make edits and repeat the process over and over again” (74).

Finally, consistent tuning and optimizing eventually coalesce into working solutions. In my favorite sentence in the book, Kocienda sums up the mechanics of these solutions. “The best solutions” he says, “were an accumulation of small decisions carefully weighed against each other as we sought to tame the complexity of so many compounding overlapping factors” (244).

In sum, Kocienda writes with great clarity and humanity and his book is a deeply compelling and accessible adventure that brings the reader not only into the world of Apple, but equally into the thinking of a programmer grappling with coding solutions to complex problems of human-machine interaction. There is a lot of thought-provoking material in these pages about the systemic nature of creativity as a process of problem-solving practiced by technologists, and no matter what your metier, the concepts in Creative Selection have utility far beyond computing.

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s