I believe that Oracle was one company that converted from a services company to a products company. Seemed to work out pretty well for them. I believe their client was originally the Government (CIA or NSA or FBI or something), and funding issues killed the project, so they got to keep the code.
Whenever I do contract work, I always keep a look out for ideas to use for my first product. I get to learn from their mistakes without actually having to experience them myself. The product that I'm building right now is similar to a product that I was contracted to help build last year. Subsequently, I know what works and what doesn't, and for the first part can code out of my memory and not have to worry about making architectural decisions, because I've already experienced the decisions before and know which outcome was the best.
I don't think, in this situation, there's much to be worried about, IP-wise, because I'm coding everything from scratch, and while things are similar, absolutely nothing is identical. In this case, the correction of past mistakes makes the end product both significantly better and significantly different. There might be a trade secrets argument to be made, but at least in my situation, there's nothing that wasn't painfully obvious once you examined the problem domain.
Excellent post! I think you hit it bang on.
Point #3 about tradeoffs is my favorite. The different constraints involved between services versus product influence the dozens of tiny tradeoff decisions you make when building software. For example, the deadline is often more important than "doing it right" for a services oriented build, so you tend to take shortcuts.
I've also found that it is difficult trying to inject Agile practices into organizations when you are a beholden to the client, even when the goal is to provide value faster and build a better quality product.
In my line of business I see the issue of #3/tradeoffs come up often. A common trade off that can be made is the choice of software licenses for the system you are building. Work done on a consulting or services gig may give you wider range of license choices (e.g. GPL) that may conflict with IP considerations for a typical Product company.
I see this come up when companies decide to build out a product around the work they did as a services and consulting company and they find that will be in violation of the licenses they agreed to long ago if they go the proprietary software route.
I recently discovered your site and have to say every post recently has hit home in so many ways. Thanks for a great article.
I can attest to the great difference in a programmer's perspective between programming for one customer vs. programming for many customers.
Software given to hundreds of customers must do what the customers need and must be very reliable. The developers have little chance to tweak the system at hundreds of locations. It must be correct and useful when shipped.
This concept is not obvious to programmers I have seen switch from one customer to many customers. You will not be able to babysit the system at each customer's site.
Everyone needs to work in a successful product-for-sale development environment for a few years to gain a wide perspective.
We are small software company which does mainly services but we also try and do products, usually they don't have anything to do with the software that we write for services but may be inspired by it.
We try and fund the product development from the money that comes from services - although services always get priority as that is what brings in the money. We have had a succeesful product which has been bought by several National Health Service Trusts in the UK. We are working on another at the moment.
Our products are always web-based (with maybe a mobile element) which means we don't need really need to worry about making sure that they work on a particular machine. Also, depending on the complexity, the products do require varying degrees of support. Our goal is to produce a simple but very useful web-based product where we don't do anything but get partners to sell & support!
Thank you for an interesting read.