This is a strawman. The real lesson here is not "don't outsource your code" but rather, "if you decide to outsource your code, don't skimp out". There are plenty of skilled and motivated software developers that do outsourced work. I'm one of them, and I've done projects for startups before. Successful projects, I might add.
There are a few advantages apart from straight up hourly rate:
1) The big one is that you get a ready-made team of project managers, UX designers, QA, developers that have either worked together before or at least share methodology and culture, and so have already gelled somewhat.
2) People in these various roles come in when you need them, and leave when you don't. You might not be able to afford to hire an experienced designer or QA full-time, but you could afford a couple weeks of their time, or two days a week, or whatever. This flexibility can make the end result higher quality and less expensive, even with a higher per-day rate.
3) It's hard (some say impossible, but I wouldn't go that far) for non-technical people to hire technical folk, because it's hard to know what to look for. A consulting firm has already done this for you, has a track record with these people, and is staking their reputation (and hopes of future business with you and your contacts) on them.
The point is that it's a variable cost, and that, depending on the total quantity of talent (i.e., project scope multiplied by various specialty skills required), it can make more sense to rent than to employ that talent.
Most outsourcing is not about hiring cheap, low quality foreign talent. It's about hiring highly skilled teams to fill specific functions for specific projects, which can be much more reasonable than employing all the necessary talent.
If you are renting talent and it is cheaper per hour than what it would cost to hire qualified talent as an FTE, and the product that they are making is a core competency for your company, you may be treading on thin ice. If you don't have the technical skills to judge the work produced (for example, I don't), you may be in the process of falling through the ice.
There are some of us with such specialized talent that finding yet alone employing us is next to impossible.
For example one of my firms big specialties is persons with disabilities development and consultancy for web applications. Put simply, we make JavaScript web apps work for the disabled. So along with our general UX/HCI development services, we have people that specialize in PWD/UX.
To hire one of them would be ridiculously expensive, there are maybe 50-100 people in the world with a formal HCI/PWD education, and you would only need them on a project for 1 or 2 months max, usually less than that.
So unless you are doing a lot of different projects it makes no sense to hire that role. Security is another that you generally don't need a full time loaded person for.
It may be cheaper over all even if it costs more up front. The reason consultants cost $100-$500/hr is because the consultant isn't planned to be there long.
And that is he crux of the issue, most non-developers don't know what is involved in developing a software product. They get sticker shock and start nickle and dime'ing the developer. Once this happens, if the developer does not walk or assert there position, it instantly sets the project at risk. Because the developer leaves the mentality of quality and starts down the mindset of good enough. Developers have a dollar per hour target, if there bottom threshold is broken they are going to comprise quality to keep their numbers where they want them to be. The sign of a good developer is seeing this and being willing to walk away from the situation. The old saying holds true, you get what you pay for.
It's funny: Someone could write a blog post with the tables turned, but using the same sweeping generalizations and bigoted prejudices to argue that you should never hire programmers to work for you in house.
Software is hard, and often goes horribly wrong. Generalizing that fact into simple dos and don'ts is as ridiculous as blaming it's the color of the ball for not dribbling like Michael Jordan.
Of course, there are always counterarguments. But it is the fact that you stack the odds against your success when you ship someone else the most critical part of a startup. You can do the same thing with a dev who lies to your face (rather than through a computer screen), but that is a completely different argument.
You've already got the odds stacked against you when you want to do a software-based startup and you're not a good developer yourself (or have a tech co-founder that is).
Once you've decided to go ahead and do it anyway, you've a number of options, and you're not doing yourself any favors by ruling out options the way this article advocates.
>But it is the fact that you stack the odds against your success
Source of this statistics please? it was not my experience that outsourcing isn't working. I can name a lot of successes from small startups to huge telecom giants. One of my companies is another prove that outsourcing works pretty well if done right.
I can also name(but will not) bunch of people with zero experience in sw who hired "professionalz with 10+yrs exp" script-kids for $1/h who promised to deliver ething in 1 week and than blame everyone except themself for failure
In my experience odds are against one one who wants to radically cut costs of sw dev. I you hire experienced good people (in your country or abroad) this is not gonna be that cheaper, but it will work for you if you pick the right partners.
A side note on counterarguments that is useful for marketing: Every logical argument you make has a counter argument, and if you make claims in marketing people will automatically think of the counter. However, if you tell a story, you can give across the same message and not activate that 'counter' reaction.
I'm probably asking for trouble with this question, since intellectually I think I know some of your answers, but most business decisions are made emotionally and that's where I am with this one.
I have put together a plan for a start-up. The key to success will be sales (and, to a lesser extent, marketing), but it needs a technical,web-based back end. Nothing that hasn't been done before; indeed, I imagine an experienced hacker could probably create the back end from various open source elements that are around. So there's little technical challenge, in a not-too-sexy B2B space.
Am I better off sitting on this idea, stagnating it, while I try to find the right technical co-founder? Or pay the ~$10,000 I've been quoted to build the first iteration, knowing that if it's successful I could employ (or otherwise structure and energise) that technical person to re-create (or revise, but I imagine they'd rather start again) the base code in an improved way, at some future point, possibly to time with a product or market expansion?
Edit: I appreciate me 'imagining' what an experienced hacker can or can't do may be akin to a blind man imagining colour; but that's also been the feedback from outsourcing companies I've met with.
I did freelance consulting for years, and will undoubtedly do it again, because it's fun to see a small slice of many different companies. And it's not just startups who need custom software—many small businesses need it as well, and they rarely give up big chunks of equity to hire a CTO.
Two major factors will affect how well outsourcing works for most people:
1) The quality of your programmer. It's an old cliché that the productivity of programmers varies by a factor of 10. You also need to take into account how good their code is, whether they write unit tests, what languages and platforms they use, and whether they're reliable business partners. If you're using open source tools, there's a shortcut to finding somebody good: Track down the project maintainers, and see if any of them run consulting businesses.
2) How well you understand your business. Some business people have a good grasp of what they need, and it's very easy for a good programmer to help them succeed. But my least favorite clients were always the ones who didn't understand their markets, who had dysfunctional committees, or who otherwise made it impossible for a programmer to earn them money.
If you have $10K to spend and a good grasp of what you need, you absolutely can succeed by hiring a good hacker. (Assuming, of course, what you need is genuinely in the $10K range.) On the other hand, I've seen small businesses spend the better part of $1 million on a simple database application and still crash and burn.
And finally, ask yourself what happens if don't quite achieve product / market fit, and you end up needing to pivot twice before you get traction. Nobody's going to lose too much sleep over a lousy code base if your business is successful. But can you afford two more iterations at $10K a pop?
FWIW, these are exactly the kind of statements that would raise red flags for me as a developer. They practically scream, "I will undervalue your work." If these statements are true, you don't need a technical cofounder, you just need to do some homework to see how many of the pieces you can put in place yourself. If that's too hard, be prepared to admit that the task will be a technical challenge.
I think you make an excellent point - those were the same red flags that caused me to add the edit when I re-read my post earlier.
FWIW I am open to being proved wrong, and I think you've nailed the main issue that arises between 'businessmen' and 'technical' founders ... lack of awareness of the other side. It's clear which camp I'm in!
The sad part about that fact is that lack of awareness affects the business man far more than it affects the developer. They end up shooting themselves in the foot time and time again while they filter themselves out of the pool of prospective clients for the good developers.
No disrespect intended to you, but the onus is on you to understand why developers are so important (if you start thinking of them as your product, the picture becomes clearer) because the good developers don't have the time or the need to help you see the fallacy in your perception of roles.
As for your question, I would have it developed if you don't have a good lead on a tech co-founder. technical personnel get approached with "build my idea" all the time. When they do, they hear "hey do all the work and I'll take half". Which while not entirely a correct position to hold, one has to understand that a good deal of developers have their own ideas, if they are going to work for free they are going to do it on their interest and without cutting someone else in on the deal.
Having invested in a product, no matter the quality of the code, and getting the business off the ground will "put your money where your mouth is" with a technical partner. They will see that you are serious about your idea and that you are willing to put in what is needed to succeed.
If the code is sub par they will still see that you have a very good working prototype that has a lot of learning's rolled up into it. It gives them a head start on writing the next version that incorporated the learning of the "prototype".
You're better off getting it built now if that's an option and if you can afford the consequences if things go badly. I imagine a successful idea won't be as hard to attract a co-founder to work on as your idea in its current state.
If what you're building will depend less on technology and it's not a complicated idea it seems reasonable to outsource it.
This is an interview with a non technical single founder who outsourced a v1, did serious business development, raised capital and then leveraged all this to attract co founders. It might help you decide.
I have a friend who went the "pay $10,000" route, became successful, and are now employing a bunch of people, and decided to accept some venture money to continue to scale up operations.
I would suggest that depends on how much you value that 10k. If you are willing to spend it on a "demo" that may or may not actually be useful for anything then go for it. If it represents most of your savings there are lower risk approaches that are probably a better option.
If you pay the $10k then you've got to realise that's just the start.
Once you iterate a few times, pivot and do marketing you could easily spend another $50k to try recoup your sunk costs and even then the chances are high that you will still fail.
If the application behaves as you want it, then what is bad software to the user?
The reason you do not want to outsource is not because the other does not care. DocStoc had its first version offshore outsourced and they quickly rebuilt it once they got traction.
The reason why outsourcing your startup product usually fails is Cost. You have to go through several versions of your application to reach product-market-fit. I think the Advaark team went through 9 months of iteration before launching. Kissmetrics went through a similar process. Startups continuously pivot, and most people do not have the money to fund this discovery process.
As far as outsourcing, I have some info on how to communicate with the developer, not get ripped off, etc. But what about IP? Should I assume that any code that is outsourced has come from other projects and/or the code that I'm paying to have developed will be used by others in the future? Is there any way to control this (especially when dealing with a dev thru a computer screen)?
If you are supplying the developer with algorithms that are specific (critical/unique) to your business, then for the avoidance of doubt you should make explicit in the contract that you own the IP for any work the developer does for you.
It's unlikely that anyone would use a developer that they didn't know personally, without a formal contract, for this type of work though.
On the other hand, if you're asking for a vanilla e-commerce site then it's less relevant, the code the developer uses may come from open source libraries, or it may be his that he his re-using, but it probably matters little to you as it's the content on the site not the code behind it that you really care about.
You will always own the copyright on the website, including the design artefacts, unless you are explicitly licensing them.
Ideally you would also somehow get the developer to verify that all the code they are using has a valid licence, as ultimately you're probably liable for infringement. Again, I guess this is trickier to do in a web based developer market, but probably not going to be an issue for a vanilla job like an e-commerce site or marketplace.
There are so many problems with this article, I don't even know where to start:
- never say never
> he is doing exactly what you are doing by hiring him (being lazy).
Or maybe you are not a programmer or can't afford to set up an office etc.
> The people writing your code don’t care about you
And how is this specific to outsourcing? if you set up an office, hire a group of programmers, it doesn't guaranty that those programmers will care about you.
> this will ultimately lead to sloppy, prefabricated, and overall apathetic development
Not if you hire the right people.
> Most outsourced coders are used to standard applications
Correction: "Most coders are used to standard applications"
> 4. Opportunity costs – If you are asking for specific and complex modules then the programmer will most likely bail on your project because he/she is looking to turn some quick money; not make you rich.
This is downright ridiculous freelancers love long projects, it gives economic stability.
> You have forever tainted your startup
This paragraph again is not specific to outsourcing.
Basically this article would be fine if it would say "don't hire idiots to do your code", the points mentioned have nothing to do with outsourcing.
Exactly! However there are idots everywhere, and having relatively little connection with the developer breeds more "idiot" behavior than does having a in-house dev.
One that is common for generalizations about outsourcing code is comparing apples to orange marmalade. Outsourcing to someone on elance for $3k vs having 2-3 higher value per hour programmers work on it full time for six months.
This is about as sensible as comparing an off-the-plan house to a plastic shed.
Missing a market is as big a problem as blowing a software project.
Outsourcing can work.
Insourcing can work.
Both approaches can and have gone down in flames, too.
Screwing up the responsibilities for the oversight of code development or failing to account for maintenance, well, that's a problem; outsourced or in-house.
You must get the motivations and the goals aligned.
The problems here can parallel those of paving roads, building bridges or other chunks of civil engineering. If you cheap out on the specs or on the construction (eg: low bid; too good to be true) or if you entirely separate the construction from the requisite and ongoing maintenance (in software: what, no code reviews before acceptance?), you can receive different results and differing construction materials and techniques.
I think it would probably work just fine if one outsources coding related work to a good freelancer/team. Building the right team takes both time and money and needs much more effort than hiring a good freelancer when time is of essence.In other words you can hire a good programmer to build the MVP if you are just a guy with the idea with little or no programming skills.
Once you have a working/validated product you can work on how to hire a good programmer.
I would add to the above that I haven't had any experience with all of this, And would love to hear about experiences anyone may have had.
To me the strongest argument for keeping development in house is that programming Is a very powerful way to learn about a ___domain, so if your business involves an innovative or differentiated product it's probably valuable to have this learning accumulate within your team.
If your innovation is only in your business model or marketing then it may be better to use a mature, proven partner for development because building a great development team carries its own risks and can add to the schedule.
Getting it done cheap is rarely a good idea in either case because either way you will have to satisfy customers and do maintenance.
The problem I have with the arguments posted in the article is that every single one could also be applied to hiring coders full-time. You're not going to build rapprochement with your coders simply by signing their paychecks. There's no guarantee that the code your in-house people write will be better than code written by outsiders. Finally, I don't think any programmer, in house or outsourced, is looking to make you, the business owner, rich. They're looking to make a living doing what they like to do. Making you rich is a not even a tertiary consideration.
well they are successful. they make close to $1Mil a year. If you arent a developer, I prefer the strategy of getting something out there as fast as you can, getting market validation and then bringing someone on board/improving wuality...isnt this what MVP teaches us?
I'm not buying it..the post lacks any real evidence. I've outsourced plenty and have found some really talented coders. Outsourcing has helped me, a non technical person, make shit happen!
Outsourcing is a great way to build a MVP and prove an idea in my opinion, but to each his own I guess.
the problem with outsourcing your code, is that you are one of the dozen other projects the person is working on.
I went through 3 companies(2 companies, 1 freelancer), each promising to be done in 30 days, and each only getting about 10-20% finished after 6 months.
And this was for a project, where they weren't getting paid until they finished(well, one weaseled out a small deposit out of me), so they had every incentive to work quickly.
Better to pick up the stuff yourself. It's really not that hard...and when you learn the stuff, you'll be done much quicker, since you'll be able to work 100% on your project.
Which tells me that you where dealing with amateurs. Good developers don't take fixed bid contracts, they don't need to. Sounds like to me you got some guys who gave it a shot sunk 10% and saw that it was bigger than they could estimate given there level of expertise and abandoned the project. They may have not notified you that they abandoned it but the most likely did. You see a fixed bid contract basically says to a developer, I want all of the upside with none of the risk, and I want to limit your upside. Most good developers avoid such an argument due to the scope creep nature of software development. It instantly shackles them into a bad arraignment. The only other profession that does this is real estate, sales and lawyers and they get a % cut of the sale or settlement. The only way I would sign such a contract, as a professional, would be the same arrangement % of profit. You where assuredly dealing with amateurs.
I could buy the argument if the post was a) convincing, and b) fleshed out, but as it stands, it's just a few words of opinion with very little evidence to back it up.
But they don't come cheap.