Loyalty has its limits!

This week I finally quit using Internet Explorer and started using Chrome.  I finally got tired of all the problems I was having with IE simply deciding not to come up at all – just spins the icon and then stops with no errors in the Windows logs or anything else useful to track the problem down.  Google searches for a solution only reinforced the fact that others have the same problem and that Microsoft suggestions are useless.  Microsoft is big enough that they can deliver reliable software if they really want to.  They must think they simply don’t have to.  How many other companies act like that?

In itself, this isn’t a momentous event – just a change to a different browser.  In a larger context, though, it is so typical of software vendors who may spend a fortune acquiring a new client only to lose that same client some time later simply due to lack of attention or lack of responsiveness to even minor issues.  I have witnessed this in many vendors – not just a few.  With a little TLC and attention to detail, those vendors could keep their hard-fought-for clients and not lose them to the next pretty face.  Unfortunately, most clients I have seen simply move on to another vendor who does the same thing to them. What a shame.

I have always held the belief that by signing a contract, your client trusts you to provide a system that protects them and their business in some way.  When you don’t deliver, you can cause them real damage.  The damage is bad enough but the loss of integrity, loss of faith and trust, are inexcusable.  What I found over the years was that the clients that you take the best care of are the same clients that stick with you for years.  They ultimately provide you more profitable business than a new client that you spend many dollars courting.  This isn’t rocket science.  Why can’t vendors compete on quality and service?

Think about your major vendors.  Do they deliver what they promised to deliver before you signed the contract?  If you have a problem with the software, how soon it is resolved?  If you actually have SLA’s spelled out in the original contract, are they honored?  In the latest contracts I have worked with, the clients have added “liquidated damages” associated with SLA’s.  When I was in the software business, I would have hated that but what I am finding is that only companies who are afraid (or know) they won’t deliver (probably because they haven’t in the past) are really opposed of them if they are structured properly.

If you think that liquidated damages associated with SLA’s are too one-sided, a good solution is to make them work both ways.  That is, if the vendor fails, they pay or at least give up maintenance payments, but if the vendor exceeds the SLA’s they get rewarded financially.  It can be worked out.

While I am beating this horse, you should try to identify who your allies are among the vendor’s employees.  If you purposely maintain a good relationship with the technical staff, you might do better with them than trying to deal with people more interested in the next contract rather than yours.  In my experience, the technical people really want things to work and often fight for the rights of the clients even when they aren’t allowed to specifically say so to those same clients!  Most technical people I know and ever read about, complain constantly of being forced to release software before it is ready.  I’m not talking about just association software vendors either.

Anyway, it took me too long to finally change to Chrome.  I should have done it sooner.  Perhaps out of laziness I put up with the problems longer than I should.  Then again, I wasn’t paying huge maintenance fees every month either.  If you are, then don’t settle for anything less than what you were promised during your client-vendor courtship.

Getting Real with Proposals

Recently, I have been involved a process where I was to review proposals for an IT project that would ultimately cost in the 10’s of millions of dollars.  This was truly a view from the other side.

For many years I was involved in the preparing of proposals and now I’m on the other side looking at what other people do to respond to the same sort of thing.  In this case, though, the proposals were for projects vastly larger than those I used to help prepare for the association world.  What really surprised me was the wide variation in quality of the proposals.  Some were done very well while others were simply junk.

Now, you have to understand that having been involved in reading and writing so many of these, I have become a bit jaded.  Over the years, I have become fairly good at reading what is written, analyzing what is said and also what is not said, then considering what would have been said if what was said was true!  Now that’s a mouthful – but true.  Everyone wants to display themselves in the most positive light but often fail just because they try too hard – or simply aren’t particularly truthful!

