A call to arms for software developers to help address some of society’s ills through more accessible computer programming
To my fellow software engineers:
Like many of you, I watched in horror the events that took place on January 6th, 2021 at the US Capitol building. On the one hand, it was a truly sad day for both America and the world. To see a symbol of hope and ideals desecrated by a mob of hooligans more interested in snapping a selfie than understanding what they were doing was the exact opposite of the principles and ideals that they supposedly held dear. Yet on the other, it was also not that surprising it happened, given the growing unrest and fervor of people everywhere.
I couldn’t help but ask myself, how did we get here? What’s the role of technology in all this? And how can we use our skill sets as software engineers to do some good and address the challenges of today?
What follows are my thoughts on the questions above. To be clear before proceeding, I do think the challenges of society are vast, always have been and always will be. No one thing will ever be the underlying reason for all of society’s ills. And no one thing will ever be the solution to those ills either.
With that said, I do think there’s value in looking at what’s going on today through a unique lens. One that may shed some light on both the challenges that we are facing, as well as the potential solutions to overcome them.
The lens that I would like to use is software development, specifically software development tools.
There are many theories about what’s causing what we’re seeing in society today. Some claim it’s due to racial tensions. Others claim it’s due to growing inequality. Additional explanations say slowing productivity and wage growth is to blame. I’m not qualified to affirm or deny any of these. Most likely, it’s a combination of all of them. If I’ve learned anything about life so far, it’s that it’s complex. But the study of complexity does tell us complexity can arise from very simple rules.
The simple rule that I propose underlying some, if not all, of the above problems is new technology creates change and the more new technology there is, the faster change comes about. Not a ground breaking rule by any stretch of the imagination, I know. But the effects can have profound consequences because it creates a sort of flywheel where new technology leads to more new technology, which spins the wheel faster and faster.
So how does this relate to the societal problems above? Another name for change is disruption. “Disruption” is that word that so many technology companies today throw around with pride. Technology companies are in the business of change so this makes sense.
What technology companies don’t really give much thought to, however, is the second and third order effects these disruptions may have. It’s often dismissed as something that will be figured out by others. Let’s keep pushing forward and let others figure it out or one way or another, eventually society will catch up, is how the thinking can go.
Regardless of whether or not you agree with how things transpire, change and disruption do affect people. The introduction of e-commerce has been a boon and will continue to capture more and more of overall commerce. It’s largely been great for both consumers and even many retailers, those that either were quick to adopt to change and those that became retailers because it is easier to start an online store than a brick and mortar one.
But what about the cashier? Or the janitor? Or the security guard? If a store goes from brick and mortar to online only, some jobs will overlap but obviously some jobs will not. If this happens quickly, which the COVID-19 pandemic has forced, what do these people do?
“Learn to code!” is the common response from the technology community, and increasingly others. For all the disruption that technology may cause, it’s hard to argue against the opportunities it also creates¹.
There are currently millions of jobs available today for people working in the technology industry. And most of these are for the job of software developer. So the advice “learn to code” is not bad advice, at least not directionally.
Where the advice to learn to code comes up short, however, is in its difficulty. The difficulty of execution.
Software development, in its current form, is not child’s play. Software development is complicated and hard. Why else would most companies hiring software engineers require that you have a degree in computer science (or the equivalent, whatever that means), if it was so easy to do?
Because it’s not easy. Even if you’re a software developer reading this who thinks that coding wasn’t “that hard” to pick up and learn, I’d bet you still think you’re intelligent, one of the smartest of your friends, cleverest of your classmates. Does that sound about right?
Regardless of how easy or hard you think picking up software development can be, I think it’s hard to argue that the job of software engineer is much more challenging than that of the jobs created by the Industrial Revolution.
One thing that’s frustrating to hear are the direct comparisons between the Information Age and the Industrial Revolution by technologists. Yes, there was a transition from one form of society to another (Agricultural to Industrial and Industrial to Informational). And yes, in the future it’s likely society will adjust and old jobs will be replaced by newer ones. But that doesn’t say much about the transition. About what happens and how we get to the future where society adjusts. Perhaps you don’t care about the transition (though you should if you have read history), but that’s where we are today, and that’s why we’re facing the unrest we are today.
The machines of the Industrial Revolution were not complex things that human beings weren’t already able to use. Most of them just required a bit of grit and muscle to operate. The machines of today, however, require the exercising of a different set of muscles entirely, the muscles of the mind.
The machines of today are not so intuitive that any normal functioning adult can just pick them up and operate, like the machines of the Industrial Revolution. They require much more knowledge and experience to operate. Which takes both time and money. Both of which the people losing their jobs today don’t have a lot of.
So where does this all leave us as software engineers? What can we do to try and address these challenges that stem from some of the things we create?
I believe an overlooked area to focus on is not in the actual products that we create (though obviously there exists a whole over conversation to have about how we can improve social media and the likes), but the tools that we use to create those products.
Why a focus on software tools? Because that’s where we can make great progress to making it easier on people with modest backgrounds and education, and still reap the rewards that our modern society presents.
By making it easier for someone to become a software engineer or, at the minimum, be able to program a computer, we will be unlocking all the opportunity and rewards that we enjoy today for all of society. Imagine the society where everyone can program a computer? That society won’t exist if we don’t make the tools we use today easier to use.
I think it’s worth calling this out because as developers, we’re stuck in the trees and sometimes have a hard time pulling ourselves out in order to see the forest. Just because we can use the tools and understand how software works, doesn’t mean that the current way of doing things is that good. Just like how we are always questioning ways to make the products we create better, we need to hold our tools to the same line of questioning.
We need to simplify our tools. We need to make programming a computer more accessible to many more people. We need to make the machines of today and tomorrow more human friendly, not more developer friendly.
The same way Don Norman described the how to overcome the challenges engineers face when creating products in his famous book The Design of Everyday Things, we have to understand people and create tools for programming a computer that any person can understand. Without needing a manual. Without needing a fancy degree. Without needing to learn how to code.
Our goal should be to make programming as accessible as playing video games. If hundreds of millions of people all over the world can pick up playing modern video games so quickly, why couldn’t they also pick up programming that quickly too?
Can we create tools for programming that are as accessible as playing Playstation? This should be our aim, our vision as current software engineers.
We got from COBOL and C# to Python and Ruby. But how can we take it to the next step and get even more people programming and understanding computers? What will it take? What tools should we create?
The good news is that we’re already heading in this direction. There are brilliant people like Bret Victor and Adam Wiggins that have already called this problem to our attention and presented some great ideas for how it could work. There’s software like NetLogo, that allows for the user to play around with simple buttons and sliders to understand complex simulations. And there’s advances in software tools like Ruby on Rails that allow a single developer to put together an entire web app on their own. And services like Zapier, that allow people to interact with a host of services, all without knowing how to code².
But I think we can go further and faster if we put our heads together and make the goal of making programming more accessible to more people. A great example of where we can go with this is Descript. They took something like editing videos, podcasts, and generating transcripts into something as easy to do as editing a Word document. Why can’t we have text editors that are interactive like Descript’s editor? That shows the results as you edit.
We can. We just have to build them.
If you agree, please share this with other software engineers you know. We have the ability to build the future that we want. One that brings as many people as possible along too.
The future is literally in your hands. What are you going to do about it?