
Businessmen: don't outsource your code. - TheBiv
http://techwildcatters.com/2010/11/businessmen-dont-outsource-your-code/
======
a-priori
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.

But they don't come cheap.

~~~
marknutter
Well then what would be the point of outsourcing your code? I thought the
whole _point_ was that it was cheap.

~~~
a-priori
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.

------
mseebach
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.

~~~
TheBiv
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.

~~~
mseebach
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.

------
JacobAldridge
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.

~~~
qjz
_"The key to success will be sales..."_

 _"Nothing that hasn't been done before..."_

 _"I imagine an experienced hacker..."_

 _"So there's little technical challenge..."_

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.

~~~
JacobAldridge
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!

~~~
kls
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".

------
rokhayakebe
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.

------
_grrr
The usual rule is to keep in-house anything that gives your business a real
competitive advantage, often this will be your IP.

~~~
bkj123
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)?

~~~
_grrr
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.

------
DjDarkman
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.

~~~
TheBiv
"don't hire idiots to do your code"

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.

------
netcan
This is just silly for all sorts of reasons.

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.

------
Hoff
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.

------
ashish_0x90
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.

------
rbarooah
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.

------
quanticle
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.

------
rahooligan
<http://mixergy.com/free-apps-interview/> \- these guys make $80K a month in
app sales by outsourcing everything.

~~~
bignoggins
but they don't compete on quality. I've used their apps they are buggy and
poorly designed.

~~~
rahooligan
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?

------
cme
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.

------
vaksel
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.

~~~
brudgers
_"they weren't getting paid"_

There's often a direct correlation between getting paid and someone doing the
work.

In my experience, someone who wants work to be done on speculation is not a
client.

~~~
vaksel
Doesn't apply, since the money was in escrow.

~~~
kls
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.

------
nhangen
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.

