Geeks With Blogs
Rajiv Popat blog

I am by means no expert to be writing on this topic but I've had this conversation with SO MANY different people (developers / clients / Project Managers) on this topic and everyone seems to have a slightly different opinion and stand.


So, I feel I should take my stand on this topic as well. A HIGHLY opinionated one – that is. Of course, other’s who read this may / may not beg to differ.  


The Question – “To develop or Re-Use?”


There are times when I need to write design documents; select technologies to be used in projects and development efforts (both in professional and personal).


As a developer it’s VERY easy (spelt “tempting”) to say – “Oh, that’s interesting. Let’s write a Framework which solves this problem and other similar problems.”


Writing code is our second nature! We have this “Oh Yeah, I can do this” syndrome in us which basically makes us good developers! We have this desire to create something – out of nothing (or so we tend to believe – at the base level .NET framework and C# is not “nothing” per-say but that’s another story) – and this is all fine and dandy. But...


As far as I am concerned before I take the plunge and start coding here are a few basic questions I ask myself –


  1. Has someone else solved this problem in the past? Does he mind sharing his work with me (in form of an open source project which is free?)
  2. Have other’s shared / used his work? Thousands hitting against an open source project tells me “it basically – works!” - A Big “Feel Good“ Factor for me specially when I am going to run the code on a production system.
  3. In the short span of time that I have am I going to write better code than a project that has been developed over months?
  4. How am I going to justify my professional time (which ultimately translates to “someone’s” money) - spent in development – when an alternate free / open source product exist?

Most of the times, honest answers to these questions make me lean towards open source / free projects and I decide against writing my own custom code as far as possible. 90% of the time I end up thanking god for that decision when the project ends because I realize how much work and effort has actually gone behind those projects before they became popular enough to come to my notice! And that’s my stand!


Bottom line – there is no point in reinventing the wheel 200 times over. If someone wants to learn how to reinvent the wheel I have nothing against him or her. Not, as long as I am not driving a car with one of those wheels on a highway with no gas stations or help for miles and miles!


I don’t claim I’m always right and this once I was faced the question – “well, someone’s got to write frameworks before they turn into open source projects and people can start re-using it” – I think I should take a few minutes and attempt to write an honest answer to this argument for my own sake (more than anyone else).


Yes. I Agree. Someone has to write frameworks. I have nothing against people writing frameworks. I look up to them, respect them and practically consider them my mentors! I myself, run a couple of very small open source projects on source forge. My point however, is – I do it in my “FREE” time.


On both these projects I have documentation with BOLD letters stating that 5 users have tested this stuff so if you move this to production – well, good luck! And IF the project is downloaded 10000 times over and 500 guys tell me they took it to production (even on their Uncle Bob’s website) and it worked fine – well, well!


In that case, I would basically consider that code safe to move run on a production environment and “might” use it in my own professional project!


If they don’t I’ll take months to test; use it with my blog; my family site; my doctor’s system (which is also a FREE effort); my nephew’s site and a dozen others before I call it production ready and claim that – “it works!”.


I could ramble on this for days – but there’s a certain way in which the human race evolves – we build on top of things. We just DON’T keep re-doing them!


So, for all who’ve ever wanted to write code for the sake of learning – here’s the deal - start a project – join an open source project – code for free – who knows very soon we might end up using your product because it’s the best darn thing to use out there.


Most of these are personal opinions gathered over a period of measly 5 odd years of development / design and I claim to be no expert on anything. Just wondering if there are other’s who think alike or differently? Opinions? Ideas? Prospectives? Anyone?

Posted on Tuesday, April 25, 2006 12:57 AM Questions & Ideas | Back to top

Comments on this post: Reinventing the wheel

# re: Reinventing the wheel
Requesting Gravatar...
Building on top of existing products makes the most sense most of the time because it is guaranteed to be more complete and better tested than your code to do the same thing which you haven't even written yet. However, all to often I find myself writing an alternative for one simple reason - the existing product doesn't have a required feature and doesn't expose itself in a way for me to extend the existing product to include the feature I need.
Left by Jason Stangroome on Apr 25, 2006 3:47 AM

# re: Reinventing the wheel
Requesting Gravatar...
That's a Fair Point Jason!

So, I guess the question is - If I were to come across an open source project (let's hypothetically say - nHibernate) and found there are limitations and missed a feature I need. Should I –

1. Rewrite another product? (We’ll call it MyNHibertate).
2. Enhance nHibernate and try to share this code with the community, so that the entire existing user base starts using (and testing it)?
3. Try to look for another open source product that meets my needs?

Like I Said - I'm myself trying to learn through this post – each different prospective I get is something new learnt and will hopefully help me evolve.

I've talked with a Lot of friends and Colleagues about this in the past and understand some elements of both sides - but I want to post this out in open so that I can get newer Ideas and Prospectives!
Left by Rajiv Popat on Apr 25, 2006 5:46 AM

Your comment:
 (will show your gravatar)

Copyright © Rajiv Popat | Powered by: