
Ask HN: Do you have a software consultant or outsourcing horror story? - Shanerostad
I&#x27;ll start:<p>My friend&#x27;s first startup took a dive after spending $80,000 to work with a local development company. It turned out the development firm was just a front to outsource all of the work overseas and take a big cut.<p>Long story short, 5 months later he ended up with no app, no money, and a lawsuit that he couldn&#x27;t much afford.<p>Has anyone else had an experience like this?
======
edent
Ooooh yes!

A few years ago I was working for a large company. We needed some help
building an app and a back-end service. Our team _could_ have built this - but
we were stretched a bit thin with other work.

So we found a great technology partner. They'd helped us in the past, and they
could take care of everything.

After a few weeks, it turns out that they'd over-sold their abilities as a
back-end provider. They could do the app no problem, but were going to have to
use another company to build the database. No worries, they've done this loads
of times before.

We were quite behind schedule, so agreed to it. I was sent to give a briefing
to the twice-removed company.

I talked them through what we were doing, the designs we had, and how it
needed to be built. I explained the challenges we anticipated, the regulatory
environment, and the timescales.

Their lead consultant looked over what I'd presented and said - "This is
excellent work. We'd like to hire you."

"I'm flattered," I said, "But I quite like my current job."

"No, you misunderstand," the consultant said, "We want to hire you to build
this for us. It looks like you know exactly what the client wants and,
frankly, I don't think we have the skill in-house to build it on time."

"..."

He thought I was from the first-outsourced company.

I gently let him know that _I was the bloody client!_

Needless to say, the project collapsed shortly thereafter.

~~~
ratsimihah
"No, you misunderstand,"

This must've been funny!

------
nameless912
Boy oh boy oh boy do I.

I was transitioning between teams and needed something to do in the meantime,
so I got put on a testing and validation team for an internal product. I was
to collaborate with our overseas IT team and figure out why their tests
weren't catching bugs in production.

After two weeks of wrangling, hand wringing, and bad vibes, I finally got them
to send me their test automation code and a link to their Jenkins where they
were running their tests.

The Jenkins was in a sorry state: disk overflowing with garbage, 10+ releases
behind, and not tied into our corporate LDAP (it was using local admin-
everything accounts instead). But that didn't hold a candle to the test
automation code itself.

It didn't compile.

No seriously, I spent two more weeks just trying to get it to compile on my
laptop, and I _could not_ make it work. Mind you, this was a pretty bog-
standard setup (Python unittest-based suite, Selenium for frontend testing,
and an in-house [but not terribly unusual] integration test library written in
lua).

I never once got it to compile, all the while their engineers insisting that I
must be doing something wrong because it works fine on their Jenkins server,
as evinced by their test reports being generated every night.

Turns out that wasn't true either, though: they had built a series of
obfuscations such that the Jenkins job scanned the written tests, marked most
of them as passing, and randomly failed the rest. This had been going on for
over a year and a half and apparently no one had noticed. They were faking
test results and slowing down developers because no one could figure out why
tests were failing randomly.

The worst part is, when confronted with the problem, their defense was that
they were worried no one was reading their reports, so they did it once a year
ago and forgot to turn it off. Problem is that the report generation was
fairly sophisticated with quite a few special clauses to handle specific tests
which had to "pass" or "fail" in a particular way. So they clearly invested
some time into it.

They finally admitted they were in too deep a couple weeks after that initial
confrontation, and fired from our team. But because they're the favorite
consultancy of another manager at the company, they continue to this day to
consult for the company. It's really sad.

~~~
brianwawok
That is a new record. I can kinda understand incompetence "ok we hired too
many people, some were not very good and we haven't fired them yet"...
annoying but it makes sense.

But this is outright fraud. This is the literal definition of negative value.
Paying someone money to test, then those testers failing "random tests"
wasting actual developer time on non-bugs.

(With that said, this is very weird an offshore team would own the unit tests
for a project.. the developers should own it)

