August12

More business lessons on pricing

You may want to start at the first part of this blog series.

Software Pricing makes no sense

Joel Spolsky did a great post about how software product pricing is insane called Camels and Rubber Duckies.  Go ahead and read it.  He will get you to agree with him, and then change the argument so you are left even more confused to product pricing.  It is a great article.

Extracting the Maximum Profit per User

In all business you want to extract the maximum profit per user possible.  If the user was willing to pay $15,000 for your software why did you sell it to him at $199?  Because attempting to get that type of per user maximum profit is really, really hard.  You will end up with an entire office of salesman who only take calls from people about their needs, and then try to get the most out of them.  In today’s age I don’t see how any software company can think that will work for long.  Eventually the pricing will get leaked somewhere, so people have a ballpark number.  Then if they come to you and get something totally different they will be miffed.

Big Companies should pay Big Prices

I have to agree with Joel Spolsky that having a Corporate edition at any price is a bad idea.  You will end up with a megacorp that should have paid you 10,000 developer licenses only buying that one corporate license.  You just lost a huge amount of money for zero gain.  Give them a deal, but don't give them the farm. 

We have some very, very large companies using VistaDB that only paid us around $5,000.  The costs to support such an organization are far more than what you made.  In a few cases the support was very low, but the company still got away with $150,000 or more in software for that one Corporate license fee.  Bad idea. 

It sounds good and you think you will get more people to step up into that bracket who maybe don’t usually buy at that level.  But it doesn’t work that way at all.  The people who really are in that bracket just end up getting the deal of century on your product.

Charge flat licensing, and corporate buyers should have to ask for a special price (minimum 50 units, or something like that).  Keep the pricing very flat, it makes all users think they are equal and simplifies things tremendously.

Flat Pricing with a twist

One trend I see a lot today with companies like Dev Express and Telerik is a flat all you can eat price that is supposed to be per developer.  But almost every company I talk to that uses their tools tells me they only bought one and all share it.  So those companies must be setting their prices high enough to cover this possibility, and then discounting to companies that really do buy the correct number of licenses.

Basically if your minimum price point is something you can still make a profit at you are in good shape.  It is when you are counting on scale, or making things up in volume you get into trouble.  Make sure your price is something you can actually make a profit on for each and every single customer.

StackOverflow has a site called Stack Exchange where you can host your own site likes theirs branded to be your own.  People freaked when they first saw the pricing.  It was explained as simple as you have to be able to make money on it from day 1, when economies of scale kick in (if they ever do) then you discount the software.  I like that model a lot.  Now I think they are taking on Venture Capital and trying to do some much bigger things.

August11

Small Business Lessons - continued

One commenter on a previous blog post said I was lamenting the death of the company through these posts.  That is not the point at all.  The point of these posts are to help other small businesses learn some of the lessons I learned the hard way, and to hopefully avoid making some of the same mistakes.

I don’t care if you have a tool that only 100 people a year will buy, or a tool for the mass market, all these same lessons apply.  And since over 70% of all VistaDB customers are also small business, MicroISV, hobbyists trying to make extra cash, whatever; I thought these lessons should be shared.

Updates can’t be free

VistaDB 3.2, 3.3, 3.4, 3.5, and even 4.0 were all free to subscribers.  500+ new features.  Each of them could have been a major release.  In fact there were so many features that they should have been new releases, each with upgrade fees associated.

Subscriptions failed

Instead I bumped minors and kept giving them for free as a part of the subscription model.  You have to be able to get that constant revenue stream, and upgrades are one part of that.  Subscriptions for something like this don't work.  4.0 was the first major upgrade, and as a result most users are still afraid of it and will not move.  If I had called it 3.6 they would have all moved to it without a second thought.  If I had trained users from day 1 that upgrades are all the same (minimal API breakage, always upgrading because of improvements and design changes) then things might have been different.

Subscriptions for minor builds would have been fine, but the major releases and additions should have generated a lot more revenue.  The 3.4 version cost us around $200,000 to produce, but almost no one had to pay for it.  Bad combination, then when subscribers got it, they stopped renewing their subscriptions as some critical “good enough” line had been crossed.

Small Upgrade Fees

If I had instead charged $99 to upgrade to each of those releases we would have generated 5 times the revenue than the subscription model.  That is a huge number.  Even if a major number of people didn’t step up at each one, they would have eventually wanted something in one of the later versions and had to pay for it.