Here are a few observations for those who are writing these proposals:

  1. Be honest.  Whatever you say will be checked and if your proposal comes off as a little or a lot misleading, you have created a very bad taste in the client’s mouth that won’t go away even if you get the contract.
  2. Assume that there is someone like me reading your proposal who knows how vendors skirt issues and try to make the language such that they can always come back and say “You just didn’t understand what I meant to say.”
  3. If you have a long requirements checklist, be careful to fill it out with a lot of thought and truth.  If I see that the vendor has simply said they can do everything with no modification or customization and no request for clarification, I know this can’t be the case and I consider the vendor untrustworthy.  BTW:  I hate checklists, too.  There is never enough information to answer clearly.  I expect the vendor to need to ask questions.
  4. If you imply that you got a contract from some other entity that supports your qualifications to take this contract, assume that someone will check to make sure that is true.
  5. Talk less about how good you are and more about how you are going to do the project.  Some of these proposals hardly mentioned the project at hand and approached it with “We are so good, we can do anything”.  I want to see that your company is right for the job and is organized in your approach and that you understand the specific work at hand.
  6. The thickness of the proposal doesn’t equate to quality!   Shoveling in reams of boilerplate information that is not relevant to the person reading it doesn’t make the proposal better.  Repeating the same boilerplate multiple times in the same document just makes it all worse.  It just frustrates the very people you want to impress.I recently read a proposal that happened to use Oracle where they copied all of the technical documents on how the Oracle Policy Automation tool along with how all the Oracle Identity and Access Management tools worked.  Oh please!  Be concise; the client will appreciate it more.  If the reader is technical, chances are they will already know this stuff.  If they are non-technical, they won’t understand it anyway.
  7. Follow the structure of the RFP when you are doing the response.  It amazed me that many people going after this big project didn’t.  The best proposals literally copied sections of the RFP followed by their responses to that section.  Then within the response, they provided exactly the information the client asked for.  What a breath of fresh air.
  8. Have a good technical writer proofread your work before you send it.  I can’t tell you how obvious it is when there are grammatical errors in the cover letter and spelling errors within the body of the proposal.  The client will assume your attention to detail on the project will not be better than your attention to the detail in the proposal.
  9. No matter how good a proposal writer you are, be realistic about what projects make sense for your company.  If you are a small company with a small staff and limited experience, you shouldn’t waste your time on a proposal for a very large project outside of your credibility zone.  Use your time more wisely and go after something you have a ghost of a chance to get.
  10. Finally, be realistic on the price and don’t assume that you are the only bidder or that you name alone will warrant enormous differences in price.  Remember that many proposals are scored and cost can be a big element of that.  You may have a great proposal but zero scoring points on cost and lose the deal that way.

Good proposal writing is an art but being truthful will win you more trust than obfuscation of the facts.

Best-of-Breed Plus Rules Engine

In a past post, I talked about a different approach to Association Management Software, in fact, starting a company where the software provided simply an interface to other vendor solutions.  Anymore, I think this approach is reasonably valid given the sophistication of the various niche players for such things as financial systems, meeting registration systems, publication systems, political action systems.

In another post, I talked about things like a “generic product” to get around the complexity of the typical association purchase where there is a combination of a membership, book, and meeting registration sold as a single product.  Ultimately you need something that will recognize what the “generic product” is and then do something with that knowledge, i.e. send a packing slip to the order entry system, send badges and information to the meeting registrant, and notify the membership chairman that a new member needs to be contacted with a welcome package.

What could bring all of this together is a good rules engine.  There are a number of commercial rules engines out there – inRule is one that comes to mind for .NET developers but there are many others too.

For those not familiar with rules engines, the idea is to isolate the rules and workflow from the interface and from the basic application to encourage reuse of the rules and allow end users to define the rules and workflows themselves.  A rule might look for a specific condition either automatically or by specific request and then raise and “event” or send the application a message simply saying “yes” or “no”.  There can be many of these rules.  “Does the order contain more than 10 things?”  “Is the customer a member?”

Then, there is a workflow layer where, based on the event raised by the rule, the system can actually do something, i.e. if the customer is a member and also purchases more than 10 things, give that customer a 10% discount.  Another example might be to send the customer a message saying they can’t buy anything unless they pay their outstanding balance.

Anyway, it seems to me that if you combine a rules engine with the concept of generic products and customers (members) along with all of the best-of-breed vendors, you could create an extremely flexible and scalable solution for association management.

What do you think?

Simple Database Structures Lead to Complex Reporting

It is interesting to look under the covers of WordPress to the database architecture see how people are creating plug-ins to deal with so many different functions.  Take a look at the table wp_usermeta that stores information about users.  The structure is simple but perhaps too simple.  Ultimate flexibility often leads to ultimate complexity in reporting.  Looking at the structure and how some plug-ins use it will reveal another major reason why the WordPress approach would not work for large organizations.  The structure of wp_usermeta:

  • umeta_id
  • user_id
  • meta_key
  • meta_value