~~~
nameless912
Trust me, I know. Having someone else write your tests just screams
incompetence to me, but this project was like 4 years in at this point. I
wasn't going to convince them to change that.

------
rhacker
I am taking over a codebase that was written by an outsourced team in
Pakistan. The code is in a total chaotic copy-pasta state. I swear the main
thing you'll find in outsourced code is the inability to refactor or re-use
code for similar features.

One recent thing I just found is a view that has about 8 source HTML files,
all of which is quite complicated angular1 code. Then when the team was asked
to have a slightly different button for an ADMIN logging in, they duplicated
all the files and changed the button. Since then management had them add new
features to the view (that would apply to admins and other users) and they
basically coded up the changes requested in different ways in the admin/non-
admin views.

Same stuff in the REST code - I don't really get it either - when you talk to
the tech leads they are often very intelligent and totally get the criticisms.
I think the problem is these outsourcing companies are hiring junior
developers and teaching them just enough to write code to just barely get by
the requirements. Literally every feature I go through in this code base its
like I'm turning over a lovely cake to find worms inside.

~~~
MartinCron
I swear some projects are outsourced to a whole different _universe_ , one
where people haven’t yet figured out that copy/paste is not a good idea.

------
mopeloi
I was the only engineer at a not-tech-oriented NGO, so they had me on-site to
check up on the team developing their app. At the end of December they had an
initial app - I'm not a mobile dev, but it looked OK for an MVP. We showed it
to leadership and everyone approved.

We then went on 2 weeks vacation. When I came back, I was surprised to hear
the contract was nearly up - they had supposedly been working over our
vacation. This app looked identical to the MVP we'd seen before. I was upset,
but there wasn't much we could do. Also it turns out the app didn't look
flashy enough for leadership. This was a major wake-up call for me - I messed
up here by not critiquing the app or making clear work hours expectations -
but also I discovered that demo-ing an app to a whole group leads to a lot of
group-think. The criticism only comes later and then you are screwed.

------
everdev
Similarly, I was running a digital agency and the performance of one of my
first employees took a nose dive. After trying everything I could think of to
help him turn things around I had to let him go.

Shortly after, I got an Email from an unknown individual who said he knew the
employee and asked if I could chat. Turns out, my employee was subbing out all
of his work and stopped paying his sub, who then stopped delivering. The sub
proved this to me by confirming some confidential information that he
shouldn't have had access to.

After revealing that he had taken part in this scheme, the sub then asked me
for a job! Needless to say I told him he wasn't a good fit.

~~~
linsomniac
Somewhat similarly, I once hired an employee who didn't have the skills we
needed but said he was motivated to learn, seemed like a good fit from a
personality standpoint, and had really great communication during the
interview process.

We spent a year trying to bring him up to speed, waiting through all sorts of
excuses, and worse, all of his communications were terrible (bad spelling,
inability or unwillingness to use a spell checker, bad grammar). It was so bad
that we eventually made him get any communications that went to clients (~30%
of his job) be reviewed by a coworker before they were sent out.

At the last "PIP" meeting we had I asked him: "I went back and looked at all
of the e-mails we exchanged during your interviewing, and they didn't have any
spelling or grammar or punctuation problems. How did you do that?" "Oh, my
wife wrote those."

~~~
stansult
Should have hired his wife from the start

~~~
linsomniac
That's exactly what I said to my other management team. :-(

------
Thriptic
I have one in the context of an academic lab. I was in the process of
refactoring a project a coworker had left behind which was basically spaghetti
code. Our lab had a collaboration with another lab, and that lab offered to
extend the functionality of our code base for mutual gain. They assigned this
project to a Ph.D. student who picked it up as part of their Ph.D. thesis. I
hooked this researcher up on our Github and asked them to send me anything
they had about their project (requirements, design, issues, desired interface
blah blah) so I could understand their plan and prepare for the integration.

