I said in a previous post, commenting someone who’s love with NHibernate was over that it is benificial in later stages of an app’s lifecycle to use a framework. I also said it enforces a certain structure on the developer. This led me to reavaluate what I’ve been gaining for using other people’s frameworks.
More and more I start to wonder if the poster of the original isn’t right after all…
Today there are quite a few frameworks like rails, castle project’s monorail, nhibernate, WilsonORMaper, you name it.
These all promise to simplify .Net development.
The Castle Project’s homepage says: “…Castle helps you get more done with less code.”
WilsonOR’s about page says:”Why use an O/R Mapper? Most reasons are centered around flexibility and maintainability…”
That’s all true and right of course. But as huenemeca said the learnig curve involved in these is steep.
Personally, I tried the several “getting started” tutorials on their respective websites. After completing the examples you go:”Fantastic!” I mean every one of them “has something”.
The next step sometimes is thinking about a small piece of software you’ve done and wanting to port that idea to the new framework. Well that’s how I do it mostly, it saves me the trouble designing an app. I just pick up the design documentation and I’m off.
Almost as soon as you start, you run into trouble. This won’t work, how do I do this kind of association, and then it’s toiling trough the (mostly) reference documentation.
Reference documentation is in my opinion not a good source for learning. As a beginner you do not see the connection between the different objects, methods and properties. Let alone you see best practices from reference docs. There is no glue. I believe we all can learn much more of complete, well documented apps, examples that have the majority of what is needed to create real world apps.
So I wonder sometimes: “Is it all worth the extra time spent figuring out this new technology?”
It’s inherent to Agile Development that requirements change during the lifespan of an app. Several times I’ve come to the conclusion that I should have used this or that technology instead of the one I’ve chosen. So again I start to wonder if I shouldn’t have created a specific architecture for the app at hand. One you know trough and trough, that is adaptable without the risk of irreversibly breaking something else…