Who remembers Doom? Now, who remembers the reasons that Doom was so revolutionary from a technology perspective? One of the most important advances that John Carmack made with Doom was that it was the first game to incorporate Binary Space Partitioning (BSP), a concept that had been explored in the context of computer graphics as far back as 1969. (Yes, this info courtesy of Wikipedia.)
Carmack’s research resulted in the most efficient quasi-3D game engine the world had seen. Without it, Doom would not have been so fast, fun, or popular.
Why am I bringing this up? Well, one of the great benefits of working on a social network platform nowadays is that if you need to keep track of users, all that work has been done for you. No need to reinvent the wheel, right?
Unfortunately, that’s not the only challenge Alex and I have faced in our project. On the other hand, we have run into a lot of challenges that had solutions thoroughly documented somewhere online by brilliant (and generous) hobbyists. We have also run into challenges which could be at least partially solved by incorporating or learning from a piece of code available for free on somebody’s personal web site.
Don’t want to program user interface stuff from scratch in Flash? Use Flex. Don’t want to program your own Mac OS X-style dock in Flash? There’s already code available for nearly every version of Actionscript. Worried about drawing and organizing tiles in an isometric game? It’s already documented. Need to make a level editor for a tile-based game? Source code is available.
The moral of the story is that we always need to keep in mind that the vast majority of programming-related challenges have already been addressed in some form another. Unless you’re actually developing a new technology, the real work is in organizing your systems to work together efficiently and without bugs.
Maybe you’ll have to port code between languages and models, or maybe you’ll only be able to use somebody else’s code as reference while you rewrite something from scratch. And maybe you will end up hurting a little bit because of updates to the platform you’re working in that require you to re-write some of your imported code. Still, you’ll be happy you did the research instead of diving into a problem head-on expecting to be able to solve it on your own.
Regrettably, I write this from experience, as I feel we have wasted many hours of project time trying to solve problems on our own that have already been solved by others. Ultimately, we cannot remove trial and error from software development… but it feels so much better to learn from somebody else’s errors instead of your own!
