Archive for June, 2008
Damn software companies!
I am always amazed at how lousy software companies are.
Yesterday I read two different blogs that highlighted the two biggest problems with software companies: product quality and customer service.
The first was an irate internal email Bill Gates sent in 2003 about his experience trying to install Movie Maker. You can read the whole email here, but here is a highlight after 15 minutes of trying to install the software, installing Window’s patches, and having to reboot:
So now I think I am going to have Moviemaker. I go to my add/remove programs place to make sure it is there.
It is not there.
What is there? The following garbage is there. Microsoft Autoupdate Exclusive test package, Microsoft Autoupdate Reboot test package, Microsoft Autoupdate testpackage1. Microsoft AUtoupdate testpackage2, Microsoft Autoupdate Test package3.
Someone decided to trash the one part of Windows that was usable? The file system is no longer usable. The registry is not usable. This program listing was one sane place but now it is all crapped up.
But that is just the start of the crap. Later I have listed things like Windows XP Hotfix see Q329048 for more information. What is Q329048? Why are these series of patches listed here? Some of the patches just things like Q810655 instead of saying see Q329048 for more information.
What an absolute mess.
It turns out EVERYONE gets frustrated by Microsoft Windows.
The second blog was sent to me by Jevon MacDonald of StartupNorth.ca - an article written on the D-Tools blog where the author describes the customer hell his company went through trying to work with NetSuite CRM. After several years as a customer, and after negotiating a $125,000 price for 26 users (!), he decided to finally leave NetSuite:
The reason we left NetSuite was their business practices. I do not think I can explain it any clearer than here. We had a dispute over what contingent means and as a negotiating tactic they threaten to cancel our paid in full account that was not set to expire for five months. That is like negotiating with the mafia while they have your head in vise. Who wants to do business with a company like that? I was actively securing financing for this deal with our bank when we got the first collection letter nine days after the estimate.
Here is someone who is leaving the company – not because of the product capabilities, but as a result of how he was treated.
I wonder if the NetSuite executives are aware of this specific case – or the many other situations like it. I wonder if they sent irate internal email to their sales and account management teams.
I bet they did.
But what really blows my mind is that executives know this is happening and they condone it by not stopping it. Bill’s email was from 2003, and just yesterday I was told by a service technician “Whatever you do, don’t install MS Service Pack 3!” (luckily I am on a mac). NetSuite consistently treats their customers poorly, if you believe what several people report on the many websites dedicated to their business practice (including netsuiteconsumerfraud.com where they’re trying to launch a class-action law suit).
Software companies have to stop handcuffing their customers with faulty products and lousy customer engagement. It’s disgraceful.
Deadlines are not Negotiable
I always hit project deadlines.
I think its equally important to clients and members of the team to know that, come what may(!), we will deliver on the day we said we would.
There are three ways to ensure you always hit your deadline:
- Stop “scope creep”. Deal with all new features as “phase 2″ of the project.
- Know what features you can push out without affecting your core success metrics. Push them out at the slightest delay.
- Have a backup plan. Always.
Make sure everyone knows that the deadline is non-negotiable, and expect everyone (including clients) to make sacrifices to hit the date.
The only time you should break this cardinal rule is when the final deliverable isn’t “good enough”.
Sometimes you’ve done everything right – every task, every follow-up, every test, client reviews – and the end product is just “not good enough”.
When this happens I throw out the initial timeline (never try “pushing back” your due date) suck it up, go back to the drawing board, and start again.
For me, the only thing worse than not being dependable is being second-rate.
(note: Mercury Grove’s first major web design was cut at the last minute)
You are not just an email address…
Scott Annan and I had a great conversation this morning about how to categorize people who sign up for the MG beta. Usually when companies start collecting email addresses, they simply lump everyone into the same category without considering the fact that people always have different reasons for signing up for something.
Realizing that fact is very important because when you start interacting with these people, you can easily turn them off by sending them something that is not in line with their own intentions for signing up. For example, lets say someone signs up because they are passionate about your application and helping you make it better but they will never be a client for whatever reason. This person has tons of value and insight that they are freely willing to share however if your first contact with them is a “When do you think you can expect to buy” email, I can guarantee that person will lose interest fast.
I guess the big question is: How do you determine why someone signed up for your beta? The answer is: You ask them. If someone has taken the time to give you their email address, you should take the time to engage them in a little conversation. It will be evident soon enough what people’s interest in your application is and why they signed up. Then group them accordingly and interact with them in the way that is most productive for both of you.
These days, if the only engagement you are having with your beta signups is to send them an email when your application is ready, you are missing a major opportunity.
Alpha CRM like 37 Signals, but with more potential
Early feedback on the alpha version of CRM is very constructive:
“… the product looks conceptually like Highrise from 37 Signals, but with less polish and more potential. However, the fact that you can collect information and generate reports on deal pipelines puts your solution way ahead in the longer run.”
We still have a lot of work to do for the next phase (we’ll post the specific features at the end of the week), but we’ve been able to get some great feedback which has helped a lot.
Thanks to everyone who helped take the alpha version for a spin.
Start Writing.