Fast forward 6 months and I still had not received anything. They also had not
committed any code to the repo I had set them up with. I contacted them and
said that it would be difficult for me to insure that our programs would
interface correctly if I had no idea what the interface was supposed to look
like or what their program was supposed to accomplish. She said she "was
working on it". After several more months of not hearing anything and being
under time pressure myself, I contacted her and demanded she upload her code
to Github immediately. She refused, stating that this code was her personal
property and that she was concerned I would "steal her IP". I lost it and sent
her an email, CCing her adviser and my adviser, informing her that all her
work was the property of her employer, and that if she didn't upload it I
would contact our university's legal department and inform them that she
intended to steal IP that was university property.

At this point her adviser called me and quietly informed me that the reason
she hadn't uploaded anything was that she had nothing to upload. She had been
struggling for over a year and had made 0 substantive progress on her project,
lacked the programming and scientific knowledge to do what she wanted to do,
and was faring very poorly as a researcher. She was subsequently rushed
through their program and graduated in 3 years from a program that typically
takes at least 6 years to complete.

The project never got finished.

~~~
lainga
She was faring poorly, so she was rushed through and graduated early? That
doesn't seem very good, is it common in academia?!

~~~
Thriptic
Done to save face. Dropping her would reflect poorly on the lab as it's
basically admitting failure to properly vet candidates and/or mentor. She also
had industry political connections which made booting her difficult for
economic blow back reasons.

~~~
lainga
Nuts. Where do you live, roughly? I'm just an undergrad but I don't think
political or industry (well -- maybe industry) connections do much at Canadian
universities.

~~~
bigmanwalter
Oh sweet summer child. Connections are everything everywhere.

------
badwork
I've been on the other end of this a fair few times (hence the anonymous
account).

The first time I was working on an app, most of our pair programming with a
much more experienced dev. I needed to keep the job to keep my visa. When the
more experienced developers quit I couldn't get anything done. I strung things
out as long as possible but eventually people cottoned on to the fact that I
wasn't productive.

The next time I had pushed really hard to get the job. "Fake it till you make
it" they told me. I spent two months at the job and I didn't even manage to
get the development environment set up. I used to hide in the toilets crying
from the stress. I was let go at the end of my probation period.

I just wanted to let people know what it's like on the other side. Not
everyone is some bad guy trying to screw you over. Sometimes it's just a
normal guy trying to get by and not managing.

~~~
throvvaway2
That's entirely your fault. If you had no idea what you were doing the correct
play would be to raise your hand and ask for help. Find seniors that could
help out. Stop pretending (lying) and start being a professional.

------
clavalle
I've had a some outsourcing successes and failures.

In the first one, I got what I deserved. I underpaid developers from a poorer
country who ended up being 'yes' men who continually checked in catastrophic,
unmaintainable code for simple problems. It burned me over and over again but
the rates were just so good it was hard to get off the sauce. We ended up
paying for those savings many times over.

Another time I had the opposite problem. I paid premium prices for premium
developers that required so much hand-holding and reassurance and
clarification that I may as well have wrote it myself. I kept thinking that
they'd get ramped up once they got used to our idioms and way of doing things
but they never did.

~~~
arethuza
Many years ago the startup I had co-founded outsourced a chunk of development
work because an investor wanted us to - what was produced was pretty much
"catastrophic, unmaintainable" code that took a few developers on our side to
rework (probably rather more than it would have taken to write the code from
scratch ).

What we did like about the code was that each developer in the offshore team
had created an exception class based on their own name - so the application
would report "There has been a XXX YYY Error" \- where XXX YYY was the name of
one of their developers.

[And after ~15 years I can still remember the relevant name for the first one
of these I saw].

~~~
gandhium
> each developer in the offshore team had created an exception class based on
> their own name

This is wonderful! Did they honor their work hierarchy, i.e. exceptions from
junior developers will always extend exceptions from senior ones?

------
tomohawk
Worked for a large government agency that outsourced their IT department. I
was on a team that was asked to look at the RFP before it was put out. We
flagged things like incentivizing the contractor for resolving issues.

Predictably, the contractor that got the work created as many tickets as
possible for resolving any given thing.