The average VistaDB customer spent a whopping $450 over a three year period.  If we had charged $279 for the base, and $99 for each upgrade the number would have risen to $779.  Think very carefully about the long term sales and upgrade model you choose for your product.

Product Planning

Start a product plan, and what new versions you will release and when.  Then box in features for those versions.  Make sure you are always providing value for each release, but make sure you can also charge for that value.  If people are not willing to pay you for anything except your base product, then maybe the product is “good enough” and you should just sell it as is, move on to another niche.  Doesn’t mean you kill the product, but it just stays where it is. 

I look at Codebase as a good example.  It has been at 6.x for at least 10 years.  There is no reason to go beyond where it is today, it works and has the features people want.  Keep selling it and recoup your costs over the long term.

Unfortunately for us the ADO.Net provider space is not that stable.  New technologies, extensions, Entity Framework, LINQ, all have come out recently and you simply have to support them to be considered current in this space.  That really points to the fact that VistaDB is not a niche, but I will get into more of that in another post.

August10

Lessons I have learned - continued

See the first part of this series here.

Can’t include free support

Support cannot be included.  You can't afford it for a product like this.  It is too big.  Teaching ADO.Net, data binding, database design, etc is too much. 

On average I spent almost $1000 per user in tech support during year two.  That meant they were paying $250-500 per developer and we were losing money big time. 

Free tech support is an open invitation to every compiler error message "The error message says you are missing a file, did you check if the file exists?".  I had mistakenly thought that it would drop over time as documentation came up (2300 pages of help exist), and as the forums picked up.  It never dropped.  People who are solo coders want someone else to bounce ideas off, play out designs, etc.  They end up hitting whatever vendors they can get free support from in order to have that sounding board.  That is all consulting, not tech support.  Big mistake on my part.

Users often send us huge complicated TSQL statements “This doesn’t work”.  What doesn’t?  Bad results, bad data, doesn’t even compile?  Usually it comes down to the fact that they don’t understand what it does either “A third party tool built that T-SQL statement, so that is what I have to run”.  This lack of SQL knowledge hurts because we spent so very much time trying to teach people another language (TSQL).

LINQ would be better

I do think that LINQ is a better query language because if you get the language you are working in, then LINQ should be syntax for operating over result sets.  It is not hard to pick up, but it is a mindset change for those who have a good SQL knowledge.  Get over it, you will have to learn it at some point, and then SQL seems sort of quaint (like good old DOS machines).

Outsource it?

The most common answer I got was that US labor was too expensive to do this type of support, outsource to Bulgaria, Russia, India, like the big guys do.  Not my style. 

I am about as patriotic towards my country as you can get (USA).  I would rather have American programmers  and tech support, than outsource.  And to do that people have to be willing to pay a premium.  This is how the Telerik and DevExpress get away with their pricing.  Almost nothing is done in the US except sales and marketing.  Every question I ever got from them was in smaller countries in Eastern Europe. 

Users Fight Support Fees

Users will fight support fees every step of the way.  They will complain about how the docs should explain it to them (they usually do, but the user has not read them or things a help file search means looking on Google for their answer).

ADO.NET is not a niche

I now see what some of my mentors tried to tell me.  ADO.Net is not a niche, it is a technology platform from Microsoft that they just so happen to expose to third parties.  You will have no say in the direction, messaging, etc of your core product (being ADO.Net compatible).  More on this in a later post.

August09

Things I have Learned – Multi Part

I have been speaking with Peter Vogel (The VistaDB Story) for his blog on Visual Studio Magazine.  It is apparently quite uncommon for a company going through what we have to be so open and transparent about the process. 

I have been spending a lot of time lately packing, fixing up things around the house, etc (too much time to think).  I have a couple of things I would like to blog about.  These are things I would have done differently, or things that I would like to pass on to other small business owners. 

Micropreneur Academy

First, if you are a small shop that doesn’t have a lot of people to mentor you or bounce ideas I highly recommend you sign up and participate with the Micropreneur Academy.  This is a fantastic site for individual startups to learn, bounce ideas off others, find a mentor to help you through troubled spots, and lots more.  They have a very unique training system that breaks things up into lessons, and then activities for you to perform.  I have found them to be extremely high quality.

Totally Revamp Pricing

