I have recently been trying to learn about MVVM and all of the associated concepts such as repositories, mediators, data access.  I made a decision that I would not use any frameworks for this so that I could gain a better understanding of how everything worked.  Im beginning to wonder if that was the best idea because I have hit some problems which I am not able to solve, even with the help of Stack Overflow!Writing from scratchI still feel that you have a much better understanding of something when you have been in the guts of it than if you were at a higher level.  The other side of that coin is that you are in the guts of something that you don't fully understand which will lead to bad design decisions.  This then makes it hard to get help because you will create unusual scenarios which are less likely to occur when you working within the confines of a framework.I have found that there are plenty of tutorials on the basics of a concept but very few that take you all the way from novice to expert.  Maybe I should be looking at a book for this?Using frameworksThe biggest motivation for me to use frameworks is that they are much more likely to be used in the workplace than a custom rolled solution.  This can be quite a benefit when starting a new job if it's one less thing you have to learn.I feel that there is much better support for a framework than a custom solution which makes sense; many more people are using the framework than the solution that you created.  The level of help is much wider as well, from basic questions to really specific, detailed questions.I would be interested to hear other people's views on this.  When you are learning something new, should you/do you use frameworks or not?  Why?  If it's a combination of both, when do you stop one and move on to the other?
Learning a new concept - write from scratch or use frameworks?
learning;frameworks;self improvement
Use a framework.It's always good to be able to add a publicly used framework to your resumeYou actually get stuff done rather than focusing on plumbing implementationsYou gain insight into how others do it. More cases than not, they have more experience than you, so you may learn new things that you otherwise never would have thought ofIf you still want to learn the internals, step through library code with your debugger. Enhance it (if it's OS) and provide patches to the author(s) if you think what you've written is useful.In short, using a framework will always get you up to speed with a design pattern than rolling your own. Even if it's an academic exercise, the insight that you gain when using another framework (or a number of them) is invaluable.There's no sense in rebuilding the wheel when there are a number of them already built, with solid documentation to help you in learning the specific patterns.However, if you have specific requirements that aren't met by something that's already been written, then that's another story altogether.