I never thought I’d know how to code. Although I am a software engineer now, I studied history and literature in college and took a job in marketing after graduation. Working at a tech company made me hunger for engineering skills, so I resolved to learn programming.
Fast forward 14 months. I’ve just started an engineering role at Uber Eats, and I see a chat message flash across my screen from Angus Croll. The name rings a bell. Could it be the author of my first and favorite software book?
Have you always been a reader?
Yeah, I’ve always been really into literature. I probably prefer reading to writing code—I kind of ended up in software by accident.
How was your software career an accident?
I like it for its flexibility and its quirkiness; even though the syntax is really quite straightforward it can be adapted to multiple approaches: functional, objective, and procedural. It is common for one module to combine several approaches. Kind of like English or other spoken languages, you can get by with a relatively small vocabulary, and yet it’s highly expressive and continually evolving.
It took a while. When you’re learning a language for the first time, and I’m sure you’ve felt this, you tend to be in panic mode. You think, I don’t really get this and other people do, and that’s stressful, so it’s not the time to experiment. When you first learn a language, you just want to be able to write it the same way other people write it. It’s like speaking a foreign language—you just want to fit in. But, after a year of working in a language, you’re comfortable enough to start getting creative.
So those two things, diving deep into the language and learning to think about it for myself, made me realize there’s a rich vocabulary out there that’s not being used to its fullest.
How did those experiences lead to the book?
I wasn’t actually doing it— it was just an idea I’d been thinking about on the way into work, wondering if it was doable. But Jacob loved the idea and encouraged me to write a blog post about it. Over the next few days I wrote and rewrote the Fibonacci algorithm until I had something that resembled the style of Hemingway and several other authors, mostly the ones in the first chapter of the book, and published it as a blog. The post was hugely popular and even got mentioned in The New Yorker.
The book presents canonical algorithms as if they had been written by literary greats. Who were the authors whose styles were the most joyful to write?
Were there any authors whose styles just didn’t work out?
The Russians: Tolstoy, Chekhov, and Gogol. I really love their writing, but they were just too hard because they’re quite subtle. It’s easier to mimic authors with highly distinct styles. Tolstoy and Chekhov definitely have their own styles, but they’re harder to nail, and I felt I didn’t have the skill to translate them into code. Toni Morrison was another author I spent a lot of time trying to get right, but ultimately failed.
What’s the reception of your book been like? Who have you seen that has been most excited about it?
I thought interest would mostly come only from the coding community, so it was exciting that it generated so much enthusiasm from people who don’t have a coding background, like the many people with a humanities background who have felt shut out from this whole tech thing. There’s this tech exceptionalism where tech people feel that we can use algorithms and data to solve everything and we don’t need humanities. That annoys me so much! And a big part of writing this book was reaching out to people in humanities and saying, “You have an important role here.”
In general, the diversity of people who have either tweeted at me or emailed me about the book is so much higher than the diversity of employees at most tech companies. Even if this book was just a tiny step towards broadening the diversity of people and approach in software, just by saying “Hey, you know, there’s another way to approach it,” that’s something I’m proud of.
Subscribe to our newsletter to keep up with the latest innovations from Uber Engineering.