This is the ultimate in versatile database structure.  You have a unique key (umeta_id) for the table and then a field to link to a specific user (user_id).  Beyond that, you can define anything you want as a meta_key and then provide one or many values within meta_value.  This can be as simple as:

meta_key=’lastname’ and meta_value = ‘Brantigan’

In a typical relational database structure, you would define a “customer” table with specific fields for first name, last name, and other demographics.  For data elements that are less specific to every customer or one to many relationships like specific product orders for a given customer you might create a separate child table.  When this is the case, you have relatively easy reporting – but not with wp_usermeta.

What happens in WordPress for some plugins, the vendors use the wp_usermeta table for everything and then structure their data within the one meta_value field.  Here is a rather complex example used by Magic Members plugin:

meta_key = ‘mgm_member_options’ and meta_value = ‘a:2333:{s:2:”id”;s:1:”6″;s:13:”custom_fields”;a:14:{s:8:”username”;s:0:””;s:8:”password”;s:10:””;s:10:”password_conf”;s:1:””;s:10:”first_name”;s:3:”Tom”;s:9:”last_name”;s:9:”Brantigan”;s:5:”email”;s:25:””;s:9:”boat_name”;s:14:”Toccata in Sea”;s:10:”boat_model”;s:4:”C387″;s:11:”hull_number”;s:2:”96″;s:9:”home_port”;s:16:”Middle River, MD”;s:12:”display_name”;s:13:”idealuser”;s:8:”jib_size”;s:0:””;s:23:”sail_configuration_main”;s:3:”Std”;s:9:”keel_type”;s:3:”Fin”;}s:22:”other_membership_types”;a:0:{}s:12:”payment_info”;a:0:{}s:6:”coupon”;a:0:{}s:7:”upgrade”;a:0:{}s:6:”extend”;a:0:{}s:4:”code”;s:10:”mgm_member”;s:4:”name”;s:10:”Member Lib”;s:11:”description”;s:10:”Member Lib”;s:7:”setting”;a:0:{}s:6:”saving”;s:1:”1″;s:8:”trial_on”;s:1:”0″;s:10:”trial_cost”;s:1:”0″;s:14:”trial_duration”;s:1:”0″;s:19:”trial_duration_type”;s:1:”d”;s:16:”trial_num_cycles”;s:1:”0″;s:8:”duration”;s:1:”1″;s:13:”duration_type”;s:1:”l”;s:6:”amount”;s:1:”0″;s:8:”currency”;s:3:”USD”;s:9:”join_date”;s:10:”1327096345″;s:13:”last_pay_date”;s:10:”2012-01-27″;s:11:”expire_date”;s:0:””;s:15:”membership_type”;s:6:”member”;s:6:”status”;s:6:”Active”;s:12:”payment_type”;s:0:””;s:13:”user_password”;s:16:”6cf89Y9K8AX3W8TNT”;s:7:”pack_id”;s:1:”3″;s:17:”active_num_cycles”;s:0:””;s:12:”account_desc”;s:12:”Free Account”;s:10:”status_str”;s:27:”Last payment was successful”;s:16:”hide_old_content”;s:0:””;}’

Though you can do almost anything with such a generic table structure, trying to do a simple SQL query against it to create analytic reports is really tough!

Why not WordPress instead of a commercial AMS?

I’ve spent a number of posts discussing how WordPress could be used in place of an association management system for small associations but when you get right down to it, I don’t believe for a minute that the approach would work for a large association.  In the past, I have discussed how I think future software could be written for the large association but for now I think they are stuck with the commercial options.

