Earlier this week, I wrote a post on how programming requires little more than your own head to build things. I had intended to follow it up with a post about what programming actually does require in terms of physical materials and resources. I wasn’t in a rush to write it, though, since the hardware and infrastructure details of programming are very real, yet not in the spirit of the original post. The reality of the limitations hit me today, though, as my web hosting provider is suffering an outage.
I can still code, and my website still works “on my machine.” But the sad reality is that I cannot share it with anyone else at the moment. A web app won’t work without a hosting provider. An online game can’t run without a server. The real limit of “coding is purely with your mind” is that you need a lot of real devices and infrastructure in place to distribute the code.
A Very Real Physical Requirement of Coding: Distribution
The Internet really is just a big “net” of wires. It is literally a “web” of cables running all around the world. Sure, there are wireless aspects of this Internet, but even those devices have cables running around houses and cities and countries. At the ends of these cables are machines — real, physical computers — that respond to requests for web pages and services. When I log into my blog, I’m sending electric signals from my computer through a series of other cables that ultimately connect to my web hosting provider’s servers. These servers are physical machines.
These physical machines need a physical place to be stored in. They need tons of electricity to stay powered on. They need air conditioning to keep them cool. They also need a lot of cables running to them. The types and volume of these cables determine how much network traffic can pass through them. If the cables can’t handle the traffic, then they will get “clogged.”
Other distribution problems are easier to imagine if you are making a game for a specific gaming console. It’s obvious to understand that a Nintendo Switch game needs a user with a real Nintendo Switch with which to play it. (Emulators and such intentionally ignored). Even though I never had to pay for a manufacturer to build physical game discs for my games, I still needed users who had physical devices to play them on.
Distribution as a Limiting Factor: Depends on the Volume
The distribution problem in programming really depends on how wide you want to distribute it. Usually, in the beginning, without customers, you will not be limited by distribution. Most people argue that an MVP should not worry itself about scalability. But scalability is a real problem… eventually.
The distribution problem can be ignored when brainstorming and prototyping a product. I don’t worry about it when making games. There are plenty of people with iPhones and Androids, and each has a store with sufficient uptime and bandwidth to handle users downloading my game.
In the end, the problem with my blog today was that, although I could write and code, I couldn’t distribute it to end users. As I finished writing up this post, my hosting provider came back online. So I can now continue to distribute my product to users.
Leave a Comment