The Value of Software
I recently showed one of my collaborators on Quizzardous! the private alpha version that I came up with after around a month. I expected him to shower praises upon it, and call it the best thing since the Internet. After all, I was doing revolutionary work, no?
The conversation was actually like:
Me: Here, it’s awesome, isn’t it?
Him: Er, yes, this, and that and that…
Me: How is it?
Him: Just this?
Me: Yes.
Him: This took a month?
Me: Yes, so?
Him: Just this much?
Me: Well, there’s technical stuff, and it’s pretty complicated (followed by a detailed description)
That was the end of the conversation, but he did have a point. We, as developers and programmers — no, as artists — tend to overappreciate the value of our creations. We step back after every stroke of the brush, every line of code and every musical note to think, “This is revolutionary. This is amazing.” Yet, to Mr. John Doe on the road, it’s just a blob of paint on the canvas, just a line of meaningless text, or just a sound. If your particular art is code, or rather software development, Mr. Doe is most likely either the person who will actually use your software, or pay for it (or both!) He couldn’t care less if you used COBOL instead of Ruby on Rails or Python in your app, as long as it works well.
There is indeed a “correct” ending to the conversation I mentioned above: “Writing code isn’t difficult and doesn’t take months. Building great software does.”
A friend of mine who’s interested in robotics recently told me that he didn’t see much value in software at all. He knows how to code, so according to him Instagram has no value at all, because he can create an Instagram clone in a week (or a day.) This is completely flawed reasoning, which often traps partially-technical and nontechnical people alike. Software is abstract. So is Instagram. Which is why it’s easy to say it’s not “worth much.” But it is actually worth a lot to each and every user of Instagram who’s addicted to the service and uses it to express himself in a way he couldn’t before.
To put it succinctly, the value of a piece of software is not a function of the length of its code, or the time spent in writing it, but rather a function of how much human time and effort it saves, or how much of a need it fulfills. This also means that we, as programmers, developers and artists need to stop valuing our code as much as we do, because it is irrelevant. It is just a medium of expression, like language is for speech and writing. No matter how beautiful or elegant the language is, it cannot possibly compensate for poor content.