|Think about Loose Coupling|
Re: Re: Re-inventing the wheel is a 'Good Thing'by Dog and Pony (Priest)
|on Apr 28, 2002 at 23:33 UTC||Need Help??|
Well it is also advice that might be bad.
"Doc, it hurts when I do this." "Don't do that."That one I usually agree on, but there are lots of times when you have to. Consider the patient coming into the doctor saying "It hurts when I breathe." That happens in engineering too. :)
If it ain't broke, don't fix it.This is considered by many to be really bad advice, in software specifically we could mention all the XP and refactoring guys - they strongly advocate fixing unbroken code constantly. It is called "improving the codebase by constant refactoring", and yes, it is really fixing, and it is often of perfectly working code. In all areas, including software, the mentality of not fixing "whole" things might lead to stagnation, and hinders evolution of better products. In my opinion, better say.
Don't reinvent the wheel.Same here. Even the wheel might work even better, and sometimes the best way to make the wheel roll smoothly is to start over with nothing, just thinking... I wonder what the best way to transport a box forward would be?
Don't get me wrong. All of those advices are valid up to a point, and it will always depend on the situation. But I think it is plain wrong to just take them for given, and not even considering questioning if those advices are really the best for any given situation.
There might be a lot of benefits to ignore the old sayings when programming. :) Then again, there will be situations where those advices really are the best... consider the patient coming to the doctor saying "It hurts when I hit my head with this hammer." or when all you need is to fix the flat tire on your bike.
I would have killed for a don't reinvent the wheel back at my first Perl gig when I decided to write a half assed template toolkit.I've done that and tons of other "stupid" stuff as well, and no matter how little, at least I learned something from it. I now know lots of stuff, useful or not, that I would have no idea about otherwise, and that might very well come in handy in one situation or the other. I think you can get a lot more punch out of any given module, snippet or wheel if you also have a basic understanding on what it does and why.
Then again, I might be plain delusional. :) It is very late here after all, and as always, YKMV.
You have moved into a dark place.
It is pitch black. You are likely to be eaten by a grue.