Here are a few reasons:

  1. Large associations want what they want and they have the money to pay for it. Lip service is paid to keeping customization costs down but seldom have I seen the large association follow through with this and not cave in to the powerful membership or marketing director who is dead sure that their complex approach is what holds the entire organization together.  No one wants to abandon their complex pricing and discounting schemes.
  2. Software support is vital to a large organization. Depending on a mix of software from small independent vendors is a dangerous thing when you are protecting the crown jewels of the organization.  Though I have found support for many plugins to be good, I have also seen some where it is not so good.  What’s more, once you commit to a specific plugin, it is difficult to swap it out for something else if something no longer works. Then again, support from the large AMS vendors isn’t as responsive as we would like but at least you have somewhere to go to exert pressure where necessary.
  3. Commercial association management software for large associations is not something that small companies can effectively deal with.  Large associations understand this.  Creating the software is expensive and requires a large install base and large staff just to make the ROI work.
  4. Association staff may pay with their job if their decision on what software to buy is not correct.  Remember when companies bought IBM machines and software because they could never be criticized if they did so?  The same is still true today.  Large associations buy software from well-known established companies.  That doesn’t necessarily mean that the implementation will run smoothly but makes it easier to justify later.
  5. Reporting is vital to large associations.  There are a number of aspects to this.  Not only do the large associations need a large set of “standard reports”, to be successful, they need the ability to do effective ad hoc queries and reporting to adequately analyze the business particularly trends in membership and sales.  Database structures that support good ad hoc reporting are by nature complex and the tools must be able to deal and hide (where possible) that complexity.  Next week I’ll do a post on complex reporting from simple database structures.  There is no free lunch!

So…though I have been impressed with what you can do with open source software for smaller associations.   I just can’t believe that it will work for the large group.

Is the AMS dead? (Part Two)

Association Management Software (AMS) has been around as a specific genre since the 70’s.  In fact, my original company, Resources, Inc., in Chicago, created some of the first commercial software for associations first as something accessible through our service bureau and later as software to be installed on-site in the association’s offices – a new thing given the cost of computers.  They were “mini-computers” defined as something about the size of a refrigerator requiring enough air conditioning to prevent Chernobyl with about the power of a modern-day watch!   The American Academy of Orthopedic Surgeons was one of the first organizations to install this commercial “generic” association management system – though totally generic lasted only until the second client.

Over the years, the technology has changed and has gotten more and more flexible to deal with the many variations in the association world.  These variations are what currently prevents, or at least postpones, the death of the AMS (association management software).   The real question is whether or not the variations and complexity are worth the cost.

Association software is very expensive to purchase, install, and maintain.  If you understand the association software industry you can understand why this absolutely has to be so.  This is a small niche market where customized capability is the norm.  Given how small the market is and how fast the technology is evolving, the cost of creating the software in the first place can barely be made back in software sales.  This is why most association software companies are really services companies rather than software companies.  They make their money on providing the staff to implement, modify, and maintain the software – and that’s expensive.

This is not to say that association software has so specific to the association world.  In fact, if associations really calculated the cost of what they are doing, I suspect more and more of them could move in the direction of a best-of-breed approach unified by a company providing just the integration strategy, software, and support.  Were I to start a new company – and no, this isn’t my current intention – this is the approach I would take.  I would look for the best software to deal with accounting, meeting management, product sales, transcripts, etc. and simply create ways to integrate it all into a unified view centered on the member.  What current vendors call “partner programs” becomes the primary source of software functionality for associations.

What would it take for this to be successful?  The most important thing is that the associations need to be less complex in terms of pricing and discounts.  They will never get away from the idea of member versus non-member pricing and perhaps will never get away from inventive bundles of memberships with meeting registrations and other products.  Then again, perhaps rebates of the member benefit may be a cheaper way to accomplish discounts through pricing and accomplish it outside of the order system itself.  There are lots of possible options to all of the complexity issues if you only think about it and are open to change.

What associations need to do is rethink what a “product” is.  Essentially, a product can be anything with a name, description and price.  Beyond that, why not handle the contents of that product externally to the product sales system itself.  If a customer buys a membership that includes a meeting registration, the integration would be created to interface with the membership system and registration system but the sales system would be simple and independent of the rest.  Yes, there are still issues to be resolved, e.g. restrictions on the number of spaces available at the meeting, but these can be worked around if you think carefully about it.

Much of the complexity – and slowness – of association management order systems results from having to check everything at the time of placing the order.  For instance, the system may have to see if the customer is a member and if so, what kind of member.  Is the product a defined bundle and if so is everything in the bundle available?  Is the product involved in some discount structure whereby if you buy this widget and that widget you get 50% off each?  Should the system optimize price in favor of the customer or in favor of the association.  (I’ve seen both – even in the same association!) If there is a meeting registration involved, the system needs to check to see if there is space in the meeting and potentially space just for a specific type of member.  If there are problems, then the system needs to notify the customer immediately.  There is simply too much complexity just to purchase a “product” and even then, it may not work.

