I’m doing a bit of research around Inversion of Control and Dependency Injection today for work, and I’ve been continually struck by how long these concepts have been around relative to the length of my career. Martin Fowler’s early article on the topics was published in January 2004, which was AFTER his Patterns of Enterprise Application Architecture book was release. These were the materials that were hitting my desk about the time I exited my first professional engagement (three years on a very non-agile C++/COM/WTL desktop application) and started the broadening stage.
Around that time, we took the principles and practices to heart on the year-long .NET desktop application (that arguably did more than the three year project we did previously), but the .NET language was still pretty new (just into 1.1), as were all of the frameworks around DI, so we ended up doing things more like this as a result, if I remember correctly. We were also using nUnit and feeling the design benefits of having good tests.
My point in all of this is just how not new these things are. And yet, I’m still regularly teaching people about the basics of these approaches, and finding people in our industry that are otherwise quite capable that are entirely ignorant about SOLID, DRY, DI, and many of our other basic assumptions.
I think that we, as a community , need to spend more time focusing on the basic of our craft. We have some prominent members who are quite effectively sharing their knowledge, yet many conversations I have at events like Agile 200x have almost a disdain for teaching those basic concepts.
Imagine a community culture where everybody teaches and mentors… I can… and I love what I see. Join me?