* On Thu, Jan 31 2008, Zbigniew Lukasiak wrote:
> So why people do reinvent the wheels? For sure if they don't know
> about the other wheels then they have no chance to use them - but
> maybe there are other reasons?
I can tell you why people reinvent the wheel. One word -- progress.
Making progress is addictive. If your personality is like mine... when
you have a project that needs to be done, it doesn't feel very good to
search through the CPAN looking for a new web framework. Learning
someone else's code can take a long time, especially if the
documentation is incomprehensible [1]. So, the natural thing to do is to
just start pressing the keys on your keyboard until something starts
working. It's always "comfortable" because you certainly aren't going
to be exposed to any new ideas, and hey look, your application works!
Every day you can go home with the feeling that your project is closer
to being done. That's a good feeling.
As an example of this in real life, (oh God) let's compare Perl5 and
Perl6. Right now Perl5 is in incremental improvement mode. The major
releases give us a few new cool features, and everyone is happy. It's a
small change, it's easy to get comfortable right away. (For the people
working on it, a week of hacking and you have a working feature.
Awesome!)
Perl6 is completely different. It's throwing everything away in an
attempt to make something better than a bunch of incremental
improvements to Perl5 could ever be. As you may guess, this sort of
thing isn't easy. It takes a long time. It takes a lot of
experimentation. It takes throwing away a lot of work. It takes
hacking on a project you can't even use. This is hard, and it's why
most people go for the incremental improvement approach. [2]
The more positive feedback you get from your hacking, the more likely
you are to enjoy it, after all. This is why people reinvent the wheel
when they could use someone else's wheel. There's no period of
negative/neutral feedback. It's always "I got something done today".
Oh, another example of incremental vs. rethinking is Class::DBI::Sweet
vs. DBIx::Class. I think it's clear that rethinking yielded a much
better result. We'll see about Perl6.
Anyway, all I'm trying to say is that reinventing things is the easy way
out. If you take the time to understand other people's ideas, and maybe
pursue some of your own, you'll do a lot better. Even if it doesn't
feel as good at the start.
Regards,
Jonathan Rockway
[1] I might note that this isn't the case for Catalyst and DBIC anymore.
There's really no excuse not to use it unless you are already using
Jifty :)
[2] Please, PLEASE... no replies about whether Perl6 is going to turn
out better than Perl5. This was just an example to show two different
ways of thinking. No quality guarantee is implied.