In reality, modern systems are “disconnected” meaning that requests are sent to the database and answers are returned to the customer’s browser and in between requests, one really doesn’t know about the other.  This provides the most efficiency for the central system but also provides a catch-22 in terms of accurately telling the customer whether or not there is space in the meeting.   In truth, between the time the system tells the customer that there is space, someone else may commit that space and the original customer will still be told on committing the order that there isn’t space and their order will fail.  Note that to do this, the system first has to calculate everything to see if there is space and then has to do it all again to commit the order and even then may not succeed in placing the order.

So, let’s go back to the complexity issue.  If the association could simplify the process, it could eliminate the need for the complexity in the software and eventually get to where the “best-of-breed” approach would be well worth while.  Instead of checking for everything real-time, an asynchronous process could make response time almost instantaneous.  Then, for those few situations where a problem exists, the customer can be notified that there was an issue.  Rather than checking for real-time inventory or meeting registration space every time, the assumption could be made that space was available until it wasn’t at which time the product itself would be flagged as unavailable so future checking wouldn’t be necessary.

This has gotten a little long-winded but perhaps you get the point.  A few things to think about:

  1. Association management software is expensive since it has to be to cover all the exceptions and pricing schemes.  Is the complexity necessary?
  2. Association management software is slow because of the complexity.  Should we really inflict that slowness on our valued members?
  3. A generic order system could handle almost anything assuming there was good integration between the order system and the “best-of-breed” components.  Designers just have to think differently.
  4. An asynchronous approach would eliminate time-consuming repetitive and still inaccurate processing and make the integration approach possible.
  5. Simplification of pricing structures would allow “best-of-breed” order systems work.  Being creative could even get past the issue of member versus non-member.

Sounds like an interesting approach to a new company…

Think about it.  What do you think?

Setting up your own blog based website

This post is for people who want to set up a website for a small association and need to do it inexpensively. Commercial association software is expensive but often very comprehensive. To create a website inexpensively for the Catalina380 International Association, I did this using WordPress as a foundation just as I have described in previous posts.

I’m sure there are lots of articles about how to get started with a WordPress website but I thought it might be interesting to people to have an abbreviated summary of what I found beneficial when starting from scratch up to having a live site at a hosting facility. Though you can easily get the application running at www.wordpress.com, here is what I suggest if you want to do more than just get it started. In fact, I will assume that you already have the basic application running.

Background Knowledge

First, you need to know at least a little about IIS if you are working with Windows. If you don’t already have IIS started, you will need to start it by checking the check box for IIS through Control Panel->Programs and Features->Turn Windows Features On and Off. Internet Information Services Manager that comes with Windows makes it simple to create a new website for your testing. If you do everything through the hosting facility, they will take care of most of this for you. I liked having a local site to play with as well as the hosted site.

It is very helpful to have a basic knowledge of PHP and of CSS (cascading style sheets). I found a web site that provides this background very efficiently and the information and tutorial is free:

http://www.w3schools.com/php/

http://www.w3schools.com/php/

What I found was that I needed basic knowledge in these areas to figure out how WordPress works and to make changes to the various available themes. For instance, I found that the theme TwentyEleven was closest to what I wanted but I didn’t like the wide space at the top of the page. To change this, you need to find the correct php file in the themes folder, find the controlling section and make the changes. Other changes I wanted needed to be made through the style.css within the theme folder. For instance, I wanted a bolder horizontal line than provided in the theme and this can be changed easily in the style sheet.

Useful Software

There are a couple of free applications that will make your life easier:

MySql: http://www.mysql.com/downloads/mysql/   Again, I set everything up locally before moving things to the hosting facility so I needed a local installation of the database. It’s free. There are multiple levels of MySql but the community edition (free) is all you need. Installation is simple. Installation of WordPress itself will create the needed database so you don’t even need to worry about this.

