Coding is often a word that’s thrown around to describe the process of building software, as if the act of typing out characters is what truly makes an app come to life. But coding really isn’t about computers, it’s mostly about people. In terms of the concept of coding(sitting at a desk with your eyes glued to code), we can roughly say that a quarter of coding consists of writing actual lines of code. A blogger conducted an informal study of her internal network among 65 developers and found that they roughly spent 25% of their day actually coding. That percentage may fluctuate day to day, of course, depending on circumstances; e.g. a game developer hitting crunch time. Still, on average, most of a programmer’s time is spent debugging their own code and the code of other humans, maintaining and rereading code that other humans wrote, and meeting with other humans to talk about building stuff that other humans would enjoy using. And then you have your co-workers that you have to deal with. They have egos, flaws, different perspectives.
You also have coding paradigms and philosophies, which are very human in nature. A developer who has clout within a company can throw his weight around to enforce a particular technology stack that will effect the way you code. The company itself may strongly adopt a functional paradigm which eschews the notion of state-changing behemoths. The computer hardly cares about your company’s decision to use a particular paradigm, but we humans care. We care to such an extent that we’ve created Agile, Lean, DevOps–just to name a few methodologies. All of them influence the way you engage with your code by dictating time spent collaborating with other team members.
Programming languages also embody a certain mindset that centers around how people like to do things. For example, the Ruby philosophy is all about having a variety of ways to solve a single problem. There’s a wild, fast nature to the Ruby on Rails environment that made it popular with boot camp students and startups. On the other hand, Python has a more measured philosophy that tries to enforce “one way to code.” So, it’s not surprising that scientists have created a community around Python. Theoretically, Ruby can easily be used for data science. But since coding is about people and the communities that they form around languages, Python has the tooling that makes it the de facto language for data science.
The problem comes when we forget that coding is not all about computers. That’s what leads to the one line wizardry that looks clever, but takes a page of documentation to explain how the code actually works. It would be nice if the computer could reply back and explain the code to us in plain English. Unfortunately, that’s not the case. A human understanding of code dictates that code should be written for the next person that will either have to review or maintain it. That means providing thorough documentation.
Some people take that to mean every line of code must be accompanied by a paragraph of explanation. Many humans also don’t like reading technical jargon. If every line of code needs explanation, that calls for some refactoring. Crafting elegant solutions should not only be synonymous with the optimal O(logn), but should also be synonymous with high readability.
The human-nature of code extends beyond coders to the people who benefit from the code. Facebook uses algorithms that can suggest articles in your news feed based on your interests. You can find the nearest fast food restaurant or just stay at home and order some grub. Everyday people use “algorithms” to explain Youtube videos popping in and out of their feeds or Google ads tailoring ads based on the back scratcher he/she bought the other day off Amazon. Code has entered into our dialogue-literally; audio processors have allowed the likes of Alexa and Google Home to become a part of our existence.
Robert C. Martin, author of The Clean Code Blog, details the responsibility programmers now have towards their fellow humans:
It is well past the time that we programmers can safely isolate ourselves from the rest of the world. We programmers must no longer hide in our little techie bubbles. The code we programmers write matters. It matters to the hopes and dreams of our society and of our civilization. It matters to people walking their bicycles across the street. It matters to anyone and everyone because the code we programmers write lubricates, enables, enhances, and simplifies virtually every aspect of daily life. From something as small as a young mother checking her baby monitor, to something as large as international nuclear-weapons policy, and interplanetary travel, our code matters.
Since we code for people, we have to write safe code. Defensive programming ensures that the code you write has minimal bugs. That often means writing clean code so that the bugs themselves can be more easily traced. The code should be nearly fool-poof against extreme cases and weird input.
So, all that said, what does it mean to code? Well, in 2019 coding is about writing for your fellow developers and your customers.