Last June I decided to do something unprecedented for me; I dipped my toe into the ExpressionEngine add-on market to try and sell some custom add-ons I'd written. Being the open source loving hippie that I am this felt pretty out of character for me at the time and I got a bit of grief for it from friends and my own id. But I've been talking about moving out of client services for far too long and figured a little experiment by writing some add-ons and selling them through Devot:ee (the de facto marketplace for ExpressionEnigne add-ons) would be a good introduction into full time commercial development. Looking at things 4 months later I realize that deciding do that was one of most important things I could have done for my career.
Those of you who read this blog regularly (which, I admit hasn't been that regular of late) probably noticed that I've been writing more and more about ExpressionEngine over the last year and a half. Obviously, I've been doing a lot of ExpressionEngine development. Mostly for client work but, like most things a good programmer does, I eventually built up a go to library of custom stuff for when new projects started. Just your normal stuff really; a couple extensions and modules to make my client's lives easier and give that little "extra" to make a project sparkle.
Then, my CartThrob project ended. This is a project that will forever have a place in my heart. Not the site specifically mind you, which is pretty awesome BTW, but the clients tight budget combined with needing more from the site than they had initially outlined created a dilemma that presented an opportunity. I could either hand off the site as is, which was to the client's spec but not to their expectations, or I could continue working without getting paid to make the client happy. Then, a third option came to mind.
I proposed to the client that I build an add-on to handle their needs on the condition that I retain ownership of the add-on. The plan was simple; I'd write this add-on and then sell it on Devot:ee in the hopes that eventually I'd recoup my loss in time investment. Hence, the birth of my first commercial add-on now called CT Admin. That... I then sat on for a couple months while I worked up the courage to put it up for sale.
The more I thought about releasing CT Admin the more nervous I became over the prospect of putting out an add-on that's only useful for users of another third party add-on. Starting out with a customer base that's a small slice of another company's customer base isn't exactly a good way to measure an industry. So, I decided to release a second add-on around the same time as CT Admin.
This second add-on, now named Backup Pro, was at the time a specialized backup add-on I'd written for my hosted clients which due to certain configuration conflicts couldn't use any of the existing ExpressionEngine backup add-ons on the market. Releasing Backup Pro was also a gamble though of a different sort; as mentioned there were existing add-ons within that niche and and one of those competitors has fiercely loyalty customers (Hi Tom!). But still, two add-ons are better than one. Right?
So on June 10th I had a stiff drink and posted my add-ons to Devot:ee. And a whole 24 hours later I sold my first add-on. Immediately, I realized I was in. I was hooked. The joy I felt when I got the email notification from Devot:ee about the sale was absolute and total. Someone had paid me money for proprietary code I had written that I was going to be able to sell again. Fuck. That was the sweetest $24 I ever made.
But $24 also came with a weird sense of responsibility I never really felt writing OSS code. With OSS I'd always kept things at my pace and, unless there was anything critical that affected me personally, individual issues other users experienced weren't that big of a priority. But, with the ExpressionEngine add-ons, that someone had paid real cash money for, the paradigm shifted from random and faceless users to clients. In essence my customers became my clients and that's a dynamic I've always been comfortable with in terms of knowing how to respond. Put simple; complete and total support until they're happy.
And that's really the key to everything right there. What initially started out as a small experiment I personally likened to an OSS project morphed into me sharing some responsibility with other developer's client work. Shit got real all of a sudden. People were paying money on my code with the belief that the code would help them solve their client's problems. For those users who had issues (and there were more than a few) my responsibility could not be denied.
Initially, I was naive enough to think I could just post my add-ons to Devot:ee and go about my life. I had no concept of how much care would have to go into support and customer satisfaction or the amount of hours I'd spend in the Devot:ee forums and answering questions on Twitter. To give an idea of just how many updates there have been; at the time of this writing Backup Pro is at version 1.8.1. That's a lot of bug fixes and feature requests in just under 4 months. Almost to the point of ridiculousness.
But it's addictive. Extremely so. The more feedback I got, and the more features and bugs that were fixed or added, the better the products became. The process creates a really nice positive feedback loop wherein we're all winners. The customer gets a better product, I get to create a better product which, in turn, makes my products more appealing to others. It's really something to be a part of.
So after 4 months of progressively improving my products, networking within the community, building a dedicated site for marketing and having an absurd advertising appetite and a library of 7 add-ons now, I look around and realize that I'm a part of something I had never anticipated; the ExpressionEngine community. And it feels like home.