Developer Thoughts: Four Lessons We Learned While Creating our First WordPress Plugin
Building our first plugin wasn’t an entirely smooth process - anyone thinking of doing something similar should consider several things before they get started. Below are the lessons we picked up.
Mission Statement: What We Wanted To AchieveTwo months ago, we here at Docebo released our first plugin for Wordpress, which allows our users to transform their Wordpress content management system into an e-learning management system portal. The functionality we built allows users to embed Docebo-hosted e-learning courses onto their WordPress site, access e-learning courses and training reports directly from the WordPress dashboard, use a widget to display courses assigned to logged-in users, and import between Docebo and the Wordpress users database. It is no exaggeration to say, that we learned some of the most valuable lessons the hard way. Read what we found out, so you can avoid the school of hard knocks...
1. Think hard about your offering - do you know your users well enough?You need to have a clear objective that will benefit users of the plugin: in our case, it was the ability for Wordpress users to turn their website into a learning management tool. Our studies have repeatedly told us that many of our users are existing users of CRM, ERP and content management tools - which suggests that anything we can do to integrate further in this space will be worthwhile for them. So for us, the Wordpress plugin was both desired by users and fitted in with our broader strategy of making our platform a wider eco system that would allow us to talk to users that are not (yet) e-learning experts but that can benefit from e-learning integration with a third party. This requirement absolutely drove the development of the functional specifications - we sat down and thought hard about what we needed the plugin to do to achieve these goals. On the other hand, anyone considering taking the leap towards Wordpress plugin development needs to think about what users want in order to make their website more interesting and to drive traffic, and how it fits with an overall business strategy. One of the biggest ways we 'get to know' what our users want is by talking to people as much as possible - we use Vivocha for live conversations on the site, and regular user surveys are conducted with the help of Fluidsurveys. We also spent time working with Wordpress developers and site owners to understand why they would be using our plugin. We wanted to make sure that we didn't end up with a plugin that was loved by our existing users but rendered useless for everybody else, so we dedicated time to studying how Wordpress installations could be optimised for e-learning. Checking out the competition, if you’re in a field with competition, is going to be absolutely vital - you want to make sure that your plugin offers something different from theirs, and it will later feed into more practical aspects such as naming (most plugins are installed after a search of the plugin database search engine).
2. Ensure you have a methodology to followMost programmers and software engineers know which methodology they prefer to follow in their day-to-day work - ensure that you can transfer this over to Wordpress development too. As we discovered along the way, even small side projects require considerable attention - we found we needed a comprehensive test plan and a number of themes to test with in the development environment. In general, we'd always recommend writing the tests and then writing the code - it's just a better methodology and (assuming you're coding from scratch) won't disrupt your coding activities too much. So think hard about how your plugin is supposed to work (see the point above) and then begin to sketch out what will cause a failure given that you know now what it's been designed to do. For testing, developers can reference Wordpress' own Test Suite handbook, which guides plugin authors through the messy business of creating multiple automated tests (critical for complex plugins). You'll also want to get your hands on the Theme Tests, which are designed for theme developers but provide a useful WXR file of dummy data which simulates the structure and hierarchy of a complex live site. There's no doubt that testing a Wordpress theme adds a layer of development that most people would rather do without - but the benefits are tangible. Maintaining clean, organised and testable code makes future updates far easier, especially when you get to the point where hundreds of thousands of users are using your plugin on a daily basis.
3. Have a support strategy in placeIntegrating with a widely-used content management system like Wordpress dramatically widens a potential audience, but it also means many more support requests - you’ll need to think about what you can offer and what your strategy will be. Some plugin makers give their software away for free but then charge for support, which is an option if you’re time-poor, although it’s likely to lead to more frustrated users. At Docebo, we have several support strategies in place. We produce regular webinars, but also issue manuals for every integration that we offer - something that helps cut down on the number of support requests from plugin users. When errors do occur that aren't covered by the manual, we operate a ticketing system that's powered by Kayako - it automatically assigns priority and keeps the user updated on the outcomes, without much need for manual intervention from our team once they've looked at the problem. Of course, users can also log in and check tickets themselves. For the occasions where bugs are raised on the Wordpress plugin site, we operate a similar process - although it requires a member of staff manually raising a ticket and then keeping the discussion forum updated. Ultimately, your support strategy will come down to the amount of time you can spare to manage it. You may also want to consider getting users involved by using a community-supported solution such as GetSatisfaction. We went one step further in community involvement, deciding from an early point that we wanted to integrate our support network with contributions to the plugin, releasing the whole thing under the Open Source license. This allows other devs the opportunity to work on this plugin and to help us improve the Docebo E-Learning experience from a WordPress user standpoint.
4. Remember that perfection does not existCombining points two and three above, you're likely to reach this conclusion at some point - planning and testing can go on for months, but nothing is better than putting your work out there and seeing what happens. If possible, conduct closed testing with a small group of users before you get the plugin into the directory - use existing customers, your friends, a paid group of beta users or anyone else you can get your hands on as early as you can. Not only does this yield any technical bugs that may have slipped through, it's also a great way to refine the UI. Developing a plugin often results in the dev becoming too close, meaning that the backend of the plugin becomes a disaster for anyone who's unfamiliar with the premise of the design. Once this is done, you'll want to get your code out into the world. Be prepared to spend a large amount of time in support once you're live, especially in the first few days as users start picking up your product for the first time. But the web is a very lean environment – you can get a support request, execute the required code, test it and then deploy everything fairly fast. Which is definitely a good thing, because there will likely be mistakes you’ve made that lead to errors for some users - it’s just a part of life. With the above support strategy in place, and a rigorous methodology for revising and testing, you’ll be well on the way to creating a successful plugin. Are you into WordPress development, too? What are the learnings you'd want to share? Let us know in the comments below!
About The Authors
Jacopo Mauri is a natural born communicator, in love with everything related to writing & tech and with expertise as freelance journalist writing about technology and videogames. He's an experienced marketer and has worked for companies including Nintendo Italy and Microsoft Italy's official street marketing agency.(dpe)
Docebo is a global e-learning solutions provider with customers and partners in 29 countries - for more information, visit www.docebo.com.Nicholas Holmes is a marketer and copywriter in the first place. Over the years he has developed comprehensive knowledge in Ruby on Rails and Wordpress. Today he is able to as well build and write about a project, a killer combination.