I get a lot of questions from coworkers, friends, and family about how and why I learned to code. I did not complete a Computer Science degree in college, my job title does not contain “Developer”, and many would consider my role to be a “Non-Technical” one. Yet, I invested significant time and effort and learned to code and manage infrastructure and data both on my own computer and in cloud platforms. I have come to believe that every person, in almost every position, can benefit from coding and understanding data. What follows are the tenants that have helped me come to this understanding.
Coding is about making decisions.
When you think about it, a computer’s main job is to help us make decisions. Many people who have never learned programming have trouble understanding this fact because they see a computer as an unfeeling blank slate, and they find that it’s an impediment. I would argue that a computer is the opposite of that. Writing code allows us to instill exactly what we want into the decision-making process by including data, excluding outliers, and creating or eliminating bias. The blank slate that a computer represents is actually the perfect starting point to help you create and organize logic.
Along with that, computers help us make decisions incredibly fast (when you can translate your desires into the language they understand.) Think about some decisions you make every day:
- Who should I assign this task to?
- When do I need to leave to make the train on time?
- How effective is my team?
Coding effectively translates these types of questions into language the computer can understand. With the computer’s help, you can resolve those decisions millions of times per second. This allows you to answer important questions more completely than you could with your own intuition, freeing up your time for other tasks. Coding is about organizing logic, and it is one of the best ways we have to make you better at being you.
Coding can solve your repeatable tasks.
Computers are good at making a lot of decisions really quickly, especially when they have identical or similar decision-making criteria. Indeed, this is the exact area where we as humans start to feel stress and burnout. We are often faced with a mountain of work that is mostly similar, but just different enough that we have to invest significant amounts of effort to make the decisions required to complete it.
The key to coding is that when you can define your logic in a programming language, you only ever have to do it once. Once the task is defined, the action of carrying it out is infinitely repeatable. When we can automate this mostly repeatable work away, we can focus on more important things that don’t fit this paradigm. Some examples:
- Data Analysis, Excel Sheets, Pivot Tables, Summarization
- Categorization, Tagging, Labeling
- Copying, Storing, Uploading, Downloading
- Modifying, Reformatting, Transforming
I’ll bet that everyone reading that can relate at least one of those topics to the work they do every day. Imagine if you could step back and take a look at the bigger picture instead of worrying about the minutiae. This is what coding allows you to do.
Coding trades one-time effort for indefinite benefit.
We have this irrational feeling that the effort we put into our work is what defines its quality. The painful truth is that the only thing that defines the quality of our work is how it is perceived by others. Pulling an all-nighter is pretty meaningless if what you deliver doesn’t solve your problem. Coding allows you to redefine how you value work. Effort is a subjective metric that you can really only attribute to yourself. Time, however, is an objective commodity that you can’t trade, you can’t get back, and everyone experiences exactly the same.
When I started to think about the work I did in terms of how much time it would save, and not how much effort would be expended, I realized that programming is often the most efficient way to trade one for the other. I put in a tremendous effort to learn how to program and how to apply it to the work I do both at my job and at home. Because I put in the time to learn something that has a lot of inherent value, I now have much more time to pursue the things I like to do than I ever would have if I had left those tasks un-automated. I traded one-time effort for repeatable saved time. I’ve always identified with this quote often attributed to Bill Gates (but probably not):
I will always choose a lazy person to do a difficult job because a lazy person will find an easy way to do it.
I’ve found that “Non-Technical” is sort of an oxymoron because, in my experience, people in the least technical positions can often influence their job performance the most with the use of technology. The bottom line is this: your job title does not define you. Your ability to achieve results most certainly does. I’ve learned that understanding programming has made me undeniably better at achieving results, which has, in turn, lead to me achieving better results than I ever could have without it. I wholeheartedly recommend that everyone give programming a shot.