Make one to throw it away
The title of this blog becomes more and more true the more I work in open source, but if you don’t know what the title means, let me describe to you something about open source before i tell you what it means.
Open source development differs from school, and I can only assume, propriety jobs like a bank because in open source, if something has been written before, why are you going to write it again? At school, you spend so much time writing code that has been written hundreds of times before, by hundreds of students before you, these assignments are possible, have been proven, and if they were not possible, and they asked you to do it, you would be pretty ticket off spending days trying to figure it out, and you would probably think you accomplished nothing, and wasted time. You are wrong. When you are working on something that has never been done before, you have to try different things, there is no one to tell you what works, only ideas, because no one has done it. You have to think for yourself, make decisions for yourself, and be prepared to be wrong most of the time, until you get it right. You can be wrong hundreds of times, but only be right once… per problem that is.
To “make one to throw it away” means, before you get code that is working, and doing what you want, you have to make one or more versions that fail. This isn’t too bad when dealing with a couple hundred lines of code, but something like 8000+ well, that bring me to my next story.
I’ve been spending the last week, trying to figure out a way to remove the final with() function call from Processing.js. In order to remove the with() function call, I had to rewrite a lot of the code… 8000+ lines of code, which also meant I had to understand (more or less) 8000 lines of code. If you are curious, here is the source in all it’s glory. When you “make one to throw it away”, you have just written and thrown away 8000 lines of code… if you think that’s a waste of time, you are again wrong. This was 8000 lines more educational for me than rewriting 500 lines. It’s simple math, really.
lines written * rewrites = productivity score :P