views:

65

answers:

2

The title largely sums up my question but to expand, I'm a junior software engineer, but I'm also the primary developer for a fairly large department (mostly EE's) What would learning MEF do for me as a developer as far as professional growth, and what will it add to my projec that I can't manage manually?

+2  A: 

Using an extensibility framework like MEF would teach you good architectural design patterns. That is, instead of simply writing an application, you would also be writing an API that others can use to extend your application. You would create a platform instead of a one-off program.

All that is good for your resume; you're more of an architect than a simpler programmer. It's also good for yourself as a programmer on the project, as it makes it easier to add new functionality in a clean way.

Jeremy
yeah but it doesn't seem like it would work well in for instance, an agile environment.
Firoso
@firoso, I have to disagree. It could easily work in an Agile environment because your application shouldn't be concerned with MEF. The details of how your objects get wired up should be abstracted behind a well defined boundary. Behind that boundary you could use MEF, or whatever other technology you wanted to.
Josh
+2  A: 

Professionally using a technology that customers don't care about won't net you much of anything. Learning a new approach to building software, or a new concept will give you skills that apply to any language and platform.

In its most basic form, MEF is about favoring composition over inheritence. At the implementation detail level you can use it for doing application extensibility as well as dependency injection.

Learn how to apply the concepts first, and then you will be able to pick the right technology for the job instead of being locked into a single paradigm.

Josh