Midnight Pub

What Is Programming?


All programming is just converting one data-set into another data-set, and then sometimes finding a way to display that data-set.


Basically, yup.



TLD: True, but...

I'm a pseudo-coder. I know enough to be dangerous, and know that's a bad thing, but typically I'm considered to be highly code literate and "techy" by normies. Because this veneer of tech has intersected strongly with my employability, in-between spaces are weird. This really got me thinking, and I wanted to share my thoughts.

I typically think about programming as a literacy. This is because I've trained as a librarian, and because I teach really basic programming, mainly web and data stuff. Thinking about programming as a literacy explains why its a difficult skill for most people to grok. Reading isn't an easy skill to build, we spend years learning how to read and write to communicate, and still manage to do it poorly. Programming is doing the same thing but with an added level of complexity. Your communicating with a machine, and what your telling it has is being interpreted by a third party. Also if you want to get human meaning on the other side, you have to think about communicating with people again, and all the challenges there in. Still for most people, its an another form of technical writing, with mathematical literacy and formal logic layered on top of it.

Programming is also more than just data-set to data-set conversion on a deeper level. You're also converting mediums, unless you're lucky enough to be working purely at a machine level. It's taking a painting and turning it into a sculpture, or radio waves and embodying them as sound. What ever data-set your using has to be converted to and represented in binary, except, again, in rare instances. In essence every time you write code, your ripping a cd, just instead of audio, you're producing textual data with semantic meaning meant to direct the machine to do XYZ tasks on QRS, collection of bytes.



The programming/ literacy analogy is something I thought to have come up with, although rom a different angle. Computers are so prevalent in our societies, that the knowledge how to handle them puts those that have it in a similar position as scribes in a time where literacy was not common. Programmig also is one of the skills that aren't that useful in themselves, but tend to make everything else much easier, just like reading and writing, which are fun as such but become something else when used to conserve and share knowledge.



I've found the more challenging parts of programming to be working with clients to discover and develop requirements of sufficient specificity to create a coherent design response. In so many ways these efforts draw upon our ancient story-telling practices, personifying the code and behaviors.

I sit on Zoom calls with 'stakeholders', designers, and engineers and imagine we're sitting around a fire telling ever-more elaborate tales. “If the sensor was activated and providing readings but now, more than X minutes have passed without a reading, we need the user to do Y so we will display Z”. Many of the really interesting problems arise from the system level.

My contributions are understanding and communicating up, down, and across the social and technical domains, guiding the specification, development, testing, and delivery of software, hardware, and mechanical systems that touch people's lives. It's gratifying and humbling work.



It seems like you might be personificating(sp?) the computer a little bit. When you latch a fence gate closed, you wouldn't say you were communicating with the fence gate, you are just operating the mechanism.

When I say data, this could be anything, so in your example the data could be the input of a 2d painting (image) and the computer would convert that input data, into the output data of a 3d model (stl). If you are playing a video game, the data would be the representation of the world you are in, and when you manipulate your player you are just updating the data which is the representation of the world, and then displaying the updated result (the output to the screen for the player).

(some what unrelated) Although your third paragraph does cover of one my favorite thought experiment when I'm learning new things, and that is trying to find ways to take what I learned in one medium and applying it to other mediums; it's always fun to see that something I learned while programming (or any creation) can be easily translated to another medium like cooking or playing music. It's good to have many different hobbies just so you can see how all forms of creation work about the same.



It's also good because the last thing you want to do look at a screen after spending the day coding. The only time I seem to be able to stop playing video games as a hobby is when I've been elbow deep in code for the last 10 hours.



You're spot on. While programming, I'm trying to keep all the parts in my head and be exact and thorough in my "communication". I try to come up with all the edge cases and be clear about the exact format for everything.

If I need to speak to a person right after, I'm a bit awkward because all I can think about is how imprecise human conversations are, and I have to hold myself back from correcting people because that's the different "medium" we're using.