How do you know which library or framework to choose to use?
I imagine this is a common issue people have to face. Should we choose Tapestry or Velocity or …? Should we use Log4J, LogKit, commons-logging, Sun’s Log or …? Which Regexp should we use? Which IDE?
The meme I like to consider as the right one here is: “How much religion do you need to get to use it?”
Religion hits in a few ways. The first is, “How much do I have to believe/grokk to use this?”. The second is, “How much of my current set of beliefs still apply?”, thirdly there is, “What does this religion do for me?” and lastly there’s, “How transparent is this religion?”.
If you can find a library which doesn’t involve a new set of beliefs, merges with your existing beliefs and is transparent in that you can see it is easy to get into, and once you’re there you won’t be too deep in and lost, then it’s a good library.
Providing it does at least what you need to be done.
So, Avalon may involve subscribing to a framework of beliefs and a move to component oriented programming, but it’s one of the few that do the job.
Interfaces are a wonderful tool in Java, but to library/framework coders they’re also a big warning sign that the library/framework is becoming a religion. If the user HAS to implement Xxxx to get the benefits of the religion, a product is possibly too religious. If however they can get the catchy initial benefits without doing that, and then they can become a power-user or an optimised user by implementing, then it is a good religion, both in terms of marketing and in terms of the payback for user buy-in.
In other terms, I want my baby-steps to be easy and free but when I need to run I’m prepared to have to think.
I don’t know about you, but to me it makes a lot of sense to analogise my dependency analysis as a structured search for God(s).