Ellen Ullman: We Have to Demystify Code (2017)
lithub.com
lithub.com
“We build our computer systems like we build our cities - over time, without a plan, on top of ruins.” — Ellen Ullman
…and was prompted to search the web for the author. Wasn't at all disappointed when I read this interview, and decided to share.
There other planned systems like those: The seven layer model, x500, SOAP, WSDL, etc.
Complex systems are best built iteratively. You start small, plan, test, make things work well, and then continuously improve, clean, and polish over time, with a focus on maintainability, otherwise known as "this thing is easy to change"
Bigger systems are made out of smaller systems that are, themselves, built this way.
The clean-and-polish bits are critical. The issue with most software is that management at most organizations only focuses on "move fast and break things" and fails to reward -- or actively penalizes -- maintainability.
> We build our computer systems ... over time, without a plan... - Ellen Ullman
"A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system."
See: https://en.wikipedia.org/wiki/John_Gall_(author)#Gall's_law
In turn, this implies that a working (or, to my way of thinking, running) complex system can be created from scratch, but only if you deliberately create the simpler system it bootstraps from. This makes "creating a complex system" look more like biological reproduction.
With that in mind you start to see echoes of this constraint all over the technology ecosystem, like new programming languages piggybacking off of another toolchain until they can self-host.
"Nah, you're assuming too much. Protobuf was thrown together in a fairly ad hoc way by a couple (brilliant!) engineers (Jeff and Sanjay) to help make the Google search index protocol easier to maintain. The specific design decisions in Protobuf were not carefully tested or weighed against other possibilities. They just did something that worked well enough, and it worked well enough that it was rapidly adopted by the rest of the company. It was then too late to change anything." [0]
Similar story with the decision to utilise tab characters in makefiles:
"Why the tab in column 1? Yacc was new, Lex was brand new. I hadn't tried either, so I figured this would be a good excuse to learn. After getting myself snarled up with my first stab at Lex, I just did something simple with the pattern newline-tab. It worked, it stayed. And then a few weeks later I had a user population of about a dozen, most of them friends, and I didn't want to screw up my embedded base. The rest, sadly, is history."
Of course, completely rational city planning is a failure and the only ones people like were built before urban planners and zoning were invented. So far this hasn’t stopped them.
I don’t know. My father spent his career as an Urban Planner in a Planning Department (in Ontario, Canada), and he never had the power to remake cities that you’re alluding to.
Mostly his job was to do studies of proposed zoning changes of land use and the impact, and make a recommendation. The recommendations were presented to the Planning Board at public meetings.
The board meetings were, of course, part of the larger democratic process, and were just as subject to popular whims as any other parts of government. Landowners and developers had a huge amount of influence, and worked hard to get their projects approved.
I think the “Urban Planners did this” is mostly just a deflection (in Canada and the U.S. at least.) I point to the “smart neighborhood” that Google and the Province of Ontario (on behalf of developers) were pushing hard for in Toronto a few years ago [1] as a more visible example.
patio11 has even written about this process, more from the developers side. [2]
[1] “Sidewalk Toronto” https://en.m.wikipedia.org/wiki/Sidewalk_Toronto
[2] “Dad’s war stories (commercial real estate). https://twitter.com/patio11/status/1389688784569073664
But that's the bad part - there shouldn't be zoning or planning boards. People who want to have opinions here should keep them to themselves instead of being able to enforce them; they're the reason for the US housing crisis and nearly everything else. Of course, there's a few more reasons like property tax systems (CA's encourages keeping old single family homes) and paranoid fire codes (which cause giant streets in the US so our giant fire engines will go down them).
If you're reading patio11 you'll probably know that Japan does everything right here by having national zoning where cities aren't allowed to stop you from doing anything.
https://twitter.com/McReynoldsJoe/status/1525326684374941696
As a result Tokyo is still livable, cheap compared to US cities, and a house in Japan is affordable because it depreciates like a car rather than being your main retirement asset through land hoarding.
By contrast, cities are reasonably good at setting, adopting, enforcing, and evolving standards of various sorts (curbcuts, signage, building codes). The story of the past few decades has been efforts to bridge the gap to slightly larger patterns at the level of streets and neighborhoods rather than leaving that largely to a minmaxing process that litters our cities with endless small and medium tragedies of the commons (eg. giant parking lots surrounding isolated fortress-like stores, office blocks surrounded by blank-walled alleys, or suburban cul-de-sacs forcing long circuitous routes that require a car to get anywhere).
Yeah... Modern, already existing, cities. That's not how cities are "built", in the sense of a city coming to exist where a city hadn't existed before.
Airplanes crash, money is lost, data is stolen but nobody seems to care.
So we will keep winging it.
If you think that nobody cares when airplanes crash, that signals that you likely want to:
1. Re-evaluate the evidence. Boeing was fined $2.5 Billion[1] over the MCAS debacle after it was a major news story.
2. Talk to someone about burnout. Cynicism is one of its major symptoms[2].
[1] https://www.justice.gov/opa/pr/boeing-charged-737-max-fraud-...
[2] https://alifeofproductivity.com/remember-burnout-and-cynicis...
It seems like the word “formal” impresses people too much.
Worse than that.
Usually, it only proves that a simplified version of the code satisfies to some extent a translation of the spec to some formal language. And "prove" only means that some rather buggy tool printed "Valid".
Every point in this chain can and often does introduces bugs.
However, this does find real bugs in the code, and formalizing code and specs require people to think deeply and formally on aspects of the problem.
It just doesn't prove the code to be correct, or even that it satisfies the actual spec.
I also liked the interview posted by OP, it summarizes her opinions in a slightly different format. I somehow managed to miss it when I searched for interviews with her after reading the book. Thanks OP!
Things from the book that reverberated with me:
- Her relationship with her father, how she wrote some code to help him with his business. This mirrors a very similar experience I've had, writing simple applications for my dad during junior high and high school to help him with various things for his job. That was a sort of bonding between us.
- Her work in IBM, and how soul-crushingly it was, also reminding me of my first few months in a "real" job.
- Her work in a sort of artists' collective as a young woman, and how they slept in a remote farm and helped the farmer there. Which is wholly different from my own experience and therefore like a peek into a distant world, and yet very real.
- Her fluid sexuality - she had a girlfriend but is now married to a man, which the book mentions in passing but doesn't make a great deal of, which I found refreshing.
Edited to add: - Her descriptions of how San Francisco has changed over the years by the technology boom and bust cycles.
- How she almost became one of the first employees in Google because Larry Page was interested in her opinions.
And that quote from this book already referenced in a sibling comment, “We build our computer systems like we build our cities - over time, without a plan, on top of ruins.”...
That quote also affected me deeply since it has a deep connection to my day to day work. For the last decade I've been part of a changing team, maintaining a big sort of internal legacy system, that is sort of mission critical, which started as a messy semi-personal project years ago, and then grew and grew to the point where no one knows it all.
I've printed out this quote and hang it above my desk. I don't explain it to people, but the ones who bother to read it nod their head in understanding.
[1]: The original was posted on Google+ and is, of course, long-since gone. Wayback machine also doesn't seem to have captured it, but I found https://josh.works/dizzying-but-invisible-depth, which matches what I remember.
Of course, the general public talks about "a gene for intelligence," which is about the level of insight we can count on if we demystify code.
A better analogy is probably something like "demystifying music". Not something that everyone is into by any measure, but certainly there are more people around who "get" music than there are musicians who make music, and there are accessible and approachable entry points for people to learn a little or a lot without obscurantism. There are of course people to whom music is just noise, but they are a tiny minority. There may be an equivalent tiny minority of normally intelligent adults that are incapable of computational thinking, but I haven't seen any evidence for it (dyscalculia isn't it any more than dyslexia is).
On the point of music, just like some chemicals react to light (serotonin blue light) or darkness (melatonin), and some react to heat more than others besides the obvious reaction to other chemicals in the body, I do wonder if some chemicals react to sound to stimulate the release of (nora)adrenaline and dopamine aka the catecholamines. Certainly infrasound increases anxiety and we get this around earthquakes which can affect the vision I think, based on my own experience of seeing walls going flexible in a (minor) earthquake whilst the logic side of the brain kept reminding me the wall is still solid as they have not broken apart and not liquified in any way.
The Rube Goldberg chain reaction that turns minute variations in pressure upon skin into an interpretable sensation of texture is mind-blowingly difficult to imagine.
https://www.nytimes.com/video/science/100000002588110/rube-g...
Edited to add: and I AM aware that much of the "over complication" affords opportunities for positive and negative feedback loops that subject a pathway to external control of various sorts and variable expression in different conditions, cell types, and tissues.
Ullman spends a lot of time talking about Conway’s Game of Life and I’ve regretted not spending more time playing with it IRL.
Is it any surprise the code we right at the direction of these organizations does the same thing?
In other words, I don't think it's our relationship with code turning us into automatons. I think its our relationship with each other that pushes both our organizations and our code into those paths.
Good luck with that 'new army' thing.
You can hear the calls growing daily, in the EU, from Elon Musk, and from the political classes: "make the algorithms public."
Reality check, coming right up.
I agree it sounds hard, but why give up? Code is written by people, for people—the current unaccountability that these algorithms possess isn't part of their nature. It's a choice that people have made, and in the future, people can choose—or be forced to choose—differently.