Programming is magic. Developers are pulling software rabbits out of their hats every day. At the same time, what we do is also very real to our users. When my daughters were young they played Magic the Gathering card game by Wizards of the Coast. I would buy the card packs and individual cards for them and they would spend hours assembling their game play decks. They would also trade cards with each other and with their friends. They would play against each other and also go to the local hobby store and play against other kids.
Playing Magic the Gathering games taught my daughters about strategic thinking and preparation for battling opponents. In software development we also have to prepare for our projects, build a strategy, assemble a team, and start the battle. In programming, we create something from nothing. That sure sounds like magic. The users of software often have no idea what is going on inside the computer, so to them what build is magic. On some tough projects, in my career, it was magic that they were ever completed and worked.
Some of the best magic quotes come to mind as I am writing code. Here are three of my all time favorites:
- "Magic is believing in yourself, if you can do that, you can make anything happen." - Wolfgang Von Goethe
- "One man’s ‘magic’ is another man’s engineering. ‘Supernatural’ is a null word." - Robert A. Heinlein
- "Any sufficiently advanced technology is indistinguishable from magic." - Arthur C. Clarke
In programming and our industry, we have magic numbers, magic quadrants, magic methods, magic squares, magic literals, computer magicians, computer magic tricks, and more. The magic of computer programming allows every developer to build the best software, design the best user interfaces, create the fastest algorithms, and take advantage of the magical hardware advances.
Stanley Kubrick once said about movies, "The screen is a magic medium. It has such power that it can retain interest as it conveys emotions and moods that no other art form can hope to tackle." Behind the computer screen, many developers are building software that is changing our world, solving business problems, and entertaining users. To see two huge examples of software (and hardware) take a look at the magic that Pixar and Industrial Light and Magic create for the movies. Both companies have won numerous awards for the software and the technology they create.
In his blog post, Manoj Thulasidas writes about the "Magic of Object Oriented Languages". Some of his comments try to take the magic of programming down a few notches. I believe that the collective work of programming language designers has added tremendous power, flexibility, and expressiveness that every developer uses each day. Another recent blog post, "Magic considered harmful: teaching the first programming language", talks about experiences in teaching object oriented programming to first time programmers.
In the movie, "2010" (the sequel to "2001: a Space Odyssey"), HAL 9000 asks Dave Bowman "What’s going to happen?" Dave replies "Something wonderful". There is magic being developed at Embarcadero Technologies that I soon will be able to blog about. All of these blog posts during July are definitely leading up to something. In the meantime, what programming magic have you conjured up lately?