Frameworks are all very well – we’ve got our pick of Hibernate, EJBs, etc, plus all the .NET ports (and that’s only data access, think about the Microsoft Application Blocks), but have you, like me, come to the conclusion that the learning curve for some of these is actually a little steep?
How do you find out whether one of these choices is the right one without going through the whole learning curve, and at what point does “rolling your own” become a viable solution again? It’ll do exactly what you want, the way you want it to. You’ll find it easier to maintain, and when you need a new feature – you add it. The overhead of writing it in the first place could be offset by the overhead of learning a framework – but you know for certain that it’ll do what you need when you’ve finished.
Of course that’s kind’ve what open source should do. You could always contribute to NHibernate, but you just make the learning curve steeper, because you have to learn how to change it as well as how to use it. People may like your work, and it’s always nice to contribute, but that won’t get the project you’re working on done any quicker, so your boss might not be so happy.
Now, I’m all for avoiding writing boilerplate code, but even these days I’d definately still consider writing my own data access layer, and maybe even (dare I say it) a code generator to go with it. The days of re-inventing the wheel aren’t over, and maybe that’s a good thing, as Dave Winer and Fred Wilson both agree, just spitting out the same-old, same-old could even be bad for business…