FilZilla: http://filezilla-project.org/ This is a very easy to use FTP file transfer program that is a must if you are going to transfer files from your local machine to a hosted server and later when you want to edit a file on the hosted site by first pulling it to your own machine, making the changes, and then pushing it back up. For my project, I first developed everything on my local machine and then transferred files to the hosting site to make sure things worked there and ultimately to bring the site live. Your hosting site will provide the connection information you need and once that is resolved, the rest is a simple drag-and-drop from your machine to the hosting machine.

MySQL Workbench: http://www.mysql.com/products/workbench/  When you install MySql, particularly if you come from a SQL Server or Oracle environment, you find that you can get to a command line (CMD => MySql) and from there you can work using Sql but still only through command line syntax. What MySql Workbench does is provide a Windows interface through which you can work with your database as you would through SqlServer Management Studio if you were working with SqlServer. Furthermore, this gives you a very easy way to back up the database and restore it if needed.

Though WordPress has the ability to back up and restore, doing this directly with the database with MySql Workbench gave me an easier and cleaner way to do this. The script created would do everything from create the database to drop and recreate the needed tables and finally to load them with data.

Microsoft Visual Studio: (This one isn’t free!) Though you can certainly modify .sql files with any text editor (not Word or something that buries its own information in the file), Visual Studio provides a way to load the backup file generated by MySql Workbench and do global search and replaces. Why is this useful? When you develop on your local machine and want to transfer everything to the hosting site including the database, you can change the URLs easily from “http://localhost/mysite” to “http:/www.mysite.com”. This is particularly important since WordPress ties itself together in many ways through URL’s.

So there you have it. If anyone has other recommendations, please add them as comments!

Cheers!

Shopping Carts in Blogging Software

Shopping Carts in Blogging Software versus Association Software

Let’s continue with my small site for the Catalina380 International Association.  Though the association’s officers didn’t want to sell anything just yet through the site, I wanted to make sure this would be easy to do later – when they see the light.  Just as with membership plugins, various shopping carts are available as WordPress plugins.  Even the MagicMembers plugin provides links to various payment gateways to take credit cards for membership.

The important thing to understand is that you don’t want to deal with credit cards on your own.  The credit card rules are simply too complex for anyone to keep track of.  Even the larger commercial packages are – or should – give up on dealing with credit cards and just outsource the headaches.  It used to be that large associations wanted their own control of credit cards so they could have a “credit card of record” to make it easier for the member to purchase things later using the same credit card.  In fact, they wanted to store the credit card numbers for automatic renewal of memberships.

All of this is well and good but companies like Verisign have worked out strategies to allow all of this to happen without your association having to store credit card numbers at all.  Taking advantage of this is the way to go.  For the small site, PayPal is probably the best solution to sales.  They are used to dealing with both large and small associations.  Vendors of commercial association software and using these same companies to handle credit card transactions.

If you sell just one type of thing, you may well purchase an inexpensive plugin to deal with simple order entry and payment processing.  Where I see the real issue for large associations is that a large association typically sells a lot of different types of “products” from inventoried products to meeting registrations to exhibition booth space to transcripts to memberships.  What’s more, these are all highly interrelated in terms of packages and pricing models.

I have yet to see this kind of ability from the simple open-source software providers and especially from blogging software being used as an association website.  It is difficult enough for a commercial association management software system to provide this.

Then again, consider what you could do five years ago versus what you can do now for little expense.  “Websites for the Masses” is a concept that is coming.

In my next post I’d like to take a look at a more radical view of association software.  Stay tuned….

Oh no! I’m an Association Software “User”!

How often have I heard software developers say “Software development would be much more fun without users!”  Now, in my new life “on the other side”, I find myself a user – a user of association software!

In my career, I was once the manager of a customer support department for a company that was a distributor of financial software written by a different company.  When it didn’t work, it was frustrating to both me and the customer.  The customer didn’t care if I was frustrated; he just wanted it fixed.  After all, why did we sell something that didn’t work.

At another time, I was the president of my own software company and, perhaps to the detriment of our bottom line, we cared a lot about customer support and went out of our way to try to do it right.  Yes, there were problems that had to be addressed, but I felt good about the way we responded.  Once, when a client told me he wanted to see me in person to discuss the installation process, I took the next flight out to accommodate him.  That was a good experience.  That person, though retired now, has remained my friend for over 25 years.

