Reinventing the Wheel

To me, programming is sometimes like playing Lego
…with fractal bricks.
The trick is to know when to end refining suber-sub-bricks to build the sub-bricks needed for your bricks.

To me, programming is sometimes like choosing a pair of ski shoes
…at the rental store.
Those colors sucks, when that shiny foot-molded pair over there wouldn’t get me blisters.

To me, programming is sometimes like playing crosswords on the newspaper
…which was found laying on the subway seat you’re on.
It’s much less fun when that guy before you already filled half of it.

I don’t really know if I’m making any sense, here. I guess I just need to write random thoughts about my programming habits.

You know, I’ve got a natural dislike for the use of existing libraries.
Existing libraries are great. Most of the successful programs are built on top of them. Existing libraries profit from their wide-spread use, by becoming more robust. Existing libraries make your development faster, for you don’t have to code it yourself.
So, a good programmer is a programmer who knows how to reuse code. Not reusing algorithms and patterns when they already exist marks one as a fool. Going rogue when the whole world has followed a standard marks one as a fool and a pain in the ass to work with.

I used to be kinda ashamed of my habit of working with my own tools, and abnormal my dislike for third-party libraries. I also thought that this was likely among the reasons why I had so few projects finished : while I lose time reinventing the wheel, surely do I lose motivation along, too ?

A couple of years ago, when surfing the web for terrain rendering techniques, I came across several blogs from fellow coders. Fellow “rogue” coders, if I may say so. I was too shy at the time to even post “hello” or “nice !” on their blog (which was a mistake : Let’s stop being shy, shall we ?), but after a while reading through all their crazy stuff, I felt like struck :

    Man, did their projects started the same way than mine. They just had an urge to code and they went at it, just for the sake of it.
    Man, did I feel close to them at times. Some in particular expressed (in better terms than I could) their reluctancy to work with anything else than their own code.
    Man, did I feel small in comparison. Despite all this, they actually pushed their projects far beyond my usual breaking point.
    Man, did I envy them. Far from fearing the disclosure of all that shameful geekness, they showed their stuff in the open, and were listened to, and fun !

A blog for NeREIDS may not even have been created if it wasn’t for them. Go check Shamus Young’s Programming page, Michael Goodfellow’s Sea-of-Memes project, and the now professional-quality Voxel Farm by Miguel Cepero. I’m sure there are many others out there…

Bottom-line is : reinventing the wheel does not seem likely to be, in these bloggers’ case, a criteria for procrastination. I’m quite positive it isn’t.
It may not even be a criteria for slow progress.

Well, I’m coding NeREIDS mostly because I find immense fun in doing so. Granted, I may have a peculiar idea of fun. But this is my own, and struggling to import code from somewhere else or learn and use a library is not part of it.

(Defeating my own point on libraries, but at the same time giving the rogue coder philosophy some legitimacy, what would Minecraft be, had Notch decided to use, say, the Unreal engine ?)


  1. I do understand you, so much.
    Still I think you are missing the point of how much more efficient collaborative coding is, with open source strategy, that doesn’t remove the need for editorial supervision / code review, and has proven to be a (more) successful approach over the year. One man made indie game is still quite scarce.
    Well, the fact this blog exists shows you’re growing, the right way (IMHO)

    • Hi 🙂
      I do not underestimate the power of the d… of collaborative coding.
      Well, I don’t even know how such a game would be received by the gaming community if it existed. I just *feel* that I’m onto something, but I may very well be mistaken, and don’t think working on NeREIDS at this stage would be very exciting for anyone but me.
      I guess I’m just better with myself for the moment. I don’t know what I would decide if NeREIDS encounters some success (I mean, when it is more than a login screen, anyway).
      In the meantime, it is true that I’ve set up that blog. And I’m precisely in need for some feedback… about everything, even about what to do with it. If said feedback was “hey we all want to code with you”, maybe I would reconsider 😉

  2. Pingback: Switching to Lis…P – Fa Nacht

Leave a Reply

Your email address will not be published. Required fields are marked *