The pricing model is such that you MUST be able to make money on what you sell now, not next year.  You can't count on people to renew their subscriptions.  The entire subscription model was a huge loss.  As a small company you can't afford that type of mistake.  I was assuming (bad word) that 50% of people would renew for 2-3 years.  The reality is only 5% renewed.   You have to ensure that you can support yourself on the revenue model.  I was thinking economies of scale would kick in, they don't.  You can't count on it, so don't put it in.  Charge higher and get fewer customers you can afford to support better, rather than lower price with lots of customers.

Joel Spolsky has talked about this quite a bit, but when I took over the company there was a pricing model in place and I didn’t want to change it.  I should have done it from day one, and just lived with the dip in sales at that time.

Charge a Premium

You have to be able to charge what it costs you to build something, or you can’t stay in business long.  People always want the cheapest thing possible, then they expect Nordstrom level customer service. 

One customer complained loudly about how we didn’t solve his issue and he was charging his customer $500,000 for this project.  He only spent $299 with us, and apparently we were the key to what he did.  Why not spend some of that budget on consulting with us if you need something, I asked.  No way, he already paid for the product and should not need consulting.

To Be Continued

I have several more of these, I will continue them in future posts.

July29

VistaDB 4.1 Data Builder Update

There was a problem with the Data Builder 4.1 included in the setup of the Build 16 for 4.1 – it wasn’t the correct binary…  This is what happens when things get rushed.  Normally a full change of a build number takes about 12 hours of testing to recertify.  But because people had grabbed the 15 test setup we had to bump the version and didn’t get a chance to fully retest it – just no time.

Data Builder Only

So those with binaries for 4.1 can download the 4.1 Data Builder Build 17.  It is just a ZIP file with the correct Data Builder, and to avoid confusion I bumped it’s number to Build 17.  It was the one that was supposed to be included.  I am not going to redo an entire setup for that one file.  It would require days of testing, or the possibility of introducing yet another subtle error.  So just unzip the exe into your install directory and overwrite the 4.1 Build 16 included.

July27

VistaDB 4.1 Upgrade Paths

Ok, hopefully this blog post will explain the most common upgrade paths for all existing VistaDB 3.x and 4.0 customers.  There are a lot of edge cases around people who bought something from a reseller and then upgraded to another thing, only to downgrade later, etc.  I am sure there are a few that I missed.  It is not a conspiracy or a plot against you, just an edge case.

How to purchase upgrades

Login to your account

Click the Upgrades link to see available upgrades and discounts.

2010-07-27_1841

Upgrades SKUs

There are a few SKUs around the upgrade path.  There is only one new SKU for purchase. 

New Purchases

The VistaDB 4.1 Binary/Source/Addons version, and yes the price is $1,499

The SKU includes the binary version of 4.1, 4.1 engine source code, ASP.Net membership pak, Data Migration Wizard Pak, and the DBA Sample Tool Pak.  That is an $8,500 value.

More...

July27

VistaDB 4.1 Build 16

Data Builder 4.1 Ok, VistaDB 4.1 has been released as Build 16.  We had posted a Build 15 last night for testing, but it was never intended to go live.  So we had to bump the build number today to the final build number of 16.

There are a number of changes to this release, this post is about release notes.  Upgrade paths will be in a separate post (in general login to your account and look at the Upgrades panel to see what your options are).

Release Notes

License system has been removed from the current codebase.  There is no need for licenses.licx files.  But the assembly has been bumped to 4.1 as a result of the change in the interfaces, you must rebind your application in most cases to use 4.1.

The .Net Provider name now reads "VistaDB 4 ADO.NET Provider for .Net".  This is to cover all VistaDB 4.x versions.  The binding is now 4.1.0.0, so make sure you update any provider factory versions in your applications.

Provider Name Change

The VistaDB Provider was named VistaDB.NET20 to indicate it was the .Net 2 version of the provider (back when we had a .Net 1.1 version).  But to better match the framework we have now changed it to System.Data.VistaDB

If you have strongly typed datasets you need to edit the xml using a text editor (the wizards do not allow this) to change the name in the Connections section from VistaDB.NET20 to System.Data.VistaDB.

Visual Studio 2010

Entire product is now built in Visual Studio 2010.  We still produce .Net 2 assemblies, but we are using VS 2010 as our main development IDE.

Obfuscation Change

We are no longer using the Obfuscation engine.  There were problems using the assembly under Mono, and with sporadic bugs in the product we could not get addressed by the vendor.  The obfuscation is no longer enabled by default.  We may use another one at some point in the future to compact the assembly, but for now it is full size.   This means slightly larger DLL and more RAM usage due to the namespaces.