Years later, the agency now has no IT competency and they pay a lot more for
much less service than before. They also have a lot less flexibility in what
they do. They almost have no choice but to keep rewarding the contractor for
poor quality service.

It's been interesting watching a situation where things keep getting worse and
worse because the agency is basically too big to fail and will probably never
run out of money.

------
linsomniac
Tale from the other side, I used to run a Linux consultancy and we once had
someone engage us to develop a custom Linux distribution. This guy's father
was a patent attorney, and after spending significant time developing this
distribution for him he couldn't pay because he had spent his budget on
patenting it. But he needed some changes beyond the initial scope of work to
get it to a viable product, so he was trying to get us to do more work while
at the same time not paying his 6 month old invoices.

Probably the biggest "nightmare" we had was a local publisher, and this was
back in around 2000, who wanted to put their magazines on the web. They were
highly targeted "yellow pages" for tourist towns, so they really wanted to
take their existing PDF artifacts that they send to the printer and make them
available on the web as clickable hyperlinked things inside a web based
viewer.

So we proposed making a proof of concept, we spent a few weeks working on
splitting the multi-page PDF, making a viewer that would pre-cache pages,
allow you to zoom and scroll, and defining the bounding boxes for some pages
so that you could click and go to the homepage of the advert you were clicking
on. We demoed it for them and they liked it, but they said they had decided to
put that project on hold. I explicitly asked them if they were happy with what
we had built and they said yes.

Around a year later I get a series of calls from them and from a new web
development shop they have hired, saying that they wanted a refund because the
work we did "our new consultant says they could have done in 10 minutes". My
feeling from the conversations I had with them at this point was that the new
developer was going to get paid out of the money they got back from us.

I don't remember what our final resolution was, we always worked very hard to
make our clients happy. We really didn't like that they had said they were
happy with what we had done, then a year later some third party called us
telling us our work was crap and we should give a refund. And the whole "We
could have done it in 10 minutes" was not a very good tactic, it just pissed
us off.

~~~
marpstar
I've been on the other side of that argument. In my case, a client had spent
$50,000 on a pretty plain static brochure website. They're not tech-savvy, so
they wanted to move to a CMS they could manage on their own.

When I told them it'd be $2,500 to put their existing site into a new
WordPress site, they thought I was joking. That was the day that I realized
value pricing is a real thing.

In your situation (with money already in hand), I probably would've just told
them "Then pay them 0.25 my hourly rate to cover their 10 minutes of work with
a 50% bonus. Why are you wasting your time calling me?"

~~~
ewams
u "Should be able to do all this for about $2,500"

dem "really? You must be joking"

u "hehe, yea I have a funny sense of humor. I meant $25 thousand, not 25
hundred, har har"

dem "oh ok, heres your money"

u "thank you"

~~~
ewams
Just so you know I was being serious.

~~~
randomname11235
Out of the same league, where "If it costs nothing, it can not be worth much":

Me working for a large multinational: I would like to support this OpenSource
project that we regularly use, can we donate some money?

Boss: OpenSource? NO WAY. We're not commies.

Me: I would like to buy 100 CD's with software to distribute among my
colleagues since it will give them the change to learn about some really cool
security tools, all installed on a bootable linux live CD.

Boss: 10k Only? GO FOR IT!

That same night, we spend burning 100 CD's and printing 100 labels.

And that, dear readers, was a (really small) push into the development of
Auditor, the Linux Penetration Testing Distro. we all learned to love (Hi
Max!).

------
roel_v
Not my ass on the line and not a major burn, but still: I got an email many
years ago from a guy who said essentially 'I got your email address from <guy
we both know>, are you interested in picking up some side work and if so, can
we meet'. I say okay and when we meet, he explains that they had this SaaS
idea (an industry-specific collaboration/data sharing tool essentially; this
company did other work in this industry, they weren't a software shop but saw
an opportunity and wanted to branch out) and they contracted it out to a
largish 'web agency' as that was called back then in the area. They had
delivered a mostly working product, developed using their own 'framework' (as
everybody and their dog has).

