Why developers so often reinventing the wheel? There are so many ready to use solutions, there are so many Persistence Layers, controllers, libraries and components, build tools, templates and so on. Why anybody wants create DAO while there is Hibernate (or other competitors)? Why anybody wants create custom presentation layer while there is Tapestry, Spring and Struts? Well, usual arguments are:
- “This framework is a crap and we should not use it”
- “Did you see source code? It’s a hell on the Earth!”
- “Its functionality is incomplete. We have to use tricky-feature-for-transactions, but it is not there”
- “Its too complex to learn and too heavy to work with”
- “We can’t integrate all that stuff. It will never work”
While in several cases these arguments are valid, in most cases they hide the following thoughts:
- “Sounds interesting, but I am pretty sure that we will not use it properly and end up with something messy. I don’t thing we will be able to apply this technology properly”
- “I don’t want to learn new tool. I am pretty comfortable with Java language and new framework don’t attract me”
- “This is too complex for me. What if my boss discovers my weakness?”
So most often developers just don’t want to try new things, they afraid to expose their weaknesses, or they just do not believe in framework or approach.
I think this is just a lack of courage and trust in the team. Extreme Programming may help to resolve these problems by changing working environment and team’s atmosphere. It is really hard to do XP without courage. It is really hard to hide weaknesses while programming in pairs. People change after doing XP several months. They adapt to accept criticism, to express they thoughts with no fear and believe in team. Or they leave.
XP teams has more courage to try new approaches, new frameworks and new methods. However, there is a reverse of the medal. Sometimes XP teams try to bring too many new things into development process. I saw it by myself, and result was very bad. Project was stopped. Well, there was quite good progress in fact, but top management felt that time might be spent more efficiently.
Ok, getting back to the main topic. I think another reason to not try new frameworks is a choice. Really, to decide what O/R mapping framework is great for your, you should spend pretty much time on comparison. You may try dozen tools and still don’t decide what to choose. Often time pressure is hard and you should *KNOW* your tools, but not investigate them.
I personally spend some time every week to evaluate new tools and approaches in software development. I learn constantly. And very often I know what to use in particular situation.