Data Builder Changes

Data Builder is built against .Net 3.5 SP1 now because we have added LINQ query ability to the main form.  We have also removed the pulling of the RSS feed onto the main window (trying to remove all external dependencies in the code).

The load screen has changed to a list of the most recently used databases (double click to choose one).  You can change the number of recent item from the Tools | Options dialog.

LINQ Queries

There is a new item in the database tree view named LINQ.  These are for writing dynamic EF queries against your database.  Once you click the LINQ item you will see a new panel that shows a query partially constructed for you.  You must hit the Generate Model to build an EF model out of the current database.  Then you can write LINQ queries against it and run them in Data Builder. 

The idea here is to allow for rapid writing of LINQ queries against a database for quick tests.  You can write them in Visual Studio (to get intellisense) and then paste them in here as long as you name your data context object "context".

There is no intellisense support, but the resulting code can pretty much be copied and pasted into your C# code (there is no VB support, sorry).  The queries must be written against the temporary data context object named context.  If you use some other naming in your code then you must obviously update the name once you paste it into your code.

SQL Script Export

A lightweight SQL Script Export has been added to Data Builder to output schema to a SQL file.  It does not handle data, or stored procs, or anything else.  Just schema for the entire database.  It is not for use as an API, it is only for use internal to Data Builder.

Customer Experience Removed

The CEIP program has been removed.  It may be added back at a future date, but I wanted to make sure everything that talks externally is out of this version just in case.

More...

July23

LINQ Query Pane in VistaDB 4.1

There is a new pane in the Data Builder for VistaDB 4.1.  The LINQ query pane is a very handy way to build and test LINQ queries against a simple Entity Framework model.  First understand that this pane is a work in progress.  It was designed to be an easy way to write LINQ queries (similar to LINQPad) for your VistaDB database.  The feature is of limited usefulness since the model cannot be customized at generation, or loaded from your own assembly.  But this is where we were with the feature when we had to ship, so here it is.  We have been using it a lot to help write LINQ queries, we hope you find it useful too.

The current implementation only supports C# (sorry VB guys, it was on the list).  You can right click on the Entity Model tree and Script the main query window with all your basic CRUD operations.

Data Builder LINQ Panel

By default the dialog is grayed out until you generate a model.  The code shown will still be present once the model is generated.

More...

July09

VistaDB 4.1 Feature List

VistaDB 4.1 Dynamic EF Yes, VistaDB 4.1 is nearing release.  VistaDB 4.1 will be released before the end of the month.  For the most part this is a drop in replacement of 4.0 for everyone, but the License system has been totally removed. 

There are enhancements in the release though, take a look at the Dynamic Entity Framework model generation capability for Data Builder.  It is a really cool feature for writing LINQ queries within Data Builder.

Source or Binary

Yes, there will be a source release for 4.1 (free to those who have recently purchased the 4.0 Source), and a binary version as an upgrade to current users of 4.0. 

The upgrade price will be 60% off the list, as a minor upgrade fee.  Those who have 3.x can upgrade as well, but the discount is less since they are not running the most recent version.

This license is effectively a $5,000 site license for every user.  Since I seriously doubt anyone will be coming back to buy more licenses after they have an unlocked version. 

License System

The entire licenses.licx system has been removed, and the installer is being modified to not require the Activation Server in order to run.  This is an unlocked dll runtime. 

Subscribers

There are very few subscribers.  If you have a current subscription, then yes this is included for free (honestly, when have I not done that?).

More...

July07

Closing VistaDB Office

This is a summary of the email to all VistaDB 4 users.

Hard decisions have to be made

This is a very painful note for me to write. I have poured literally everything I had into VistaDB; time, energy, and money. But there are some realities that I have to face up to. If you cannot charge what it costs you to build something, then you shouldn’t be building it.

Our costs as a business have climbed quite rapidly, but income has gone down. In the past three years the following have happened: Health Insurance for employees is up 500%, corporate taxes are up 22% due to new laws in the US, unemployment insurance is 160% higher now, credit card merchant fees are double; and have much higher rates for international sales, business insurance is now totally out of our reach, server hosting is almost double, the list goes on and on. How much more are we making? Actually, I am making less today than three years ago.

Closing the Company

I cannot afford to work on VistaDB full time anymore, and I am in negotiations with a third party to acquire the product.

