soledad penadés
repeat 4[fd 100 rt 90]

Libraries and frameworks

I often get asked for recommendations about libraries and frameworks, and I also find myself often in the middle of discussions between the opponents and the supporters of libraries and frameworks.

To be honest, those discussions/wars are pretty much stupid because nobody takes the time to understand properly what's going on, and from my point of view I just see ignorance in both sides.

There's not an absolute truth in what regards to libraries and frameworks, and I doubt there will ever be such thing. You can't proclaim yourself a "I do it all myself" man or woman because that's just plain ridiculous. Are you also programming your database server, and your web server, etc? And the people which absolutely encourage the use of ready-to-use libraries also look ridiculous to me. How are you going to deal with the situation when you need to extend feature A or change feature B, if you don't know how the library works?

At the end all gets reduced to just one advice: investigate. Get informed. Compare what options you have before making a decision. Dig into the code and find out how it is built. Is it easy to understand? Is it well documented? If you wanted to change something could you do it without having to spend a whole week on it?

I generally tend to prefer very decoupled libraries which can be easily replaced with another library or with my own code whenever I need, so in a way I use libraries as a prototype. If the library is not that decoupled, I always try to build a wrapper so if I replace the library I just have to rewrite parts of the wrapper, but my main code is left untouched.

So do whatever you want. Use a library, or do not use a library, but do not hassle people which choose a different path.

// 4 responses to Libraries and frameworks

Kr0n
Kr0n
20070731

In general, when people ask for advise about libraries and frameworks, actually what they are really looking for is someone who takes the decision for them. In other words, a way to save the investigation step.

And is there where the error is, because each one is different, in his needs, in his knowledge, in his skills and even in his or her developing taste, and no one can have the One Solution that fits all.

sole
sole
20070731

Or maybe they are looking for some first hand experience - like: "have you used this library? what are your thoughts on it?"
It can happen that the library's homepage is all about how superbly good is the library, but there's no criticism or explicit "these are our weak points" at any place in the documentation.

The only way of getting to know that is
a) building a sample application and testing how good is it actually or
b) asking someone who has used it before

Of course I'm not saying "do not try that by yourself", but it can be a good method for [semi]discarding stuff.

Kr0n
Kr0n
20070801

Or both! I agree with you, it depends how lazy is who's asking ;)

Or how serious you need to be with the decision. It's not the same a personal project than a business one. Asking someone who has used the framework or the library before, only could be, in my opinion, a first approach in getting your hands dirty, if you need to be serious. Let's say it's at the same level as reading blogs, people opinions, and so on: a first step in the investigation process. Obviously you can stop the process at that point if it doesn't fit enough to your needs, but if it does, you probably should end getting your hands dirty *before* you take the final decision.

Recently, I have to take a technology decision for a medium-large size project (3 years), choosing between PHP and Python first, and between frameworks in each language later. You can guess how hard could be that kind of decision in a so wide spectrum. To make a long story short, we spend (3 people) about 3 months trying to make a solid decision, and finally Django (www.djangoproject.com) pull it off.

But obviously that does not mean I'm going to recommend Django under any circumstances, because we took that decision based on our own constraints.

Conclusion: I agree with you :D

sole
sole
20070801

Good! Actually that was the same that I meant :)

I would love to hear your experience with django, by the way! (when you have it, that is). I was reading about python (one needs to have lots of tools in the box!) and began reading about django as well, but didn't go past the introduction chapters, I'm afraid.

Feel free to leave a reply

Comments are moderated: Rude and offtopic ones are out!