Search This Blog


Thursday, August 14, 2008

For Developers: How to Choose Software Components

Reinventing the wheel is bad. We all know how hard it is to write software, how buggy the software can become and how much trouble there is to maintain it. The general advice is that if you can buy it, you shouldn't build it; the best code is no code at all. Software developers should strive to integrate the third party components into their applications and use available software tools for their jobs. They should not rewrite the existing tools just because they could.

But with the proliferation of software components, sometimes it is very difficult to choose the ones that meet all the needs, that you love to use and love to talk about. After all, all the advertisements seem equally alluring, all the products seem like gifts from heaven until... you fall out with them. With limited time, how can a developer choose the components that he needs and not regret with the choice? Here are some considerations:
  1. Fully functional trial!
  2. Technical support quality
  3. Money back guarantee
  4. Price
  5. Company size
  6. Avoid reseller if possible
Fully Functional trial
You should never, ever purchase software without trying it. The vendor's website will try to convince you ( or anyone that stumbles upon it) that the solutions offered are simply the best. But whether they suit your needs is a different story.

Technical support quality
Out of so many software vendors, the TypeMock strikes me as the company that has the most intelligent technical support team. Maybe it's due to their policy to use developers as technical support. TypeMock technical support is very good, thanks largely to their public forum.

When using the components, I am sure that you will face hurdles, you will want feature enhancements and bug fixes, you will need. this and that. In short you will need the technical support from the vendors. Some vendors do not have a public forum, maybe because they are afraid that people will badmouth them in the forum, or maybe because they don't want to be embarrassed when they can't answer user's questions, or maybe they don't want all the non-paying busybodies get free answers to the technical questions.

But a free forum actually adds value to your software. If your software is really good, you won't find a shortage of people who are willing to sing praises on your forum ( such as Visual Assist). If your software is really bad, well, you should concern more about fixing the problems rather then silencing the critics, right? Opening up your forum will give people the impression that you are transparent. It shows that you have nothing to hide.

Want to know how the users are treated? Want to know how responsive is the technical support team? Just look at the technical support forum. You can roughly tell how satisfy you will be should you decided to buy the software.

You should evaluate the technical support quality before committing your money.

Money back guarantee
Fogbugz offers money back guarantee; its policy is "we won't take your money if you are not amazingly happy". This policy serves them well as their chargeback rate is only 2%. Joel obviously understands the importance of it:
If we were tougher about offering refunds, the only thing we would possibly have done is pissed a few customers off, customers who would have ranted and whined on their blogs. We wouldn’t even have kept more of their money.
Sadly, not all software vendors are as enlightened as Joel. Their fear of cheaters surpass their concern for their customers. But from customers point of view, being unable to get refund can be very frustrating. Let me relate my experience here.

I used to use PC Guard for protecting my apps. A few months ago, I decided to upgrade my applications to .Net 2.0. To my surprise, our protected applications couldn't work on certain Vista machines. Finally, I traced the problem to PC Guard. The technical support team then suggested an upgrade to the latest version would fix the problem. So I adopted the suggestion and bought the upgrade. Everything worked well.

But a few days later I found that even the latest version of PC Guard couldn't work on 64 bit OS. Now, the sole purpose of me upgrading to .Net 2.0 was to have the apps run on 64 bit OS. If I can't release my apps on 64 bit OS, there was no point for .Net 2.0 upgrades, and there was no point for upgrading PC Guard.

PC Guard couldn't solve my problem, so I wanted a refund.

They refused. They said that it's their policy to provide no refund so I should always try out the software before buying it. But I was a loyal customer and which customer in his right mind would try a software he already uses? I felt that I bought the upgrade for nothing. It was a very frustrating experience.

The most effective way of alienating your customers is to make them feel that they buy your software for nothing.

Price is important..well, sort of. I am sure you know why price is important so I won't elaborate on it.

Company size
Company size? Why you should be bother about it? You should.

Because if the software company is very big, it's likely that your issues won't be treated as priority simply because the company has other more important things to attend to rather than serving you the nobody. You can test this by submitting a feature request to the Visual Studio team.

If the software company is a one-man-show, then you should be extra careful. The risk of default is always inversely proportional to the number of staffs a company has. You don't want the software vendor to kaput at the time you need it most, do you?

My experience is that a small company ( 5 -15 people) is providing the best quality to cost service. Such a company is small enough to remain agile and responsive, and big enough to reduce the risk of default.

Avoid Reseller if Possible
Some companies engages local resellers, because it is not beneficial to setup branches. But when purchase can be done online, why should them engages local resellers?

Resellers are, well, just resellers. They won't be able to help the customers if they have technical issues, and yet they take a cut out of every sales they make. Hello? Is this fair?

Before I used Advanced Installer as software packaging authoring tool, I tried InstallShield. InstallShield was the "leading provider of installation development tools for all Windows platforms" so naturally it was my first choice. Since InstallShield was so famous, and the operation was so big, it delegated its Malaysia business to local resellers. So upon requesting a trial I was immediately assigned to a local reseller.

After the installation, I launched InstallShield. I clicked on the shortcut icon didn't work.
I emailed the reseller for help because at that time, asking questions at their forum was so difficult that I couldn't even figure out how to do it. The local reseller was my only hope. Since he took commission so it was only fair that he solved my problem, right?

The reseller got back to me only after 3 days and pointed me to an irrelevant link. I had to fire an email to him again, politely saying that the link was not relevant and literally begging him for a more enlightened response.

I was met with deafening silence. I took the insult and opted for Advanced Installer, which has never since let me down. Advanced Installer didn't ask me to fill forms when I download a trial; Advanced Installer gave me free, full access to their forum instead of hiding it away from me; Advanced Installer support team answered my every question in detail promptly and filfull my feature requests in a very short time frame. Oh yes, Advanced Installer was cheaper than InstallShield!

Thanks to the reseller, now I found a better alternative for packaging needs.

So, here are my consideratiosn when choosing a software component, anyone has anything to add?


gfox said...

For mission critical compononents, Number 7 on your list should be a service level agreement. When your product dies due to a bug in someone elses product, you need it fixed in a short amount of time. If they can't provide a guarantee, do you really want to rely on them?

Soon Hui said...

Hi gfox,

while service level agreement is a good idea, I am not sure how many software vendors will buy it. From my experience some of the bugs can be very hard to solve, and to expect the vendors to solve them in short amount of time is just unrealistic. They have other users to cater to, they don't mind losing you as a customer. How can you get them to sign service level agreement?