Computers are hard. Literally, they are hard and figuratively they are, too. We spend a lot of time confused about how technology works.
Why does Netflix keep disconnecting from the internet? How do I zip a file? Why does my password need numbers, letters and special characters? What does Confirm Form Resubmission mean?
This is partly why software engineers are one of the most well paid working professionals of this century. They can create and manipulate technology, which is exclusively used to make the modern world, where every single shop, for sale sign and birthday party invitation exist.
To everyone else, code is a black box. If it’s working, it’s working. If it’s not, we don’t use it. But here’s the reality: anyone can learn to code and become good at it.
Like learning Japanese or chemistry or how to skateboard, it’s hard at first but becomes easier and clearer over time.
Here’s another reality: everyone should learn to code.
Not only because it will open your eyes to how the objects in your life work, but also because knowing how to code will make you a defensive member of your business and of the world.
Software engineers do a lot of work that no one else knows how to do and they are doing more work than ever. As more and more of our life relies on technology, software engineers become the constant thread in every company. Every company needs one (or twenty) software engineers to look after — at the very least — their company website, emails and payment system.
I can’t help but wonder how we can trust one group with so much power. How do we know that what they’re doing is good if we can’t even read what they write?
For instance, software engineers probably don’t lie or intentionally push business deadlines. As much as we know about technology, software engineering is a craft that is learned by doing, and even in spaces as familiar as web development, new technology gets created constantly that engineers need to learn to use in order to be able to do their jobs. Estimating software development work is a fuzzy, difficult process and, oftentimes, tough to get right.
But, software engineers could lie and intentionally push business deadlines. No one seems to know what software engineers are actually doing and, were someone to be so inclined, they could brush off work for weeks, pointing figures at an impossible to understand problem or playing video games and letting a computer do their job for them.
Additionally, software engineers probably aren’t poor craftsman. Oftentimes, business deadlines mean that something can’t be built perfectly the first time. This is why concepts like iterative development are so important in the technology community. Unlike in the real world where a half-built house serves very little purpose, a half-built website can serve many people and do many things. But it can’t do everything and sometimes the house was built so fast that the plumber forgot to connect the shower to the water source. No showers this week.
But, software engineers could be poor craftsman. No one can read code except for other software engineers. It worries me to know that people are paying software engineers so much money to write their website or build their entire product, but have no way of checking whether that product was built in a safe and reasonable way.
I’m a software engineer and don’t believe that any of my colleagues are evil.
We’re all doing our work, not thinking much about the authority we have over business and government. But, I still get nervous for two reasons:
1. When only one group of people know how to do something (coding, surgery, refrigerator repair), the price of that good can only go up unless others learn how to do it.
Just like you learned when your car needs an oil change so that you don’t get ripped off by your mechanic, you need to learn how to code so that you don’t get ripped off by your software engineer.
It sounds silly, but the world spends a lot of time and money asking software engineers to do work that anyone could do if they learned a little bit about coding and the internet.
Learning a little bit could mean you don’t have to go to the Apple store to ask about your iPad anymore and that you don’t have to pay your internet provider to check on your wifi box.
It also means that you don’t have to hire a software engineer to manage your simple website, set up tracking or manage your database. Imagine the money that your business could save if you and others were capable of handling some of the more basic elements of software engineering.
2. When only one group of people know how to do something, they gain ultimate authority over others.
I’m a firm believer that no one is evil. We’re all trying our best in this world to do things right and please those around us. However, software engineers hold a lot of power and authority, which can turn ordinary, good apples into bad people. If you need convincing, take a look at this TED Talk by Philip Zimbardo about the psychology of evil.
Zimbardo is the psychologist who created the Stanford prison experiment, which taught us that it only takes hours for people to change the way that they perceive their world when they are given positions of authority. In the experiment, regular students became manipulative and aggressive rulers when told that they needed to act as prison guards and watch over a set of (also student) “prisoners”.
Authority changes people in uncontrollable ways. It is not right that any group of people hold the power to do something that no one else can.
Learning to code doesn’t mean that you have to (or should) switch careers and become a software engineer. But in a world where we buy our toilet paper on the internet and work for companies that only exist there, software engineers cannot be the only people who know how to code.
Just like learning some French before a trip to France makes the whole experience much more comfortable, knowing a little bit about how to talk and reason about technology will make you a discerning modern citizen.