Scott and I grabbed a quick sandwich at Goonies on Friday. A series of last-minute meetings and the need to deliver on a speech request (read: It’s 9:30, I need to see something from you by 3:30, but I can’t meet you until 11:00) had hijacked what was supposed to be a casual Friday after a long week.
In an abridged meeting, Scott and I talked applications, we talked community, we talked web site messaging and we talked blog.
The reality is that the ebb and flow of creative inspiration, work/life demands and basic motivation do not always contribute to a healthy writing process. But to get everything together by September and to keep people in the loop, we need steady production. For our plan to work – for our blog to work – the whole team needs to be turning out written material with regularity.
As we headed back to our respective afternoons Scott and I agreed that we would meet again on Sunday to bring Scott L into the discussion to brainstorm suggested topics and find ways to motivate and encourage each other.
Starting with no direction takes too much energy. If everyone has a few ideas to work from, we may be able to yield a higher return. It’s the blank page that’s the killer.
Sure brilliant ideas can come from nothing, but sometimes there’s a need to summon brilliance (or at least quality writing) when you’re just not feeling it. Having a defined topic, a critical path and a deadline can be incredibly motivating. This fact was crystal clear later that day as I hopped on my bike, having just hammered out two days worth of writing in three hours.
Development Update – CSV Import
We built a CSV import for contacts. It started out being an import specifically for outlook. Once completed, it didn’t feel right, especially when we started the Act import, which some of our clients use. Having them choose what type of import (Outlook or Act) didn’t feel right either, so rather than making imports so specific, we are going with this:

We were also able to reuse the code, and support importing CSV files for deals. Next up is vCard imports.
CRM Alpha Release Update
The Alpha version of our CRM system (codenamed “Blackbook”) was released last week and I’m really excited about this initial build.

This first build represents the skeleton of the application with the key data components. There’s a lot of great functionality in this first build including:
- Dashboard Charts
- Company and Person management
- CSV imports (worked with 38,000 records!)
- Deal Management
- Custom Fields
- Task & Activity Management
- File upload and commenting
The next phase will focus on improving usability design (finding records easily with a lot of content), contact grouping, campaign management, and multiple integration points (forms, web, email). I’m looking forward to receiving a lot more feedback over the next couple of weeks.
As always, if you’re interested in testing the alpha version (warts and all!) sign up here.
The Future of Software will be Community-Driven
The next generation of software will be built by companies with vision, the ability to execute, and a vibrant, engaged, and active customer community that will drive product innovation.
The idea is pretty obvious and the execution is pretty radical.
Today software companies use a prescriptive approach to software design – the software defines how people should work (”A better way to do things!”) – and use forums, salespeople, and conferences to create a passive feedback loop with their users.
This leads to innovation being led by a small number of marketers and engineers who want to develop software to make money.
The future of software will move the company from the center of the innovation process to the periphery, replaced by the people who use the software who will drive innovation by engaging in discussions about best practices, success stories, shared metrics, and ideas for radical improvements.
This leads to innovation being led by a large number of subject matter experts who want to use software to achieve business objectives.
Which makes a lot more sense.
Success will be determined by the strength of the community, the quality of the ideas that come from the community, and the ability of the company to execute them – which is radically different than the current model with success being defined by winners of “feature wars”.
At Mercury Grove, we believe that the foundation of community-driven software requires three ingredients:
- Professional, passionate people with the proven ability to execute.
- Effective, transparent processes that actively and aggressively engage people.
- Passionate people who want to be involved in the process of achieving more with software
This is the future of software.
Development Update – Contact Management
Our first focus was building contact management for CRM. We had the major functionality already in our Groups application. We ported that over from groups (which is in CakePHP), taking advantage of single table inheritance in rails (which CakePHP doesn’t support). This allowed for less code for contacts in Rails than we had before and made pagination much easier.
We are using Behavior to keep as much javascript out of the views as possible (lessons learned from previous apps).
For example, in the screenshot below we are using default labels “Address”, “City”, “State”, “Zip” to provide a hint to the user. If they start typing in the field the label goes away. If they leave the field but don’t enter anything the label comes back. Easy effect, but requires a bit of javascript. Using Behavior, all the code is outside of the page. The form in this case is very clean.. just the input fields. And if you want to add a new address, an ajax call places a new address form below this one, the rules are reapplied and you will see default labels there as well.


