Tag Archives: php

Competitive Analysis

So, for a little over a year I’ve been working on a new WordPress plugin. A full-fledged management system for an industry that currently has about 3 or 4 major competitors.

This has been a big project, and I’d say I’m 80% of the way to being able to release something preliminary. I get sidetracked a lot and after working all day on code, I just plain don’t feel like coding when I come home. Plus there’s more fun stuff to do.

Part of what I’ve been doing when I don’t feel like coding is the competitive analysis portion. It’s a little late in the game – you should do this up front, and I did – but it keeps my mind occupied.

I have about 500 screen shots fo their systems, 40 Google documents listing features of each component including all the announcements of new features. I read their support forums, industry forums, magazines & newsletters looking for trends, patterns and unmet needs.

Here’s how the competition stacks up as I see them:

  • Competitor A – Nicely done interface, solid set of features, industry experience, attractive site, outdated demos, incomplete help. I’m paying a small amount for access to this site and their active user forum. The staff and users are active on the forum, but the site owner’s idea of customer service attitude is more attitude than service.
  • Competitor B – Ok interface (a little tight & terse), hard to navigate, solid set of features, broad appeal. Open demo site with all features. Help system is under a different company name, loads slowly, and isn’t terribly helpful.
  • Competitor C – Antiquated interface (the 90s called), I couldn’t figure out where to start, or add new stuff, layout is a single column of links, primary website hides more than it sells, help is not helpful. Well, I did figure out kind of how to add stuff.

In short, not only is the project fascinating to me (and extremely challenging), but there’s plenty of room in this market. Comp A claims to have 15,000 clients and Comps B and C would seem to have both plenty of clients and some money in their pockets (although C should spend it on programming, not advertising). My own scans of site lists shows a number of WordPress installs, but not a huge number.

Oh, and Competitor A runs ads every month (for the last 2 years it seems) in an industry print (and online) magazine. The ad is nice looking and appropriate, but the site they advertise (not their main site which is odd) actually has no content on it. It has a header and a menu, like it was meant to be a demo site, and yet there’s nothing¬† here! It’s a HUGE waste and makes them look bad, I think.

This is an industry where the companies spend hundreds of dollars a month, and carry huge investments in inventory. The competitors services are all fully hosted, and pricing varies. Comp A has packages ranging from $10 – $50 per month (mainly about capacity for storing the number of items) and Comp C is a $99/year. Comp B is a mystery. Their site doesn’t disclose pricing (so far as I’ve found) until after you join. And I don’t need/want to do that just yet. Apparently Comp B offers their site for “free” if you join one of their other services, starting at $12 per month. They all offer “widgets” and things you can include in your site that links back to theirs. If you don’t pay for a premium option, you get a url like http://mycompanyname.theircompanyname.com – which looks a little sad. I see why they do it for the upgrade.

My plan? In an ideal world, I’ll sell the plugin for $150 – $250 with lifetime upgrades and support. Perhaps selling additional modules, installation & configuration services. I may have to go higher. Also, turn it into a hosted service like the others do, running on WordPress multi-site and partnering with a web designer/firm to offer solid templates, and refer work. And everyone gets a domain. Subdomains like these guys use are as useful & professional as a hotmail.com email address.

This is a grand dream, and it’s going to take a while to get there. But I’ve put this out there for a few reasons.

Mainly, just to vent about how crappy these other guys seem to be. Don’t get me wrong, they’re all doing many, many things right and have pretty good word of mouth and awareness. But there are gaps. I’ll have gaps when I launch too and that’s ok.

Secondly, by putting it out there, my friends and family know about it and can call me to task on it when necessary. Yes, I’m a procrastinator, but that’s for a future post.

It's full of empty!

My god it’s full of empty!

I read a great article on Smashing Magazine today, detailing the author’s favorite Programming Mistakes, which really highlighted just a couple of mistakes I’ve made, and seen other programmers make.

Tonight, while waiting for Chris to come home, I was working on this big WordPress plugin project I’ve been doing. Apparently I’ve been doing it for a year, based on the dates on a few files. Well, I took like 4 months off to do another one, but I digress….

The point is I found a common programming mistake that I make, and I see my fellow programmers make at work. They forget to consider the EMPTY state.

My day job is working for a 15 year old website with tons of users. Our dev systems are replicas of live data so we have lots of stuff to test against. I call this the FULL state. What we fail to consider is the EMPTY state. What happens when a user first sets up an account and is face with a blank slate? Sounds like an obvious question, right? But it’s not always.

We all start with a blank slate and program for it. But a few days/weeks/months into a project, we have been re-using that same old test account with that awesome and witty test data for Bugs Bunny, Megan Fox, or whatever your favorite mock-data is. It’s familiar and comfortable. And you blithely make changes to this stored procedure, that class or some function.

And the code gets to the next phase. Maybe it’s QA, or maybe it’s LIVE/PRODUCTION (god forbid) and the first report hits.

