WordPress is the de facto No.1 CMS. Plugins are the means to expand the functionality of any WordPress installation. Most work rather well with any Theme (=Design). Subsequently there is a huge number of plugins available.
I was always the enemy of rampant growth, due to my many years of experiencing its downsides first hand, so I thought about when a plugin should be created.
Sure, customers will have special requirements. But in most cases there is a plugin available for just that, which can be used as it is or modified. In most other cases, the customer has a custom Theme, which I made, so I can put the new functionality just there.
Recently however, there was a customer which cannot give me FTP access to its system, so that is actually a really good reason to use a plugin. And, if this plugin is not available, to write one.
Maybe this plugin will soon be available at the WordPress Plugin Directory.
Anyway, Writing a WordPress Plugin is pure Coding Fun. Well documented, nice coding standards and the seemless integration is a breeze. It is extremely easy to set up your own settings page, so you don’t have to interim-hardcode anything, ever.
Since a plugin is complete encapsuled the reuseability is a great bonus. I’m loving it.