At the end of last year, some people asked me for book recommendations or lists of books for them to read. Lately I’ve been finding that compiling such lists is a bit hard to do, because I’ve changed the way I read books. Let me explain my last year in reading.
Now I’ll try to go over which topics interested me last year. You will see that none of them are specifically about programming. I think as programmers we need to get better at thinking, and I believe that the topics presented below help in that regard.
We need to go out to other areas of knowledge in order to gather different points of view that will enrich the way we think about building software. There’s lots of Computer Science reference books, but there’s no reference books for learning to think differently.
We need to learn how to ask questions, and understand which are the questions that matter. Don Norman says that usually clients come and ask him to solve what they think is the problem, but in fact, after a couple of questions, he understands that they were describing mere symptoms of a bigger problem.
We usually just roll our sleeves and get to work to solve what could end up being the wrong problem, because as software engineers we are trained to solve them, but in fact we need to take a step back, and train ourselves to ask the right questions to find out if we are solving the right problems in the first place.
So here’s a list of books for you to consider.
What is Design and Why it Matters
One of the main topics I studied last year was Design. What does it mean to be a designer? What are the implications of learning to think like one? What are the questions they ask themselves when faced with a new problem? Here are some of the books that I’ve read trying to answer those questions.
Notes on the Synthesis of Form, by Christopher Alexander. This is the most influential book that I read in 2017. While the book is about the architecture of houses and cities, the parallelisms you can trace to software projects is amazing. Sadly the software world has focused too much in Alexander’s ideas about patterns, and not so much on his bigger ideas, like how to find fitness between form and context, that is, between the problem at hand and the solution offered. If you read a book from this section, make it this one.
The Design of Everyday Things, by Don Norman. The Coffee Pot Book. I think one of the big problems affecting the software industry is the lack of usability of the things we build, whether they are websites, a command line tool, or some class interface in the OOP sense. This book has a big discussion about usability and what makes things have that quality. Beyond that this book teaches us to think like designers, to ask the questions worth asking before starting a project. It has this great quote:
One of my rules in consulting is simple: never solve the problem I am asked to solve. Why […]? Because, invariably, the problem I am asked to solve is not the real, fundamental, root problem. It is usually a symptom.
Design for the Real World, by Victor Papanek. This book goes deeper into the question of what are we building, bringing ethics into place, introducing concerns about the sustainability of the design and engineering practices that we have. The chapter Rebel With a Cause alone makes this book worth your time and money. He discusses what are the things that help us approach problems in a creative way, bringing new solutions that were unthinkable before (spoiler alert: cross-pollination between disciplines helps creativity). From the book, emphasis mine:
We need not journey to Arcturus IV to face designers and students with something completely outside their familiar experiences. All we have to do is design for the poor, the sick, the elderly, the disabled. For while designers have addressed themselves to the fads of the middle and upper bourgeoisie, we have lost sight of the fact that a very substantial part of our population is discriminated against in design.
The Shape of Things, a Philosophy of Design, by Vilém Fusser. Short essays on various things related to design. One interesting discussion in this book is how the etymology of the word object (in Latin) is the same as problem (in Greek). That bit alone made me think a lot about Object Oriented Programming and its implications.
The Language of Things, by Deyan Sudjic. If you want to dig more into design itself, then perhaps this book is for you. It tries to decode the language of design, showing us what make a car a sign of prestige, or how by using design brands arouse in us the need for that latest cellphone. It explains how designers make us feel gender or national identity with the subtle details the put into the objects they create.
Design as Art, Bruno Munari. This is a collection of essays by the Italian designer, that cover different topics in all things design. I think the section called Designers and Stylists is worth reading. In the section What is a Designer?, he asks questions about how our society predisposes us to dismiss our creative sides, because we are taught that the only art worth spending time on is made with oil on canvas, or with marble. I like his definition of a designer:
A planner with an aesthetic sense.
Ways of Seeing, John Berger. This is a really interesting book that makes us think about the way we see art, and the what are the political consequences of our decisions as a society towards art. Berger talks about paintings and what gives them value. How does a piece of art changes because instead of being appreciated at some obscure church in Italy, now we can see it through our TVs? There’s also a whole chapter trying to understand the way women are represented in works of art, and how this affects women own image of themselves. Definitely worth reading.
Writing & Narrative
At the end of 2015, beginning of 2016 I got hooked on Kameron Hurley’s The Geek Feminist Revolution. That book pushed me on getting back to writing, specifically to start writing short stories and novels in Spanish. I also wanted to get back at my mother language, since I thought I was starting to forget how to express myself in it, not in a day to day conversations, but in a literary way.
Once I started writing, I decided I needed to know a bit more about the theory behind the structure of novels, short stories and so on. Besides from buying the oficial grammar and punctuation guides in Spanish, I bought some books about the theory behind Narrative. Here are some of them:
Six Walks in the Fictional Woods, by Umberto Eco. If you’re goin to read a book from this section, let it be this one. This book is composed of six lectures that Umberto Eco gave at Harvard about narrative. I think there’s a lot to chew in this book to understand how we communicate ideas between different people. As developers we need to make sure our abstractions, our models, are understood by colleagues and that they match the expectations of your clients. This book explains how authors build the model reader, what they expect from the reader, introducing the idea of encyclopedias. An encyclopedia is the sum of our knowledge about the world (the bigger Encyclopedia). We use this knowledge to rebuild the fictional world an author presents to us via their work. I plan to write a future blogpost on how the idea of encyclopedia relates to programming and technical discussions in general.
Lector in Fabula, by Umberto Eco. This book goes deep into the idea of encyclopedia and the cooperation between the author and the reader to build and interpret the story in a book. As far as I know this book is not available in English (There’s a related collection of essays by Eco published in English as The Role of the Reader). Again, this theory is interesting from the point of view of making sure the programs we write communicate our ideas clearly, since it discusses how to build the model reader. Another pending blogpost for me: how to limit the interpretation of programs, that is, how to be sure another human reading the source code of a program understands not only what the code does (they can run it to find out that), but what problem this code is actually solving.
The Seven Basic Plots, by Christopher Booker. It goes all the way back to Greece literature until it arrives to modern day films like Star Wars, to tell us what do these stories have in common. The unknown identity of a character that ends up being a child of the boss/emperor/you-name-it, is repeated over and over in our western literature. I think it’s an interesting book to get an idea of the themes that have defined western literature.
The Rhetoric of Fiction, by Wayne C. Booth. It goes a bit deeper into Literary Theory terrain, so you might want to skip it. It talks about how authors build their narrative so we believe the story they are trying to tell. From “once upon a time”, to “lost notebooks from an unknown author that were found somewhere and published”. We might have noticed some of the techniques shown here, but this book does a detailed analysis. Reading this book will change the way you read fiction.
Story: Substance, Structure, Style and the Principles of Screenwriting, by Robert McKee. Explains what works and what doesn’t on a movie script. It tells how characters should be developed. What to do about plot and so on. Many award winning films like Forrest Gump were written by McKee students.
On Literature, by Umberto Eco. This book has several essays explaining things from how Eco goes about writing novels, to the relation his works have with Jorge Luis Borges, to the idea of intertextuality. The latter also seems to have some relationship with how we build software, specially open source. Again, I need to write yet another blogpost.
I think as developers we should learn about narrative, because on our day to day job we need to be able to get our ideas across, to be able to explain ourselves to colleagues and clients. Also sometimes we will have to be the ones documenting code, writing blogposts for the company, or doing presentations. Learning about the effective ways of telling stories and how to structure their narrative is a big plus. At the end of the day we want to become effective communicators.
Programming as Literature & Rhetoric
While reading the Rhetoric of Fiction mentioned above, I started to wonder how does rhetoric influences the way we write programs. The question can programs be read and used like literature deserves a longer answer (in yet another blogpost?), but the closer and more interesting topic is that programs are also ways of communicating solutions between programmers. So if we see programs as ways in which human communicate solutions to each other, then the effectiveness of that communication starts to matter a lot.
The Philosophy of Rhetoric, by I. A. Richards. I think this book is a must read. The author starts by saying that:
Rhetoric [is] the study of misunderstanding and its remedies.
Failure to communicate is one of the big reasons behind so many human problems so a book that tries to remedy that is very welcomed.
It also has discussions about the politics of power in language usage, like who decides what’s the proper way of speaking? What are “right” or “wrong” words? All questions that seem very simple, until we see that many times we discriminate people based on how they speak, not only because of the different accents we have, but because of the set of words that form our lexicons. Those words can tell the region or social class from where we come from, which could deviate from whichever is the accepted English. This seems like nothing, but then can end up being the reason behind why we didn’t get that job.
Plain Text: the Poetics of Computation, by Dennis Tenen. This is the book that actually got me into Richards’ Philosophy of Rhetoric book. Here the author does a deep dive into what it means to store our text in digital media, where we don’t own almost any of the technologies used in the process. We have companies like Amazon that own the ebooks they “lend us”, and can delete them from our devices any time they want. So it is an interesting read, but not sure it is everyone’s cup of tea.
Feminism, Diversity & Equality
It’s 2018, so I don’t think I need to explain why we need to learn more about feminism, about diversity, and equality. We keep hearing about people in our industry that are discriminated because of their gender, place of origin, age or how they look. I think we would all be better off if we start learning about the issues that pervade our industry and our society. Here are some of the books that I’ve been reading to learn more about it.
We Should All Be Feminists, by Chimamanda Ngozi Adichie. This is a very short book based on her TEDx talk. If you want to start somewhere, this is a book that you can read on one commute to work.
Feminism Confronts Technology, by Judy Wajcman. A very well researched book that shows how women have been pushed out of IT. It presents some studies from the early ’80s that showed how the use of language around IT changed, making everything related to computers more male. Wajcman shows how language matters, and the way we describe professions could make them more attractive for certain sectors of the population than others. Here’s a Twitter thread I made with some extracts from this book.
Zeros and Ones: Digital Women and the New Technoculture, by Sadie Plant. This is a take no prisoners book by Sadie Plant. She brings examples from all across history (from Amazons to the time of the first electrical computers) showing how women have always been at the forefront of technology.
The Unwomanly Face of War, by Svetlana Alexievich. The Nobel Prize winner tells the stories of those women that fought in the Red Army during WWII, but whose stories were being erased and ignored, because men didn’t think it was important to share them. This book is pretty strong emotionally, so for me it’s a bit difficult to read.
Women Talk More Than Men: … And Other Myths about Language Explained, by Abby Kaplan. A Linguistics book with studies like the one in the title, or asking questions about the Sapir–Whorf hypothesis, to see if it is really true that the language we speak affects our world view. If you like languages this is a book worth having.
Reset, by Ellen Pao. A first person account of Pao’s career, since she was a student. It’s filled with stories of how because she is a woman, she had to prove her worth to her colleagues and bosses time and again, even when she was way more prepared academically than her peers, people expected her to be the one taking notes at meetings and serving cookies.
Programmed Inequality, by Marie Hicks. This book explains how once WWII ended, women in England were pushed out of their computer programming jobs. I read one paragraph and I got mad already.
The more I read about human computer interaction, the more I started seeing the name of Wittgenstein, so I decided to investigate, so here are some books.
Tractatus Logico-Philosophicus, by Ludwig Wittgenstein. His aphorisms (if they can so be named), have so many levels of meaning that they just leave you there, speechless. “What we cannot speak about we must pass over in silence”, he wrote. QED.
Tao Te Ching, by Lao Tzu, with a translation by Ursula Le Guin. A quote in Papanek’s design book made me start reading the Tao Te Ching. Definitely a book I’ll be spending more time with. See this extract from Chapter 17 about managing people:
True leaders are hardly known to their followers. Next after them are the leaders the people know and admire; after them, those they fear; after them, those they despise.
To give no trust is to get no trust.
Meditations, by Marcus Aurelius. This is a classic book on Stoicism. Very quotable. It seems the Roman emperor even had time to think about Twitter etiquette back in 180 AD:
Not to be constantly correcting people, and in particular not to jump on them whenever they make an error of usage or a grammatical mistake or mispronounce something, but just answer their question or add another example, or debate the issue itself (not their phrasing), or make some other contribution to the discussion — and insert the right expression, unobtrusively.
This year I’ve read fiction just for fun, and also to learn more about what was being written in Spanish these days. So the books in English were more like leisure, while the ones from Latin American authors were the ones I’ve read to learn more about what has been going on in my continent. I’ve read them both as a literary exercise and as a way to connect back to my roots. In any case you cannot be good at telling stories if you don’t learn how others tell stories.
Ficciones, by Jorge Luis Borges (Argentina). First, lets get this out of the way, Borges is my favorite writer, so I might be biased. Also if I don’t know what to read I just pick any random story by him. Did I mention I have his collected works? Anyway, back to Ficciones.
This book has everything, from Funes el Memorioso, a story about abstraction, and perhaps Asperger Syndrome, to The Circular Ruins, a story about recurrence. There’s stories that go deep into literary theory like Pierre Menard Author of Quixote, and there’s stories like The Library of Babel, that inspired a whole book of mathematical analysis about it.
If you are a software developer that like to spend time thinking about abstractions, then you have to read Ficciones. Also last year I probably heard Borges being brought up at tech conferences at least four times.
Doppler, by Erlend Loe (Norway). This was one of the funniest books I’ve read last year. All about what happens when a Norwegian enters his midlife crisis.
The Three Body Problem, by Ci Xin Liu (China). Mind blowing science fiction about a very interesting astronomical problem, with a lot of historical context about the Cultural Revolution in China. I don’t want to spoil more about it, but definitely one of the best Sci-Fi books I’ve read.
Ninefox Gambit, by Yoon Ha Lee (South Korea). A space opera where weapons and attack formations all work based on number theory! You don’t need to know any number theory to enjoy the book, but if you like maths, this book will definitely cater your inner geek.
Grief is the Thing with Feathers, by Max Porter (England). Strong. I don’t know how else I could describe this book. A father loses his wife and he has to grieve while taking care of their two young kids. There’s so much good literature packed into this book that it deserves many reads to unpack all that’s there. If you are not sure which of these English books to pick, then this one or Doppler are good choices.
Las Cosas Que Perdimos En El Fuego, by Mariana Enríquez (Argentina). A collection of short stories that happen in Buenos Aires and sometimes in other places in Argentina. She instantly became my favorite contemporary fiction writer from Río de la Plata. You can find her books in English. If you get a book from the Latin-American authors I mention here, let it be hers.
El Señor Presidente, by Miguel Ángel Asturias (Guatemala). The author of this book was a Nobel Prize winner, but besides that, this is one of the books that started the whole “Realismo Mágico” movement in Latin América. The way the author plays with language, with Spanish, is wonderful. He makes you hear the sounds of what’s happening to the characters by carefully selecting words that evoke those sounds. It’s a very interesting way of telling a story. This book exists in English, but I’m not sure how good the translations are.
Redoble por Rancas, by Manuel Scorza (Perú). The first chapter has the best introduction for a villain ever. The bad guy here almost doesn’t show up in that chapter, and you end up being certain that he could get mano a mano with Darth Vader and win. Seriously.
El Pozo, by Juan Carlos Onetti (Uruguay). Onetti is one of the most interesting Uruguayan writers. He’s considered one of the few existentialist writers in Spanish language. He also won the Cervantes Prize, the most prestigious literary prize in Spanish. Now that you know a bit about Onetti, his short novel El Pozo, is the story of a guy that’s tired of his own existence, so he does whatever he can to avoid it. It’s really raw and “lowlife” Montevideo as you can get.
Los Geranios, by Ana Solari (Uruguay). The story of a woman that’s tired of her mother, her sister, and her boyfriend, living in a town that’s boring as hell as well. I really like the way she writes, where it’s really hard to situate her characters in a geographical location. I wouldn’t be able to ascertain that her novel happens in Uruguay, for instance.
Iris Play by Mercedes Estramil (Uruguay). A mix of literary critic and fun play by a character that wants to become a famous writer. It was entertaining and funny.
La Ciudad Invencible, by Fernanda Trías (Uruguay). An ode to Buenos Aires. If you have been in that city, you will understand this book immediately. Her characters are so believable that I was in a constant wonder if what she was narrating had actually happened, and in any case, does it matter?
El Mar, by Pablo Casacuberta (Uruguay). What struck me about this book is the style shown by the author. It seems like he grabs a magnifier and is able to extract the utmost detail of every situation that he narrates. A very interesting novel.
Andamios, by Mario Benedetti (Uruguay). The story of an Uruguayan exile that returns to the country after the military dictatorship is over. The book narrates the story of how he reconnects with his past, his friends, and his family.
Note: If you want to order any of the books by Uruguayan writers, then you should check Isadora’s website. They ship worldwide.
And this is the end of the list. Let me know what you think in the comments section below.