No matter how you use WordPress, plugins are the best way to add functionality to a site. Chris has already wrote about when to write a plugin vs. putting it into a theme’s function file. Instead we wanted to focus on when to actually build a custom plugin as apposed to just grabbing one from the repo or from another source.
Chris, Carl, and I agreed that for the most part, a custom plugin will give you more benefit. You can build exactly what you need for your site, without bloat or additional functionality you do not need that you will get from an off-the-shelf plugin.
Carl brought up a good point, in the enterprise realm when sometimes the WordPress application itself cannot be updated due to restrictions or requirements of the business, a custom plugin will usually keep the site from breaking. In his experience when sites are so custom (even built on WordPress) the off the shelf plugins can cause more of a headache, no matter how much you test.
I haven’t found that to be too much an issue personally, but I see the point. I think that good testing environments can keep you rolling with the punches as you update plugins making sure to keep auto updates for any plugin or even WordPress off.
I think we all conceded that sometimes, it does make sense to just go ahead and download and install a plugin. Sometimes a plugin does either exactly what you need, or the dev time to recreate would take more time than just fine tuning a plugin to match what you need.
Another great example is WooCommerce. I have built “cart” systems in the past when payment and shipping wasn’t really needed, however as soon as someone needed a full on e-commerce solution, I always just used WooCommerce (or other plugins prior to its creation). The payment connection to the API’s plus shipping, taxes, etc. were all going to take me way too long to recreate custom versus just fine tuning WooCommerce to meet the clients’ needs.
This was an interesting side conversation we had that Carl brought up. Other PHP frameworks like Laravel and Symfony both have LTS or Long Term Support versions, basically a stable release which only gets security patches or minor updates, and this version would last a lot longer. Right now WordPress is updated to a semi-major version (4.x) every few months. This is a pain for enterprise level which WordPress still hasn’t cracked into fully yet. An LTS version means that a large scale web application can be built with that version, knowing that no major changes will be updated into the system for a longer period of time, so it becomes more of a stable platform to work on.
In the end, there are use cases for both downloading a plugin or installing a pre-built WordPress plugin, and that really comes down to your skill, your time available, and the functionality. The only thing I can add is that you should always think about what plugin(s) before you jump into downloading or creating, be smart about the decisions since it could potentially be something that sticks around for years.