But now of course it needed maintenance as well as some additional features
(software of course is never done). That web agency had said though 'well
these small contracts aren't really worth our time - we delivered what you
asked, if you want small work on top of it, we have to charge you ridiculous
rates'. So now this guy was looking for someone who could do some occasional
work on it every few weeks, for a (for that time) complex web application,
written in an undocumented proprietary framework. Yeah good luck with that, I
politely declined, after explaining the situation - from the look on the guy's
face, he only then and there fully realized the position this 'web agency' had
put him in.

Heard from the guy we both knew months later that they were still looking, and
after a year or two the product disappeared from their website. Not sure if it
was the tech that took it under, but I never quite understand how companies
think they can completely outsource the whole workings of a product they
intend to offer, without even having someone on their own team who understands
that product.

~~~
MartinCron
I have seen permutations of this scenario multiple times. I have some sympathy
for organizations in this situation, but it is entirely self-inflicted.

~~~
reboog711
At one point, a lot of my consulting business was figuring out code like that,
that others have written.

~~~
slake
We have a term for it. We call it code refurbishment!

------
tluyben2
Yep, had this a few times in the past 25 years. I am good at working remotely
with people, but it taught me that, before trusting, I have to sit with people
through a few sprints. It is hard to fake who is doing the work if you go in
hard and work with the team for a few weeks. Not many (including very, very
large shops) have the resources to fake that (note that you need ‘evil’ agents
who are also good at what they do in software dev and in my world that seldom
mixes); it will be easy to detect if they drop the ball after. Since taking
this approach I have had only solid outsourcing experiences. But yes, lost a
lot of credit & money before that realisation.

------
beckler
I was an intern when this happened, but yeah.

We were working on a program to manage a piece of industrial hardware, and the
hardware was a handheld device. The contractor hired to build out the firmware
put something like 16 people working 60 hour weeks on this. For about 12
weeks, they toiled away, and then we decided that they should join our demos
and demo what they had.

Well, it was incredibly bad. They had basically just created some Qt
templates. They had very little, if any, code written under the covers. The
logic just wasn't there, but the interface was at least nice. It was pretty
clear these guys had no idea what they were doing. Our director of development
were all over these guys every day for weeks after that.

Eventually my internship ended, but I heard that they ultimately decided to
drop the contractor and hire in house for it, and it eventually got released
about 4 or 5 years after I left there.

------
jacquesm
$80K? That's peanuts. Government projects that are outsourced run in the 10's
or in some rare cases even 100's of millions of $/E/YourFavoriteCurrency and
get cancelled because of non-delivery with alarming regularity.

I see a lot of outsourcing deals in my daily practice, 70% or so ends well,
20% ends with a lot of friction and 10% or so fails utterly leaving the
contractor with a damaged reputation and the contracting party out a lot of
money. It's not rare to see these end up in court.

You _really_ need to do research on any company that you want to outsource
part of your development work to. Talk to their other customers, get to know
the people in the team that will do the actual work, in other words: do your
homework.

If you don't you're going to end up in trouble, more or less guaranteed.

~~~
vram22
>$80K? That's peanuts. Government projects that are outsourced run in the 10's
or in some rare cases even 100's of millions of $/E/YourFavoriteCurrency and
get cancelled because of non-delivery with alarming regularity.

Right. I'm not an expert in the study of this [1], but even just as a regular
dev (and sometime manager or team leader, with some training and experience in
software engineering techniques, including successful application of such
techniques in real projects), I take an interest in this, and have come across
multiple such cases in just reading the tech news - magazines, web sites, etc.

A couple of related links:

