Where Did Software Go Wrong?

blog.jse.li
7 min read
fairly difficult
Software is broken, but it's not because of NPM, startups, AI, or venture capitalists. A deep dive into how we think about and produce code, and how our software systems reflect the manic state of the modern world.
Where Did Software Go Wrong? May 27, 2020

Computers were supposed to be "a bicycle for our minds", machines that operated faster than the speed of thought. And if the computer was a bicycle for the mind, then the plural form of computer, Internet, was a "new home of Mind." The Internet was a fantastic assemblage of all the world's knowledge, and it was a bastion of freedom that would make time, space, and geopolitics irrelevant. Ignorance, authoritarianism, and scarcity would be relics of the meatspace past.

Things didn't quite turn out that way. The magic disappeared and our optimism has since faded. Our websites are slow and insecure; our startups are creepy and unprofitable; our president Tweets hate speech; we don't trust our social media apps, webcams, or voting machines. And in the era of coronavirus quarantining, we're realizing just how inadequate the Internet turned out to be as a home of Mind. Where did it all go wrong?

Software is for people

Software is at once a field of study, an industry, a career, a process of production, and a process of consumption—and only then a body of computer code. It is impossible to separate software from the human and historical context that it is situated in. Code is always addressed to someone. As Structure and Interpretation of Computer Programs puts it, "programs must be written for people to read, and only incidentally for machines to execute" (Abelson et al. 1996). We do not write code for our computers, but rather we write it for humans to read and use. And even the purest, most theoretical and impractical computer science research has as its aim to provoke new patterns of thought in human readers and scholars—and these are formulated using the human-constructed tools of mathematics, language, and code.

As software engineers, we pride ourselves in writing "readable" or "clean" code, or code that "solves business problems"—synonyms for this property of addressivity that software seems to have. Perhaps the…
Read full article