I'm working with a SaaS business with a non-technical founder/CEO and am looking for pros and cons for (1) building the software in-house vs (2) outsourcing version 1.0 to a consulting firm.
From what I've seen, there tend to be two schools of thought on this, one from the technical folks ("Don't outsource your core product") and one from the non-technical business folks ("Consultants will give me more support, stability, and innovation").
I'm the CEO's technical guide during startup, but eventually I'll be replaced with a permanent CTO and she'll be on her own. So my question is, with a non-technical CEO, is one choice better than the other?
[Edit: After reviewing the answers, it looks like we're going to outsource version 1.0 to a local company that we trust, and I will give them an insane amount of guidance. When we get to the point of bringing on a permanent CTO, we'll also look at bringing the development in-house.]
I've seen a very successful web business be built and sold using a partner company for all development and hosting. It worked beautifully for 6 years before acquisition. Their ability to focus on the business and not the technology was a strategic advantage. The founders were non-technical CEOs and they found a "trusted" outsource partner that had a seasoned development team that could scale up as needed.
I'd be wary of independent consultants because the long-term stability may not be there.
As for building your own team, it will take longer and more money than most would expect. It will also take years for your development process to mature. If you go this route get a six figure software architect to take lead at the start or it will be a long painful learning process.
Hope this helps!
I have been a project manager in and around outsourcing for a couple of years -- both working inside a outsourcing company, and as a customer using a outsourced dev team.
In my experience, having the developers outside of headquarters always increases time to market. No exceptions.
Edit: Come to think of it, after reading Tim's comments, maybe there can be an exception: If you don't have any developers right now, and you find that you can't attract any developers either, then maybe time to market for a version 1 could be better with outsourced dev team. But on the other hand, if you can't sign up any skilled developers quick'ish then IMHO that's a symptom of serious problems elsewhere (vision / CEO persuasiveness / location).
Consultants will give me more support, stability, and innovationSupport -- maybe, but should that be important... Stability, forget it. Stability is for large companies in established markets. Innovation -- absolutely no, you'll get the most innovation when the developers and product owners are within arms reach of each other.
I would suggest you consider these things in context of your startup:
Additionally, maybe your first iteration doesn't need to have any code behind it at all?
Chris Dansie speaks of a successful company built with outsourced dev team. I have realized a very successful project with an outsourced dev team. Clearly it's possible, but I have seen many disappointments with outsourcing.
(Is the failure rate of outsourced development higher than that of non-technical CEO with in-house hired development team? I don't have any data for that, so I couldn't say.)
It's [highly] debatable which is the better option, but here's a question worth asking: if we outsource, does our vision of our product get build, or their's?
At some point in the development process for "1.0" the work can be subcontracted effectively because you're at the level of detail fill-in where what your app is and what makes it special (and therefore valuable) is set. But until you get that uniqueness DNA into the product, it's premature (in several senses) to outsource.
Reading all of these responses they all seem to assume that you can easily find in-house talent and outsourced talent of equal caliber that you can work equally well with.
My experience has been that it's often just not that easy. I would be open to both paths and go with the one where I found the best talent that I'm able to really communicate well with. The one that best understands where I want to go and knows best how to get there.
In-house is the only way to go in my opinion. You're building a Software as a Service business. Would you outsource marketing if you'd start a marketing business? Great software is hard to build. You need to have a team that truly understands your vision, that is responsive and dedicated. By the time you launch your product, your requirements will have changed many times. By outsourcing software development, you lose the benefits of a small, agile & cohesive team.
Unless you are willing to put some serious dollars on a reputable firm, I would recommend you to hire one or two top-notch developers ;)
EDIT: I forgot to mention that it would most likely be very challenging for you to pursue the development of version 1.0 in-house. Every programmer has its own language, framework, coding conventions preferences. Unless the code is very well designed and documented, it can take very long for a programmer to become productive in a large code base. Being a developer myself, in extreme situations where the code is a real mess AKA code soup, I find it more efficient to write everything from scratch than to modify the existing code.
I can honestly say I have never heard the argument that:
Consultants will give me more support,In fact, I have found the opposite.
stability, and innovation
Eventually you MUST bring it in house (and I think you realize that)
You will probably be ok with hiring outside people to do the first iteration.
The dynamic will be different with outsiders doing the development and it brings with it different challenges, but if you don't have a highly placed technical person then it is fine to do it that way.
Transferring the knowledge and the lessons learned from the first iteration might not be as well done if the first iteration was done in-house, but that can't be helped.
I joined a startup that had done an initial proof of concept in house, then farmed it out, then brought it back. The farming out and bringing it back had some challenges but was handled ok.
Most times I have been at places where the technology was developed in house, but usually one of the founders was a technology person/developer. In some of those cases the person who did the initial version was in over his head and they had to bring in real talent afterwards. It is similar, but easier than having an outside company do the initial version - you know lots more as an organization and you learn and internalize a lot more. When using outside resources you learn a lot, but you learn a different set of things. You have to be careful then that you don't treat the new people joining your company as hired guns. (assuming it eventually is brought back in)
In a SaaS based business, the technology itself is key, which means that it should be one of the core competencies of the company that runs it. There are advantages and disadvantages in cost and control to developing on your own and outsourcing, but when it comes down to it, you must be able to develop in house.
In some cases, you might want to mix and match different existing technologies, in which case integration might be what the company develops and what sets it apart.
A non technical CEO should still be able to see that the company should have core competencies that include the ability to develop what it needs. The CTO and VP-R&D need to be able to pull that off.
Someone in this firm has to be able to recognize software development talent. You can make them a partner, employee, contract or outsourced to another firm, but you have to be able to find people that know how to build software. Another factor will be how well can you motivate them when you have less control? You'd like to think an employee/partner with some equity would have the incentive to do a quality job, but they have to have the talent.
I have been outsourcing my coding. You have to manage it very closely or it will get out of hand. If I had my choice, I would definitely build an in house team. Nothing beats having the programmer sitting next to you or in the office next to you to talk about things.
You may wish to check out the relatively concept: Vested Outsourcing.
(Our first attempt about a year ago has failed, but we are on the other side of the fence. Our customer was a startup that had failed to close the A-series round and was even unable to pay our last invoice. Had to insist on them escrowing the funds...)