Ever since the first version of the .NET framework it has allowed us to create good object oriented code. Yet many .NET based applications have already been rewritten numerous times due to poor code and architecture and still the developers are feeling bad about the code quality.
Why is this? I think a major factor is due to the focus on technology, frameworks and tools, which by them self do not lead to good and maintainable code.
Though lately I've noticed a shift in the industry and on the projects that I'm involved in. We are slowly shifting to a more craftsmanship focus, where we value software principles and designs over technology. This has many great benefits for us developers. For years we have had to stay up to date on the latest technology. Today we can learn software principles and designs that have been around since the 70s, and reuse these across technological platforms. Over time this will give us better knowledge and more time to write good, maintainable code instead of spending valuable time learning every new framework out there. Cause today, most frameworks already enable us to create great software.