When a designer sits at their CAD software or Wacom tablet to work on a tool or a website or a product, they begin with a blank slate. What will I make today?, they ask themself. Their ideas flow more or less smoothly into mockups then prototypes then reality. Responding to a discovered defect or changed requirement means tweaking the design, propagating the change to any other affected systems, and producing a new iteration.
Urban design isn’t like that. A city is a hundred thousand interlocking systems, a cacophony of needs and actions and ideas butting heads with one another. It’s not possible, at least not yet, to understand everything at once. And there’s no such thing as a blank slate. Making a change to a city is necessarily a speculative one; there’s no way to know everything that will be affected by building a park here or changing that street to one-way, until you do it. Even then, was it really that change that had that effect? Or was it a change in the housing market? Or the re-zoning in the next neighbourhood over?
As a programmer and amateur game designer, that kind of task seems maddeningly impossible to me. How can you get better at something if you can’t readily observe the effects of the changes you make? How can you design something knowing that you definitely don’t understand even half of how the whole system works?
Of course, building software is hardly different. As authors of software, we regularly build and interact with systems that are mind-bogglingly complex, have unpredictable behaviour, and which we can barely observe. We often have no idea what effects our software will have in the world, how it will be used, or what it will mean for those who use it. But somehow we’ve arrived at a conception of our work as controllable, which allows in the idea of perfect.
It seems to us that we can control every aspect of our software—we can change anything about it, make it behave in whichever way we desire. For me at least, that’s a big part of why I take such joy in writing code: it fits inside my head, I can understand it and control it and shape it to my exact specification. But that perspective leaves out everything that’s outside the software, it leaves out the world in which the software exists, it leaves out the player of the game, the reader of the email, the user of the tool.
Urban designers are not prey to such an illusion. They are daily confronted with the imperfect, the incomplete, and the unknowable real world. Works like Alexander et al.’s A Pattern Language are a marvel and an inspiration to me—it’s amazing to see such clear thinking in the face of the blurriness of reality.