Reinventing the wheel
We coders have a strange standing on reinventing the wheel. Most of the time, a programmer will agree that he should reuse code. It's plain logical. So when we see someone baking his own library we say, 'why don't you use library X'? It usually leads to a heated argument as the programmer in question can't justify his reasons to write a new library instead of reusing something that works (at least in our opinion). On the other hand, when it comes the time for ourselves to make the same choice, we frequently do the same: bake our own code.
There are a few possible explanations for this behavior. A few people don't like to rely on code written by someone else, independent of anything else. But many programmers are quite reasonable in this respect, but even so end up rewriting stuff. I believe that the main problem is a mismatch in the mental model, worsened by the lack of documentation.
In Python land, there are several competing Web frameworks. It's interesting to see how many of them are badly documented, or not documented at all. But even projects that have a good volume of documentation still fail to address the mental model problem. A manual that touches only on practical issues -- mainly, API specs -- is close to useless in this regard.
I would like to see more effort spent on documenting the architectural issues of a framework. Not only 'how do I call this method', but 'how do I structure my app'. That's the really difficult question, and the lack of a satisfactory answer to it is often a good reason to write yet another framework.
There are a few possible explanations for this behavior. A few people don't like to rely on code written by someone else, independent of anything else. But many programmers are quite reasonable in this respect, but even so end up rewriting stuff. I believe that the main problem is a mismatch in the mental model, worsened by the lack of documentation.
In Python land, there are several competing Web frameworks. It's interesting to see how many of them are badly documented, or not documented at all. But even projects that have a good volume of documentation still fail to address the mental model problem. A manual that touches only on practical issues -- mainly, API specs -- is close to useless in this regard.
I would like to see more effort spent on documenting the architectural issues of a framework. Not only 'how do I call this method', but 'how do I structure my app'. That's the really difficult question, and the lack of a satisfactory answer to it is often a good reason to write yet another framework.

7 Comments:
At January 27, 2005 11:14 AM,
Tim Lesher said…
Excellent point.
I've run into the same problem each time I've tried Zope, Quixote, Nevow, and CherryPy: I work through the toy examples, get my head around what it does, and then... hmm.
At January 27, 2005 12:51 PM,
remco said…
Carlos, you have proven to be a good documentation writer. Why not start a wikipage for this on the CherryPy website?
I completely agree with you, that it really is missing, but unlike Ian Bicking, i feel there should be not a forced way how to do it. (If i got Ian right). . .
But having documentation that gives enough samples, and tells a user how a site can be setup, would be perfect for everyone i guess.. Noone is forced to use it, and anyone can use samples. Because we are all programmers, and therefor all are creative minds, many people will either reinvent the wheel, or rewrite parts of a 'sample'.. If that's part of being creative, who bothers?! ;)
Cheers!
At November 2, 2005 10:52 AM,
Roberto Iza Valdes said…
This comment has been removed by a blog administrator.
At November 28, 2005 3:47 PM,
home equity line of credit said…
A
At January 7, 2006 6:28 AM,
Roberto Iza Valdes said…
This comment has been removed by a blog administrator.
At February 15, 2006 8:04 AM,
Mi Michigan House Cleaning said…
Super blog. I web surf when I have the time for
blogs like this one.Your site was nice and will be
visited again!
Please consider looking at my based business business home opportunity blog.
At August 20, 2007 2:02 PM,
Iza Firewall said…
This comment has been removed by the author.
Post a Comment
<< Home