An excerpt from the fictional tales of Way of the Wizard: Modern Magic
So the question becomes, how do we program our world? There are those among us that claim such alteration is possible and we have no cause to doubt them. Skepticism is certainly not reason enough, as that’s merely a form of stodgy conservatism. To make any change, great or small, we must believe in its possibility.
Typically, when we start using computers, we’re not even aware that computer-programming is a thing. The operating system, and the applications running on top, just exist. And when we learn that actual people wrote said software, we believe it to be a feat apart from ourselves, a task undertaken by geniuses tucked away in a laboratory. We could never do that, it’s simply not possible.
We wouldn’t even know where to begin. What do we write, where do we write it? And if we dare look it up, we’re deluged by complexity. What if we look for a book? Which book do we pick? And once we start, how do we keep our head above the sea of uncertainty? Plus, a simplistic step-by-step guide is one thing, an unguided project is a far different beast.
It turns out that software development is more art than math. It is not so much completing equations, but a constant treadmill of trial-and-error. We should therefore expect world-level programming to be quite the same. For instance, let’s examine a realistic scene from the desk of a software developer:
“Will it work? Let’s see. Nope. Okay try something else. Nope. Wait, why’s it doing that now!? Okay how about this. Hmm. Okay let me look something up. Ah, okay, I’ll try this. Ooh better. Ahh, nope, now the other part doesn’t work. Okay let me take a break and see if inspiration strikes. [Later that day…] Aha, that’s it! [Fervent typing ensues…] It works! Now onto the next problem….”
This common scenario plays itself out again and again. The solution so often comes from outside the programmer. Either it comes from an actual archive of answers (a forum for programmers), or from some mystical source of inspiration that’s accessed by the programmer’s subconscious once he engages in another task.
Let’s not gloss over this point, that the key to a programmer’s code comes from external sources. One source is a repository of discussion compiled by programmers over the years. And another source is some other-worldly well-of-knowledge that provides solutions for problems posed to it while the mind is no longer actively searching.
So a wizard should expect much of the same. First, he needs to grasp that magic exists. Second, he must believe it’s a process he can proficiently navigate. Third, he must dive into some introductory materials that provide a cryptic set of rules and steps for completing basic but essentially useless projects. Then as aspirations expand, on comes a contentious time of attempting to self-solve a particular problem. This is accompanied by research into the ways of others who solved similar issues, alongside bouts of inspiration from one’s own imagination. Voila! A wizard is born.
In programming, there is no set canon of introductory materials. Programmers learn their craft by various means. There are a myriad of languages and techniques and styles of programming. There’s countless sources of introductions. The common theme though, is the intent and determination of the practitioner. And there is one other commonality: every programmer begins by writing a small program that prints a simple phrase, a very telling phrase: hello, world