The office will be closing August 1, 2010.

Not the product or website yet, but read on for more details.

There are several different scenarios that may play out as a part of this, and I want to try to explain them. I had hoped some of the options listed below would have already completed their cycle by now, but they are taking much longer in negotiations than I originally expected. 

Option – VistaDB Acquired

If this third party acquires VistaDB then anything could happen. They could pull it from the market, and make it an internal tool. They could change the license to be based upon royalties. They could drastically change anything they want, it would be their product. I hope this happens, only because it would mean more resources into the product as a whole.

I am seriously considering an offer from this company to go work for them full time. While I would not be working on VistaDB full time, I may still retain some measure of influence on the product direction as an advisor.  The company seems quite sincere in their offer, but the devil is always in the details.

Option - No One Acquires VistaDB

If I can’t come to terms with anyone, then I may hold on to VistaDB, but it will be relegated to a nights and weekends type of activity. There will be no more full time work on VistaDB from me.  There will be little maintenance on the current product, as I am planning to spend my free time on a more advanced engine. Items that don’t interest me, or are too expensive to support will be dropped like a hot rock (Medium Trust for example). I still have a ton of ideas for the engine, and know I could improve performance probably 10x over what it is today, but not without massive design changes. If this is a hobby / research project then I will make those changes. I will be no longer worried about backward compatibility, or all the crazy upgrade paths.  I actually have a complete engine designed and protyped that is actually faster than SQL CE, but without a way to make money on it there is little point in developing it as a commercial product.

If I hold on to VistaDB, I would try to keep the websites and forums up as long as I can, but the server costs are not cheap. I would probably continue to sell the product, but as a company only type of sale (including source) without official support.  There would of course be community support.

Some business friends suggested I keep the product selling as is, but outsource everything and just let it sell until I recoup my costs. That is not my style. The product is complex, and I seriously doubt anyone could provide support who is not a programmer.

Option – Terminate the Product

This could happen if no one acquires the product, and I accept full time employment somewhere that forbids me from working on things in my free time. Many companies have intellectual property and non compete clauses in employment contracts these days.   This could happen, as I am actively discussing going to work for two large companies within this industry.  Neither would probably take lightly to me continuing research on a product that could eventually compete with something they sell.

Option – Open Source the Product

No, Not really an option at all. Who would work on it? Sure lots of people love to consume open source projects, but very few people contribute to them. And I have put a LOT of money into this product, I am not going to just give it away until I can at least break even. I have to put my kids through college, hopefully reclaim part of the money I have put into the company, etc.  And lets face it donation type projects never, ever make money.  Advertising on the site, etc are all pointless wastes of time.

New User Options

I am going to be changing the SKUs to a source only license in a few days. That will give everyone a chance to buy the 4.1 product and source at a reasonable price. It will ensure you can continue to run the 4.1 product as long you want / need it. No matter what happens to VistaDB.

What about activation and Visual Studio plugins?

I am going to release VistaDB 4.1 without licensing built in. This will allow all source users to continue to install and run in the event that everything is shut down.

It will not be a free upgrade unless you own the source; there will be some fee for it. User who don’t purchase the upgrade will not have access to it.

It will not have everything in the 4.1 I had hoped to release, but because there are breaking interface changes and the license system is different (gone), I have to bump the minor version number.

There will be no Sync Provider, for example. The Sync Provider has had a ton of time poured into it, but it is not production ready (not even close).   There will be no model first in Entity Framework.  Some EF extension methods will not be implemented in the current 4.x product (Skip / Take).

We do have some other new features that did get into 4.1, but that is a different post. There are also some changes in requirements, Data Builder now requires .Net 3.5 SP1 present on the developer machine.

The VistaDB 4.1 runtime is still .Net 2.0 SP1. This will be the last release for the 4.x line in all likelihood.

My recommendation

I seriously recommend that everyone purchase the source. It is a cheap insurance policy against whatever the future may hold. Existing customers will see the source in the Upgrades section of their account.  New users can purchase the 4.1 product with the source and continue using it no matter what happens.

I will probably keep the Infinite Codex site as a personal blog (again if the company I go to will let me).

It has been a fantastic ride, but one with a lot of regrets on my part.  Ah, to look back things always look so clear. 

FAQ

What about CornerstoneDB?  CornerstoneDB.com will continue as a stand alone entity.  Matthew McDonald will take that over and run it as his own.