“Dude, when I log in/click start/add a listing, I get a massive error.”

Huh? What? It’s been working all these months fine. What could be wrong?

Well, it turns out you didn’t consider that the user (fine, intelligent user that they are) hasn’t got any data yet!

Currently, running on my test blog for just such cases, my plugin looks like this:

It's full of empty!


Yeah, that’s not even close to pretty. Granted the big error markers are coming from xDebug so it wouldn’t look like this to the end user normally, but still, I obviously failed to consider the empty.

So, one of my jobs this weekend is to go and rework those functions to not explode if there’s not found data, but rather to gently prompt the user to go and enter the required data.

I’ll also want to add some nag bars to the system if critical data like this is missing.

I sure hope it rains so I’m not missing anything.

Stop what you’re doing!

A few years ago (actually just over 6 years ago), I discovered the Jim Collins book “Good To Great” and read it over the Christmas holidays. Jim tells about his research project on how 2 similar companies at similar points with similar opportunities end up at different levels. One company stays a “good” company (or worse) and the other becomes a “great” company.¬† It’s a fascinating read.

One of the concepts that comes out of it (aside from The Hedgehog Concept) is that of “stop what you’re doing” as a way to make your company great. This means to make clear, conscious decisions about what you SHOULD be doing, and do more of that, while also deciding what tasks/processes you do that detract from your focus, energy and business.

I’ve been advocating this at my 9-5 for some time, but haven’t been too good about applying it to my personal life and projects. Each time I see something shiny (not quite get-rich-quick but seem like a good idea), I get excited. Until recently. I’ve finally wrapped my head around it (or pulled my head out of my ass) and started IGNORING things that aren’t part of my focus. That’s not to say that my focus won’t change from time to time, but I think I’ve got a handle on what I’m doing.

I’ve also stopped renewing some of my domains. Apparently I owned about 30. And I’m not doing anything with some of them. They are, in fact, just time/energy drains. Not to mention financial. Each one is only about $10 a year, but together that’s $300 and if they aren’t earning their keep, why bother.

So – early in this new year of 2011 – what should YOU stop doing? How can you reset your focus on what’s IMPORTANT or USEFUL in your life?

baby elephant in a bowl

Eating an elephant

baby elephant in a bowlI have the coolest idea ever for a WordPress plugin. It serves a need that is currently somewhat served by only 2 other products. They’re established and well known in the industry, but neither actually integrates with WordPress, but rather you can insert some HTML and get an iFrame to the source site which then allows you to implement certain functions or features.

The problems with this that I see:

  • Difficult for non-tech people
  • Not brandable
  • Doesn’t look like your site
  • Your data is stored on their site
  • Requires another login to their site

Don’t get me wrong, these other 2 products are well respected and work, but on forums I often see people complaining about the appearance. One of the companies has done some really great variations on their widgets but even if they did 1000 of them, they may not fit the site you want to build. One native to WordPress either always will, or YOU the site owner will be able to make it match.

So, why is this an elephant? Because the project spans a wide range of features (I have 20 documents of features) it’s a massive project. The existing companies have built their products over a course of years, tweaking and fixing etc. I’m trying to at least catch up with them in a fairly short period of time. It’s like trying to eat an elephant. How do you eat an elephant? One bite at a time.

I’ve adapted a few strategies for this, including the above 20 documents, MindMaps, feature lists etc and I’m finding it overwhelming. But progress is being made. I’m learning a lot. I’ve taken/am taking the approach of building one feature/function at a time, depending on what’s required. I have my infrastructure defined, database wise, so that helps. Except I start researching something and discover something new. Like using custom post types, or 3 different ways to implement ajax, or how best to handle multiple user accounts and their custom data. So I have to re-think. Then WordPress brings out 3.0 and it’s got features I want to use, which would them make the plugin only available for 3.0+

One of the hardest things has been choosing a name for it. Once I get close to release, I’ll start shopping around for some smart people to get creative with a name. Which may mean changing my function names…

WordPress Plugin

Drafts Scheduler updated

Today I released version 1.3 of my WordPress plugin, Drafts Scheduler. I had initially numbered it 1.2 and added an Undo feature that was noted as missing by BlueFur in his review. Seemed like a good idea. I had noted that there was no undo feature in the notes and of course it caused people some issues.

So in v1.2, I added the ability to undo the most recent set of scheduled posts. If any of those posts were already published, the plugin doesn’t reset their status. It was simple. I’d started out making harder than it needed to be, but after ignoring it for a week, I found the solution.

In v1.3, I added 2 new features to Drafts Scheduler, both suggested by users who sent feedback.

  1. Check for the existence of drafts before showing the options.
  2. Schedule an exact number of posts per day in “Surprise Me” mode.

I also moved the menu option from the TOOLS area up into the POSTS area where it makes more sense.

Anyway, I hope these features work for everyone and I look forward to more feedback.