Monday, June 25, 2012

Polyframework

Last year at MADExpo, I was introduced to the world of Ruby. While I have only gotten half-way through the getting started guide, just being exposed to a new language, and more importantly, a new point of view for development, has made me a better developer. But this isn't a post about being a polyglot, for that go listen to Scott Hanselman talk with Ivan Towlson on Hanselminutes. I want to talk about a being Polyframework.

Recently I began to learn Backbone.js in ernest. For the last six months I have spent a majority of my time developing pages with Knockout.js, so as I started learning Backbone, it was only natural for me to compare what I was learning with what I do daily in Knockout. What I am finding is that learning Backbone has helped give me a better understanding of Knockout. I think this is because working with a new framework helps give you a new perspective.

It got me thinking about all the other frameworks I use, and how knowing more than one framework for any given problem domain has made me better at using all of them.

The open source community has a love affair with Ninject. At work, we use Autofac. I find that each does something better than the other. I find that the perspective of using one makes me better at solving problems with the other.

When I first learned TDD, I was taught using MbUnit. It took me months to stop complaining about NUnit. Now I usually choose NUnit but having used MBUnit, NUnit, and xUnit have prepared me so that I won't have to complain when I get that project that requires me to use MSTest. I will have enough perspective to figure it out and get on with my life.

As I write this it occurs to me that this doesn't just apply to just frameworks, but toolsets as well. Last month, just for kicks, I set up a new VM so I could try using CodeRush instead of ReSharper. Man talk about moving my cheese. But I learned that its not a matter of, "can it refactor" but more a matter of "what key command initiates refactoring?"

I complain a lot about SVN, get lost in bash hell when hunking a commit in Git, and love the TortoiseHg Workbench. All of them have taught me how to evaluate a good implementation of a feature vs a bad implementation and reflect on each tools pros and cons.

So the next time you find yourself in File > New Project, consider trying a different NuGet package for logging/testing/injection/scaffolding.

No comments:

Post a Comment