One of the biggest frustrations I have with .NET development is the code behinds that we see all over the place in different forms. While the code behind model is extremely dated, and smart developers never bought into it in the first place (even with WinForms there is no need to make it more than event handlers hooking to other functionality), the fact is that all of the tooling is dominated by code behind thinking. To make matters worse, using the code behind methodology is much, much faster to get things done than "the right way."
I've had a hard time shifting away from it, because nearly all of my .NET development is maintenance and modification of existing code that's already using it. What about you?
Justin James is the Lead Architect for Conigent.