@DeathByVisualStudio: I would like to subscribe to your newsletter...

Seriously, though, I get your point about overcomplication.  Stuff like NInject and MSFT's Unity are useful tools if you need to unit test parts of the application, so I do understand their usefulness, but I've seen them seriously overused on projects.

Oh, and another 'hardest part' is coming in to a project after a number of 'clever' folks have had their way with the design and chose not to document what that design was.  Spending a few months feeling like an idiot while you try to wrap  your brain around their 'clever' coding is a giant suckfest.