I have heard of companies where software is released even when developers say it isn’t ready but for various reasons the company feels it necessary either to meet competitive issues or sales promises.   Well, imagine that level of frustration for both the client and the developer much less the support personnel.

Someone I respect once commented that he couldn’t understand why software companies didn’t compete on the basis of quality and service.  Quality matters.  Service matters.  When it is bad, people remember.

Now, as I work with this new website, I find myself working with other people’s software and find myself in the position of a “user”.  I have seen both good and bad support through this process.  I got very little help from the WordPress organization and some of the plugin creators.  From MagicMembers, the plugin that handles all of our membership issues, the support was tremendous.  It was responsive and always helpful.  Thank you, Angela!

From all of this, here are my thoughts directed toward software companies trying to be successful:

  • Without clients, your business doesn’t exist.  Treat them even better than you treat prospects.  Don’t assume that a signed contract means you don’t have to go out of your way to please the client.
  • Be responsive to your clients particularly during implementation.  Nothing is more frustrating when needing to get your software working than the inability to get help from someone who knows how things are supposed to work.  Don’t assume users are stupid because they don’t know the internal intricacies of your architecture.  Never have the attitude that whatever is wrong is user error – even if it is!
  • Personalize your support.  In a paragraph above, I thanked Angela for good support.  When she first began to help me, she identified herself and she personally followed my progress and ironed out issues I was finding.  I felt she was personally committed to my success.  All of this was from a company who sold their product for $97!  Just imagine the support you should get from a company whose software was priced in the hundreds of thousands!
  • Still along the lines of personalized service, go beyond the basic facts if you can.  Try to get to know the client personally so that not all conversations will be about problems.  It is amazing what a good relationship can do to smooth the rough places in an implementation.  Personality counts.
  • As a user, I would rather wait for something to be fixed than be given something to do that you know doesn’t solve the problem.   I don’t want to be told to load the latest version if you know that the problem still exists there.  Fixing one important thing to break something equally as important doesn’t help me much.
  • Honesty is better than anything.  Nothing is more frustrating than feeling like someone is blowing smoke up your …..  If something isn’t working and you know it, admit it so the client doesn’t waste time trying to figure out if it is their own lack of knowledge.  If you know it can’t be fixed for a month, say so, so the client can make appropriate plans.
  • Users, on the other hand, should try to understand their support person who may not have much influence on getting something fixed but should be responsible for helping you with their knowledge of how things work.  Be nice and they will go to bat for you.

Downside of Plugin Technologies

Before you think that plugin technology in the open-source world is a panacea to expensive commercial software, particularly association software, you should consider the importance of today’s decisions on tomorrow’s operation.

For instance, in the catalina380.org site, I wanted to provide a photo album capability so that users could create their own albums and upload their own photos.  Each user would own their own albums and photos so others couldn’t mess up something someone else had done.

There are several WordPress plugins for this purpose that their descriptions look great.  I won’t say exactly which they were but think about this.  Once you decide on a plugin for photo albums, you essentially have to stick with it forever!  Even if it works now, will it work later?  What are the consequences of it not working?  It is unreasonable to assume that all the albums already created can be recreated under a new configuration.  Yikes.

In my case, the first plugin I tried wouldn’t run either on my own local site or the hosting facility.  Once I worked out UTF8 issues with the database, I could get it to run on my local system but not the hosting site.  The second one I tried, wouldn’t even load without fatal errors.  The third one really looked like a winner and I figured out how to configure the interface such that it would make sense – but then I found that though users controlled their own galleries, there wasn’t ownership of albums.  At that level, anyone could do anything.

Ultimately, I found a photo-album plugin that would do almost everything I wanted it to do so the site is off and flying with everyone’s personal albums as well as links to albums from their own sites.  Cool.

Support for these open-source plugins is spotty at best.

Now, from a professional developer’s standpoint, I like the concept of plugin technologies for large systems as long as you are dealing with discrete activities.  In my previous life designing commercial association software, we considered doing this but found that what we were trying to accomplish was so integrated – everything had to talk to everything else – that the approach had less appeal.

So…..not everything is roses in terms of open-source plugin technology.  Keep your eyes open and consider the future as you commit to a specific technology.