Wed 6 Jun 2007
Programming: The Hero’s Journey
Posted by Scott Hackett under Programming
1 Comment
One of the things I do here, in addition to working on the Tools product is writing “advertorials” for it on codeproject.com. It’s something that I love to do. For the latest one, I thought that I’d drift a little from doing a straight ad to doing something that involved writing some add-in code for a utility that people could use, and showing how Tools helped develop it. I had a great idea and got to work on it right away.
I hadn’t been working on it for 15 minutes before I hit a major roadblock. I had no idea how to do something so simple as create a tool window as part of my add-in. This was unbelievably frustrating, how could this be so hard? Thirty minutes of Help browsing came up with nothing, and it wasn’t until I went on the web that I found Carlos Quintero’s article about how to do this. In a nutshell, creating a tool window involves using a homegrown “shim”, or pseudo-host for the tool window contents, written by Craig Skibo from the Visual Studio team. So before I get too far, thanks to both of them for their published work. It wasn’t too long before I ran into other walls which seemed like they’d put an end to my project for sure. I was able to get around most of them, or figure out a solution through debugging, inspection, trial and error, all the usual ways that a programmer fights their way what seems like an unsolvable problem.
I had set aside an hour to work on this and then get some sleep. 6 hours later, at 3:30am, I called it quits. Time had flown by while I coded away in this mental programming zone. Along the way, I’d tackled some very complex problems. Some things I’d anticipated would be difficult were easy, and some of the seemingly easiest things turned out to be monumental challenges. At the end of all of it, though, I couldn’t contain my happiness in what I’d created. It was better, and far cooler, than I’d ever imagined it would be when I started working on it.
In college I took a course in Greek mythology. That class left me with a real love of the hero’s journey, a concept made popular by Joseph Campbell. To paraphrase, “A hero ventures forth from the world of common day into a region of supernatural wonder: Fabulous forces are encountered there and a decisive victory is won: the hero comes back from this mysterious adventure with the power to bestow boons on his fellow men.”
As I sat there at 3:30am looking at my work, I realized that this is the sort of thing that I experience repeatedly in programming. I tackled dark forces forces of unknown APIs, I used the guidance of others who had published their own victories, my code compiled and I created a utility that will, hopefully, benefit the programming community. Sure, it’s over-romanticizing a bit, but at the same time, programming is a hero’s adventure to me. How many other people can say that about their jobs?
June 11th, 2007 at 7:43 pm
Nice, I’ve never read or thought of this connection before; every program starting with “hello world” is in fact a triumph (getting the compiler and dev environment setup in the first place has trounced many a newb). Imagine how the guys felt when ENIAC actually calculated some shit? To quote the tv commercial: priceless.