The programming of everyday things
Main illustration: Tim Lampe
Software has become an everyday thing.
Our TVs are smart, our thermostats learn our routines and our cars will soon drive themselves. How software is designed has a profound impact on our lives.
Less obvious is how the programming languages that create software impact us. Yet they impact people who never see or know the language itself. In fact, programming languages are a lot like human languages – they influence the way we see, experience and interact with the world around us.
Language affects how we learn
Think about the numbers 10, 11, 12, 13, etc. We use them so often we rarely reflect on how strange our numbering system is in English. Would it not make more sense if it was one-teen, two-teen, three-teen etc? Other languages don’t follow this arbitrary naming scheme. In Chinese, the numbers form a more logical pattern – ten-one, ten-two, ten-three etc.
The English language makes it more difficult to learn math. You need to translate the words to numbers before you start calculating. If you speak Chinese the math is embedded in the language itself. When asked to add two-ten-three and five-ten-six no extra translation step is required. It’s why some cultures are better at math than others – because of the language they use everyday.
The medium is the message
The point is we often forget the way language can influence how we communicate with the world around us. It is not a neutral arbitrator – it’s an interested party.
The same goes for programming languages. They influence how programmers and designers think about software. More importantly, they impact how the end user uses software. As a designer or a product manager you may not care what programming language is used once the end goal is reached. But you would care if the language impacted how the product is designed, or how it was used.
Languages such as Python and Ruby resemble human readable languages. They allow designers and engineers to get a working prototype up and running faster than more complex languages. The closer a programming language resembles the human language, the sooner you can start testing your hypothesis.
In short, the programming language used for your product should not be an arbitrary decision. As Marshall McLuhan famously said, the medium is the message. For startups today, the same goes for programming languages – they’re the medium through which your software product is communicated to your customers.
Language can speed things up or slow them down
As the creator of Python, Guido van Rossum, has argued, a programming language is not just a way to tell computers what to do; it’s a means of communication between people.
“Programming languages are how programmers express and communicate ideas … [and these] ideas, expressed in a programming language often reach the end users of the program — people who will never read or even know about the program, but who nevertheless are affected by it.”
Just as some languages can make it easier for people to think about maths, simple programming languages make it easier to design software. Take Dropbox. They used Python to quickly develop and design prototypes of their product. The programming language they chose gave them something end users could work with, in the shortest time possible. They could develop a proof of concept “with their eyes closed”.
Similarly, Google was first designed in Python. It was the language that best communicated Larry Page and Sergey Brin’s original vision to index the web and organize search results. Like Dropbox, Python enabled their ideas to get out into the world faster than any other language. With less layers between their idea and its implementation, they were left with a design free from complexity to the user.
Rapid iterations like this are much more difficult with languages such as C++ or Java. Tailoring the design to the end user requires significantly more resources and time. When the language your startup chooses can slow down the product cycle, the programming language ceases to be an arbitrary part of your product.
A new type of Moore’s Law
What does this mean for the future of software design? Firstly, it’s making it easier for people to program. Languages such as Python are best described as pseudo-code – even people who don’t code can understand them. Compare this to earlier languages such as assembly or C which required an extensive knowledge of how computers worked. When programming languages are closer to human languages, the gap between end user and designer is reduced.
Secondly, simpler programming languages are creating a new type of Moore’s Law. Instead of lowering the price of CPUs, it’s lowering the bar for entry into programming, and allowing people to more easily translate their ideas into software. More people creating software rather than more transistors on a chip.
And while Moore’s Law may be coming to an end, the evolution of programming languages has yet to reach its peak. And when it does we will all benefit, whether we speak the language or not.