I recently asked a question on StackOverflow that was related to string splitting and pattern matching in .NET.
Some beady eyed developers that viewed the question said: "It looks like you're trying to parse a JSON string...why don't you just use JSON.NET or JavaScriptSerializer".
The conversation went off at on a tangent, (and was voted down, most likely because they could not see the point of writing some functionality, which has already been done.)
I have my reasons for writing this functionality...my implementation so far is slick, and super-fast (though suffers a little with string splitting, hence the StackOverflow question).
I think the point these developers were trying to make was, "why reinvent the wheel?"
I might equally argue: "Why bother developing NHibernate, when Microsoft have built a perfectly good Entity Framework?", or "Why bother building Windows 8, when Windows 7 is a perfectly suitable desktop operating system?" The same principle applies, does it not?
When an automobile company designs a new car, they are not re-inventing the wheel; rather, they are improving on the technology that drives it. Similarly, my JSON parser is a nice, neat and fast implementation (although, as states above, suffers a little on string splitting), therefore, when my parser is ready, should I be shunned for writing something that has already been done, or praised for doing it better?
EDIT: Consider the following Q/A : Is reinventing the wheel really all that bad?