Why Everyone Should Learn to Code
How learning how to program will teach you new ways of thinking and solving problems
Are you a journalist, analyst, marketer, or investment banker? A barista, influencer, or designer? An accountant, historian, or publicist? You should learn to code!
You may be asking, what does coding have to do with many, if not any, of these jobs? Five weeks into the Flatiron’s School software development boot camp in New York City, I am already seeing how this process of learning to code is impacting not only what I know about software but how I think.
Learning to code pushes you to think differently, tackle problems with new frameworks, and take a transformed approach to learning. If you are not a software developer, learning to code can be very daunting. You may have already told yourself (as I had) that software engineering is too hard or that it’s not for you.
I am telling you that coding is for you, anyone can learn, and it’s an invaluable investment in your personal and professional development.
No matter your background, current career, or future goals, learning to code will make you a better problem solver. It will train you to be infinitely curious, comfortable with ambiguity, and fearless in the face of failure—all relevant superpowers, regardless of what you do.
Solve any Problem
Learning to code will change your brain. For me, it has created new connections and forced me to exercise cognitive muscles that would otherwise lay unused.
Coding requires you to view a problem and break it down into smaller parts. It pushes you to abstract away complexity into a set of simple procedures. You need to proceed carefully, implement short experiments, and test frequently. Tracing your logic and applying focus throughout the process are essential. A programmer’s approach to problem-solving will empower you to solve all kinds of problems with software and beyond:
- I can do small tasks on my computer. (I have built a quick script in Bash to append a number to all of the image files on my computer, so that I can go through and easily organize them. I also am working on a command-line application to help me stay in touch with friends and family living far away. A topic for a future blog post!)
- I can look at my messy room and think programmatically about how to complete the task of cleaning it most efficiently.
- I can use the fundamentals of abstraction to structure a presentation or article. I start with the high-level message points to set up the framework before delving into the details beneath each point.
- I can look at a website or app and have a better sense of what’s happening under the hood, how the data is organized, and how it’s being manipulated. In a world that’s built on software, this is incredibly powerful.
Inherent in the process of learning to code is the acceptance — really, an embrace — that you are forever a beginner. You will often be presented with problems that you don’t know how to answer, a language you have never used before, or a bug you cannot seem to find no matter how hard you try. Being an engineer means persisting in these trying moments. “I don’t know” becomes more of a default state than a sign of failure.
Coding requires you to patiently dig through a problem like an archaeologist excavating one layer of dirt at a time. Like a scientist, you have to be comfortable coming up with a hypothesis that may lead to a dead end. You have to look outward for advice and expertise.
I love hearing our coding instructors say, “Google is your best friend.” That’s because being a good programmer is very often about knowing the right question to ask, not necessarily the answer.
In a continually changing and growing field, software engineers have to constantly be learning.
At Flatiron, I am realizing that we are not really learning to code. Instead, we are setting the foundation for a life of learning to code: We are learning how to learn, which is a skill I will carry with me through my entire life.
An Interdisciplinary Approach
Asking questions, staying curious, and procedural problem-solving will serve you well, no matter the field you’re in. By learning to code, whether in a boot camp or independently (there are a million resources online to start!), you’re also building upon a set of experiences and skills you already have.
Stellar at connecting with people, staying organized, or coming up with creative ideas? Think about how learning to code can augment those talents and add to your toolbox, instead of replacing them. This interdisciplinary approach will position you well to solve any problem you encounter.
I just finished reading David Epstein’s popular new book Range: Why Generalists Triumph in a Specialized World and Walter Isaacson’s biography of Leonardo DaVinci. Both make very compelling arguments for learning to code as a non-engineer.
Epstein argues for cultivating a wide range of knowledge and passion areas over gaining deep expertise in a narrow area. He advocates for lifelong learning and experimentation; high tolerance for risk and failure; and agile, interdisciplinary thinking.
Epstein delves into stories and studies about athletes, musicians, and scientists to explain why generalists are better positioned than specialists to solve today’s problems.
In a similar vein, DaVinci epitomized interdisciplinary innovation. The fifteenth-century Renaissance artist was arguably the greatest artistic master who ever lived. But he barely considered himself an artist because he was so enthralled in his other pursuits, including engineering and anatomy.
His biographer Isaacson marveled at how closely he observed the world. DaVinci was in perpetual awe of everything around him, from the way the eye saw a horizon line to how a pulley system worked to how expressions bounced off the faces of a group of gossipers. DaVinci’s wandering, curious nature was what made him a genius.
DaVinci and the subjects of Epstein’s book teach us that innovation comes from opening up your brain to new ideas, ways of thinking, and methods for solving problems.
There are so many dire problems facing the world in 2020. Learning to code will only better position minds like yours to help solve them.