No. 2 | Why You Should Learn How To Code

We make thousands of decisions every day. From what time to wake up, what to eat for breakfast, how to allocate our time at work, how much to invest in our relationships, our perceptions about the information other people are giving us, its potential value, context, and the relationships it might hold to other information we’ve already deemed important enough to allocate space to in our memory. Will this particular piece of data help, hinder, or act otherwise indifferently upon my abilities to affect my own possible potential futures? The successful act of survival seems dependent upon the decision making matrices we employ to evaluate the information we receive from our surroundings and the ways in which we determine the potential outcomes that may lie in our future. In this way our own decision making minds operate as their own self-sustaining sequence of programs.

Programs are a series of instructions designed to perform a specific task. Each program performs a particular function. The apps we use on a daily basis are performing dozens of interrelated and specialized functions in each moment we interact with them. Every interaction sends information to the decision making processes running in the application’s background designed to determine how the application should respond to each piece of data. How well these programs run and effectively execute their functions with the least amount of overhead, complexity, and cost determine how we-as users-respond to, enjoy, and solicit the business that companies, and industries run on.

Every day we interact with computer programs. The effects of this technology have ubiquitously changed the way our society works. The speed with which we have access to an exponentially expanding amalgam of information has created new jobs, industries, and altered the ways and speeds at which people react to information. Still, the role information plays in our lives has not changed. Assessing and adapting to the changing role and values of data in our environment determines our fitness to survive and excel in that environment. This new environment is changing the way information travels in our society. Every day we the computer programs we interact with capture and respond to our decisions, send and receive our data, and have created new avenues for informational access unprecedented in our history. Understanding how these programs work make us better adapters and responders to our changing environment.

Dipping your toes into learning a programming language is one thing, but learning how to swim in that world is gaining fluency in the thought process behind how programs run, why data is important, how different kinds of data are important to different business, why the speed and flexibility with with access to that data is employed affects that business ability to meet the needs of its clients. Understanding that programming means understanding different methods, means, advantages and disadvantages of different schools, and paradigms of problem solving,

At a much higher level, where one works up towards mastery in a subject: it means gaining fluency in the philosophies of code architecture, design, maintenance, readability, cleanliness, and modularity.

Learning how to program is not just learning a new way of thinking, its learning to think about the way we think about thinking. It’s not just asking what is the best way to solve this problem? It’s asking what are the advantages and disadvantages of each possible solution we can propose?

  • does our function perform its intended task
  • does it have a side effect
  • is there a simpler solution
  • will future coders be able to clearly understand and modify this code in the future if needed
  • how will our solution perform under increased load, or potential failures
  • have we accounted for returning valuable information to our users / developers in case of an error
  • are we maintaining good practices for protecting the security of our data, our users data,
  • are we limiting the privilege of our functions to perform operations and access to only the places it needs
  • what are the limitations potential costs of maintain our data operations and actions at increased volume

These are just some of the questions developers regularly return to as they iterate, solve, and refactor their code. Learning to how to think about the way we think can only make us more purposeful evaluators of information and ultimately better thinkers. As a hobby, as a business solution, or simply as a concrete study in the applications of logic and mathematics, understanding program can be a worthwhile pursuit.

Here’s what I’ve learned along the way.