[https://www.google.co.in/searchq=large+software+project+fail...](https://www.google.co.in/searchq=large+software+project+failures)

[https://en.wikipedia.org/wiki/List_of_failed_and_overbudget_...](https://en.wikipedia.org/wiki/List_of_failed_and_overbudget_custom_software_projects)

There are ways to overcome these failures, or rather prevent them, but they
require disciplined use of techniques, from top to bottom of the team, which
is not very common, for various reasons, either lack of knowledge of the
techniques at all, disbelief that they are effective (if done right), or lack
of political will to implement them, or penny-wise-pound-foolish mentality.

[1] There are people who are:

[https://en.wikipedia.org/wiki/Capers_Jones](https://en.wikipedia.org/wiki/Capers_Jones)

Quotes (from the above Wikipedia article):

"High-quality software is not expensive. High-quality software is faster and
cheaper to build and maintain than low-quality software, from initial
development all the way through total cost of ownership."

~~~
jacquesm
> High-quality software is not expensive. High-quality software is faster and
> cheaper to build and maintain than low-quality software, from initial
> development all the way through total cost of ownership.

That would be hilarious if it weren't the truth. But nobody actually wants to
take the time to do it right so they end up doing it wrong and then taking a
multiple of the time anyway.

~~~
vram22
Ha, you explained it better than the quote did. And worse is that often they
repeat the same mistake in the next project, and the ...

------
throw_me_away_0
> My friend's first startup took a dive after spending $80,000 to work with a
> local development company. It turned out the development firm was just a
> front to outsource all of the work overseas and take a big cut.

What I get from this story is your friend raised an inadequate amount of money
to build a company that required a technical background that he/she didn't
possess, though should have.

80k over 5 months is 16k a month, which should get you roughly one qualified
engineer. Unless the project was very simple, 5 months isn't a lot of time.
Maybe they didn't understand what was possible within that time-frame /
budget?

There's nothing wrong with outsourcing. I'm outside of the US (though from
there) and companies outsource to me -- not because I'm cheap, but because
there aren't that many people who do the specialized work that I do, in any
country.

On the other side of it, most work that gets done for startups is relatively
simple. There are plenty of competent engineers all over the world that can do
the work.

> It turned out the development firm was just a front to outsource all of the
> work overseas and take a big cut.

Turns out Apple outsources all of their manufacturing to China and takes a big
cut. Maybe I should start buying only `Made in the USA` (or wherever you're
from) computers?

~~~
brianwawok
16k a month can get you a mid level + an intern, or one senior with some cash
depending on where in the US you go. It also gets you about 20 guys in India
with a PM in the states.

I can guess which way they went..

------
Pr0ducer
Company I work for was recently acquired. Day 1: Everybody except the Sales
team is on 90-days notice. This included the software development team. They
have a whole process in place, with a catchy name: "Lift & Shift." During the
next 90 days, they are doing "knowledge transfer" with their team, and I
checked out individuals on github. Bangladesh, rural Russia, Vietnam, and
Isreal, just to name a few of the various publicly stated locations. Does that
count as Outsourcing?

------
whistlerbrk
I understand that most major purchases have guidelines and ways to protect
consumers but I just can't imagine spending 80k on something and not
consistently demanding to see progress toward an end goal.

When I was consulting I had a build pipeline to production up as my #1 task.
Doing this kept me honest and prevented a month of "go to production" issues
at the tail end of the project from surfacing but far more importantly was
building trust with my clients. They could see what was happening all the time
and if something was going off track we could correct it quickly.

~~~
roel_v
"When I was consulting I had a build pipeline to production up as my #1 task."

I used to cost that out as a separate item on my offers, but half of the time
people would balk at paying for such things. No amount of explaining how it's
better for all parties could convince some people. Now, that sort of prospect
was someone you don't want as a customer anyway, but in the beginning you want
to convert every prospect...

------
klekih
So I'm working on a project, within a product company, where 3 of the main
components were written by an outsourcing company. From time to time I had to
solve support tickets for those components.

Now I use this C# code I found there as "do-not"s. Let me give you few
examples: classes with 24000 (yeah, 24 thousands) lines. Tens of classes in
the same file. Methods with hundreds of lines. Switches in switch in while in
while(true). Operations (push and pop) on same queue from different threads
and lot of commented code with synchronizing logic which shows they just
didn't understand how threads can share a bloody queue object. Copy-paste of
logic because why do you have classes. Use statics, you dumb. And the most
evil thing, the best and worst example is a class which uses an array[] with
fixed size but behaves like a List with dynamic size. No generics. No use of
.net classes.

I can't imagine how those projects were signed by the main architect while he
asks, during usual code reviews, for nitpicks: change the name, move the
property upper with a line, etc.

I think the time and money spent to fix various things within those
componentes could have been greatly reduced if not that messy haywire code.

------
simonswords82
I'm sorry but if your friend spent $80k on a development company and didn't do
enough due dil to ensure that the company he was spending all of that money
with wasn't outsourcing it - that's on him.

There are a dozen basic things he could have done in order to ensure that he
wasn't stiffed. Off the top of my head:

\- Visiting the offices meeting the team, including those people specifically
assigned to his project

\- Requesting staged payments so he pays as phases are met and not prior to
receiving any deliverables

\- Checking the contract to ensure there's no mention of outsourcing. Did he
even check the contract at all?

\- Getting references from former customers to ensure the validity of any
claims made by the development firm

\- Searching online for feedback and reviews about the firm

\- Just asking questions in general. "Where is my app going to be developed
and who by?" seems like an obvious one before you spend nearly a hundred
thousand dollars

Edit: Looking at your post history you seem to be associated with a software
development company. Did you not speak with your friend about his decision to
spend an extraordinary amount on a development project ahead of him getting in
this mess?

~~~
Shanerostad
This was well before I worked here. We were still college students at the time
and he actually received a seed round of investment from a young angel-firm.

They were the ones who advised he worked with said company, so he thought they
knew what they were talking about. Long story short, a partner was friends
with the owner of this 'development firm' that ultimately created this mess.

Just another example of how bad advice and bad investors can kill your startup
before it even gets started.

------
staticelf
Not like that but I worked for a company and we were low on staff, one by one,
each programmer quit without getting reinforcements even though this was
stated many times. It wasn't until myself resigned, the last programmer on
this particular project, that the people in charge woke up and hired several
guys from another country less than 1 month before my last day at the company.

I got told to train them in the application but how far can you get in like 2
weeks with a remote team, really? They seemed very competent however, so maybe
not really a horror story but the whole thing was totally unnecessary because
if we had gotten reinforcements when asked for it, maybe not everyone would've
resigned.

~~~
rubidium
Alternate story: leadership wanted to switch to outsourcing the work. Created
a poor experience for everyone and let the devs quit on their own. You were
the last one out, so they ask you to train their new team.

~~~
hippich
why would management sabotage company like that? I think in USA it is pretty
easy to lay off people.

------
carbonatedmilk
I've had lousy outsourcing experiences and I've had good ones. The best
outsourcing experience I've had involved a very technically adept CTO, some
solid pre-thinking about architecture and scalability, and (most importantly)
an API-first, Microservices first mindset. This meant we could write API specs
and test cases, define max-execution times and then hand the problem to the
freelancer and let them figure out the solution. Of course we did a few other
things right: Good onboarding, an open Slack, excessive communication / code
review / feedback for the first few weeks. We also lucked in to finding a
couple of great Ukrainian developers just at the time the Ukrainian currency
took a nosedive, so we were getting $50/hr engineers for $30/hr rates. (Final
thought - I went to try and poach one of the freelancers a year or two later -
His rate had roughly tripled as a result of having gotten all the good
experience working on a 'modern' app stack (React + Express + AWS Lambda +
Microservices architecture).

------
potta_coffee
I've done a lot of work for clients, most of the work I get is cleaning up
after incompetent outsourced (overseas) developers. I know there are competent
developers overseas, but a lot of companies go for the low bidder and get
burned, then have to spend twice the amount (or more) than they would have if
they'd just done it right the first time.

------
hunvreus
If you hire a team to get the job done:

1\. Make sure you do a bit of research: talk to past clients, meet with the
team... 2\. Trust your gut feeling when it comes to the team lead. Ultimately,
the team will only be as good as their leaders.

More importantly, if you're an early stage startup you should probably NOT
hire an external team (and that's coming from a consultant).

Find a technical co-founder and go through the grind of building it on your
own.

------
adamqureshi
We are a small Design + Dev shop in NYC. We charge around $30k to build an
MVP. One recent client said she found an outsource company who can build her
site / web app for $1k. Im like ok so you don't like the work? whats the
problem. Our rate is $125/hr PP. I told you that from the get-go. She said, no
but i paid $30k for a site / web app and i see a bunch of other companies paid
way less. Im like you drive a range rover ( top of the line) Why don't you
goto range rover and say to them, I can find an indian company to build me a
range rover and why the F*%K should i pay $150k+ for yours? See what they say
and that is my answer. It seems to be the case its hard for "some" customers /
people to understand the value of what you are offering. That is why you
cannot compete on PRICE. Inevitably these people with an idea want to build an
app or have an idea ( its like a disease here in NYC) and have NO CONCEPT or
CLUE and when they goto upwork ( name your third world provider here) they get
ruined. So now off the jump i say to new customers / clients this is HOW MUCH
we charge and you can go F#!K yo-self if you can't pay ( well not like that
its in my mind, but you get what i mean) i keep it professional. I have
changed my approach to getting customers. The first thing i do is explain that
we do not outsource to 3rd world. We live and work here in NYC. This is what
we charge so we can eat and if you do not value our work, no one is forcing
you to work with us and you can go outsource your work to a 3rd world country
( outsource) and find out for yourself. After educating the client , they now
want us to build new features AND even gave us another gig. We live in NYC
where everyone is a gangsta. Ha ha! Real-talk.

~~~
hunvreus
I'd say: work for enterprise clients.

You get to learn how to build things at scale and they pay better. Startups
and individuals always require way more education and ultimately want to
squeeze every cent out of you.

~~~
adamqureshi
You hit the nail on the head! exactly. not to mention the txt messages at
midnight. lol

------
matte_black
I was having a conversation with someone I vaguely knew about their startup
and what they were trying to get developed. He told me about his challenges
and deadlines, and how hard it was to find a good development agency overseas.

I told him he should hire me to get it done, but naturally like most guys like
this, he was blown away by my San Francisco rate.

He put a finger in my face and asked why would he hire me when he could hire
an agency from Russia or Pakistan for a fraction of the cost? No thanks, he
said. No thanks.

After a long time I asked a mutual acquaintance whatever became of this guy
and his startup. He told me that guy was a bit of a lunatic, but had
eventually spent about $250k with some _local_ agency and ended up with a
broken product that did not do what he asked, he had got a refund for $100k
but was suing to get the other $150k back. Don’t know if he ever did get it.

------
mkirklions
I try to work very closely with my contractors for this reason.

If I dont see results or competence I bail before its too late.

I think the lesson for your friend is that they need technical people with
ownership in the business. If your primary use is your App, you should be your
own expert.

IMO: Be a full stack developer at least once in your life. Maybe twice.

------
reitanqild
In my first job as a developer after a few months I removed a few kloc of
messy code/configuration written by consultants and replaced it with a few
hundred lines of easier-to-understand code in a more mainstream technology. No
features lost.

I also got the libraries upgraded (they were waiting for months for a release
for some support library that turned out to be unneccessary with newer
releases of the main libraries.)

------
rm_-rf_slash
I don’t have a horror story, more of a caveat emptor tale:

When I was a freshman in college and learning iOS, I contracted out a
developer team in Bangalore to write the backend software for an app I built,
so that I could focus on the front end.

I had not taken a software engineering course by that point and had little
experience writing clear and concise requirements, so that when the product
was done it was missing key features that were necessary for the app to
function but were not explicitly detailed in the contract.

I had to renegotiate for the missing features at an additional cost of $100.
Granted, it was not a lot of money, but it was more than 50% above my original
budget, and as a college student, that stung. Sometimes I still wonder if I
was screwed intentionally.

Not much of a horror story but I hope my tale can serve as a lesson to others
who may find themselves in the place I was then: learn the tech or be very
very clear about your requirements before you sign a contract.

