1) Consultants live off of short term payouts. Its a challenging business leap to go from getting paid lump sums now to building something essentially on spec and hoping for a payout later.
2) When you are a consultant, your time is typically tied to billable hours. It becomes extremely difficult to sacrifice billable hours in the short term with hopes for it performing well in the future.
3) Taking resources away from clients to work on an internal project narrows the bandwidth you have for taking on more clients.
4) Consulting work typically is linear - in that you build once, to the client's spec, release it and then move on to the next project. Its rare to be in it for the long haul, improving on different iterations and monitoring performance. This is a big mental gap when building a product - its not just a single launch and done like a client project. Its a long term process nurturing and iterating until the product is successful. We consultants just don't have enough experience in this, and have become pretty hardwired to projects being "done" and instant payouts at launch time. Personally, I've struggled with this a lot in the past and am still learning how to break free of this "one and done" mentality.
So basically thats why consultants who make successful products are an exceptional and special breed.
I'm working with a couple clients where it's an interesting mix - we're iterating the product to meet evolving needs, and discovering some of those needs as we go along, but many projects aren't like that.
I've been at this crossroads for a a while now, and as a local startup guy in the area has posited, "consulting is like crack". From a financial standpoint, it's pretty hard to give up - even moreso if you're not really passionately on fire for one idea, which I do think you really need to be to focus on that one idea/service/product for a long time (years).
Additionally, just because you've got an idea about what people are willing to pay for because you've done consulting for some clients, doesn't mean that you can (easily). Much of what you've learned working for, say, 3 clients, may need to be validated with a larger group. The few clients you worked with may have extremely focused needs, and what you've built for them has limited value outside of those handful of orgs. Finding the other orgs that could also benefit from a similar service/product may simply be too much work (and it's not guaranteed to find anyone at all).
On top of that, some of what you've built may have been predicated on confidential information/processes which you can't replicate. You can often whiteroom something, but again, is it worth it?
It may surprise you, but many companies are willing to pay a lot of money for a solution that ties in with existing systems and matches their business process 100%, rather than use a genericized system which they'd have to adapt to (and which some of their competition might be using as well).
In my case, I've not yet found an idea that I'm really passionate about pursuing as a full-time venture. Until that time comes, I consult (and do things like indieconf.com - conference for freelancers like myself!), getting to the point where, should an idea strike me, I can self-fund the venture if need be.
A startup is your whole life. Your job isn't just to satisfy a couple focused business people, but generally thousands or millions of fickle consumers. There is a high probability you won't ever be paid for your work, and if you are paid, it is often way more than you actually need.
Way less you mean? Getting paid way more than you actually need is the part of why people start a business isn't it? :P
The average person could sustain themselves on very little income, and yet most jobs pay far beyond than that amount.
Everyone wants nice, nonessential things, and so they want salaries beyond what they "need." It's a standard for people to get paid way beyond what they need so that they can go blow it on thing they don't need.
Most software devs get paid quite a bit to consult, so they'd be taking a huge pay cut.
A lot of people don't like that risk.
2) Most dev shops I know have side projects they release as products
3) Mostly importantly, building products is really hard to do well. To make any significant amount of money from them is even harder, which makes those dev contracts look so much easier and accessible.
I have a framework for this project. It takes about a week to write. The other year of work I did for one client were the modules and components to fit their internal requirements. This included porting some of their software from IRIX to Linux. Overall, only a relatively small amount of that development could be shared with another client.
I thought about spinning that part off as a product. I haven't been able to make a viable business plan out of it. The type of people who could build their own components for my framework is the same as the one who could build the framework in the first place - and indeed, other companies have in-house frameworks for the same thing. And while I think mine is better, it's biased towards Python but this sort of software tends to be written by IT staff more interested in C# or Java.
Also, I like working close to the end-users, with frequent iterations to get what they want. Selling software (I work in chemistry, where it's hard to develop web-based apps due to the proprietary nature of the end-user's chemical structures) is one step removed from the users, so I don't have the same feeling of connection.
When consulting it's easier to know that work = income = profit. With a startup or product development, you spend a lot more effort to develop a product before knowing that you'll make profit.
However, as some other posters have said, a big burden is the regular pay. Freelance work pays now when I need the money, verses startup work being, in a lot of cases, basically an "option" to be paid later...maybe. I'm working on a pretty ambitious start-up idea in spare time but unfortunately I can't afford at the moment to focus my entire work life on it. Ideally I would try to bootstrap it but other expenses (cough student loans cough) take some precedence.
It really is a frustrating position to be in.
Thankfully, people are not rational economic actors so there's a healthy ecosystem where talented hackers are basically free to work on whatever they like. Here's to the freedom of being able to do what we love, whatever that may be.
I personally like consulting work as it's very low overhead, get to meet lots of smart/interesting clients, high cashflow, exposure to lots of exciting new projects. I even enjoy the hustling and pitching part of the business. I'd like to build a successful product one day (as most consultants do) but it's hard to find an idea I care about enough to dedicate years of my life to, especially when I have a steady stream of consulting work that pays well and satisfies my need to create.
37Signals, Pivotal, Zurb are great examples of companies who have transitioned from client based to product, or are currently doing both.
I'm a freelance developer and based on my situation and those of my peers, everyone is working on side projects. The reason I choose to consult and have clients is because it lets me be my own boss and create a business doing other people's (clients) work. I can craft and hone my skills doing client work, while always brainstorming an idea or product to launch in my spare time. When the moment strikes I will already have all the resources and knowledge available to make a great stab at the startup scene.
Regarding development companies, well you'd have to ask yourself why the owner who has already spent time going through the pains of starting up, want to throw away a working business in favour of one that may or may not work.
The owner could encourage side projects if so minded, but it's more likely once their business is running, that they have too much to worry about running one business to have time to think about creating another.
Either that or they have lost interest once the dough starts coming in!
That said, any development company who wants their revenues to outpace their ability to hire new employees is going to be investing some measure of their talent, resources, and insight into new products. Pivotal, 37signals, etc, etc, etc.
I work for a company called ELC (http://elctech.com). Over the years we've been in business have started RightCart (bought by Buy.com), RightSignature (online doc signing) and RightScale (cloud management company). All of these began as internal tools or projets and were spun off into fully functional companies, taking some of our developers with them.
For us, spinning off these companies makes for a great investment and when they succeed, a big feather in our cap. But the fact is, the internal structure of a startup (at least any successful one) is worlds different from a professional services group, and spinning them off is necessary for their success. Times we've tried to do the startup entirely within our organization has been considerably less successful.
It's easy to find many products that are wanted by only one person. Therefore, consulting is easy. Building a startup is about finding one product that many people want, which is much more difficult.
Just because in our dimension every development agency, or freelancer writes a blog doesn't mean they're the only guys who exist.
Additionally, I've helped make several OTHER people's start-ups, I'm just not a real employee.