A few months ago, I contributed an article to WPTuts on Writing Maintainable WordPress Widgets. The motivation for this series was driven largely by the fact that as much as I love the WordPress community, there are more than a few poorly constructed plugins.
In some cases, this is fine. If you’re planning to quickly throw something together with no plans to continue development after its initial release, you can probably get a way with throwing something functional together.
But if you’re looking to build a plugin that you’ll be maintaining over time, then I believe applying good software development practices is a must. That is, I think that developers should follow the platform’s API, use design patterns where applicable, and clearly organize their files.