Web Development · Outsourcing

How do I know I won’t get ripped off hiring an outsourced software developer?

Anonymous

May 23rd, 2015

I’ve heard horror stories about hiring the wrong software dev from an outsourcing company in foreign countries. These fraudulent companies are good at making you feel secure, but then rip you off when you least expect it by producing half-baked projects, or nothing at all. What are the signs of a GOOD and reputable outsourcing company for software development? What red flags might indicate a less-than-honest company?


Michael Brill Technology startup exec focused on AI-driven products

May 23rd, 2015

I'm more and more sensitive to this claim that miscreants in "foreign countries" are incompetent and dishonest. If the project fails, it's a 1% chance someone ripped you off. It's a 99% chance that you don't know how to manage a software development project. I have probably done 25-30 projects using talent from Eastern Europe and Asia. I've had $1,000 projects fail and $250,000 projects fail. In all cases, I assume the responsibility for not having requirements clear enough, not managing the process close enough or simply choosing the wrong type of developer.

If you can afford to hire locally and can find the resources, then do that. Otherwise:

1. Find a local technical resource that you trust and have them help you through the process. Even if they can give you 4 hours/week... that'll dramatically increase the probability of success. Without this, your odds of success go down dramatically.
2. Know that the less money you spend, the more management you'll need to provide. This is not always a bad thing. I vastly prefer working directly with individuals and 2-3 person shops than large firms who have multiple layers of management with lots of opportunity for miscommunication and unnecessary overhead.
3. Start with a small project. You can learn a ton about a contractor in a week. See how you communicate and how the project is delivered. If things go slightly squishy that first week, then move on.
4. Dictate the technology stack if you can. Then you can filter by those that have the right skills and reduce the chance you're left with some antiquated stack.
5. Have lots and lots of milestones/deliverables. Projects with one or two deliverables always end poorly.
6. Talk every day. Build rapport. You get better quality work from people who like you.
7. Make sure everything's checked into Github regularly

To mitigate risk if you're on Elance et al, is just work with companies that have > 4.8 stars and at least a dozen projects. They can still fail if you don't manage the process well, but at least you have basic understanding of their capabilities. These services provide escrow and you can even claw back payments in some cases.

Your real risk is wasting your time. Competence can be an issue, but nobody is out to rip you off.

...Michael







Aziz Vasi Founder, E-Scapes IT Solutions

May 26th, 2015

With all respect to all those you have put their precious time and effort in writing replies to Hillary. This is an unfortunate finding I have to share with you. 

Firstly I couldn't find a solid profile for Hillary Slay on Linkedin. It seems to be a newly made one with hardly any connections.

Secondly the picture of Hillary is taken from a stock image off the internet. You can use google image search reversal tool and it will show you the same image. This is just an effort by content generators to increase engagement to the site. 


This is a huge question, so I'll try to summarize:

First of all, you should really check references. Do not give much weight to non-technical references. give a lot of weight to tech people who have used the outsourcer and many months later the client still is building on top of the original source code. This is ideally what you want delivered.

Aside from that, it's 100% about oversight. You should have constant oversight of the project being done by a tech person on your side. If you do not have a tech person on your side, find one. There are SO many things to check for that a non-tech cannot check for: Code quality; code correctness (is it solving the right problem?), Scalability problems (it works for 10 users, does it work for 10,000? 100,000?), and measuring progress (is the code actually written, or are they taking shortcuts in order to save time?).

Assuming you are a non-tech person, it is extremely easy to lie to you because there is no way you can check all of these things from looking at the source code carefully, no matter how attentive you are to detail it's just too easy to fool you.

As to red flags: 1) Too quick an implementation (go to your tech person for what "too quick" means for your project; 2) Too-cheap implementation; 3) They insist on implementing things using their "standard" or usual technologies and libraries. These people basically want to take other projects they've completed, replace the part where your project differs, and deliver something earlier but in a way that most probably will not scale or be set up to grow as you will need it to; 4) They do not want to update you frequently on progress, they want to send you progress reports every month (Aim for daily); 5) They do not want to send you source code, or they do not want to use your repository for source code; 6) You cannot speak directly to the programmers on the project (I'd be afraid of what they are hiding by not letting you communicate with the programmers); 7+) OMG, there are so many more!

So I would get a good, experienced tech guy on your side (an adviser if not a CTO). You MAY be able to hire a second consultant to do this analysis for you, but I would not advise going with a consultant on this unless you have extraordinary reason to trust the consultant. This oversight should be someone who has a vested interest in your success. This cannot be done by someone who does not care.

This reply does not do justice to the question, but in my opinion it's the most important stuff you need to know. Outsourcing product development is something I've seen done successfully before, but I've never seen it work well without a strong tech person who is on the client side and scrutinizes the deliverable as it's being implemented.

Gopi Mattel Director, Chennai Area at The Founder Institute

May 23rd, 2015

Really no company whether local or out-sourced can sustain themselves by 'ripping off' customers. I am going to assume that OP at a minimum does reference checks. If the reference checks are valid, then I would presume at least in those cases the customers were not 'ripped off'. I agree with @michael brill that the customer should take equal responsibility in doing a successful project and not just blame the vendor.

One simple way to solve this problem is by doing all your work through Odesk, Elance, peopleperhour, etc. These act as mediators and assess the reputations of the service providers. Any company with a decent ranking should protect you even more than if you were to directly engage a local company to do the work.

David Schwartz Multi-Platform (Desktop+Mobile) Rapid Prototyping + Dev, Tool Dev

May 23rd, 2015

Culture differences are a huge problem when outsourcing work. Unless you're an experienced software person who can write detailed specs of your software requirements, or unless you hire someone locally to do it, you're pretty much setting yourself up for failure when outsourcing to off-shore dev teams, IMHO. It has nothing to do with "red flags" you can look for. 

Software development is like herding cats. You need everybody on the same page, and the way you do that is either by having really detailed specs, having a strong leader there who can answer every stinking question that comes up, or being there in person. You can try Agile methods with daily stand-ups and 2-3 week sprints, but I haven't heard that approach helps much.

Part of the cultural issue is that in some countries, like India and Pakistan, is that people are brought up to not question people in authority. So if there's something that isn't clear in a spec or directions they're given, they'll think about it then make up their own mind without discussing it with anybody in charge of anything. It's just what they do. It's like how people in the Philippines always call you "sir" or "maam" -- it's unnerving to me, but it's just how they are.

I've worked in lots of projects that hire lots of Asians (from India, Pakistan, China, Singapore, etc.) and one thing I've observed very consistently is that during department-wide project meetings, these people will sit there silently and never, ever, ask any questions, and rarely comment on anything. Even when asked for direct feedback, they always agree with whatever the speaker is saying. This totally baffles me, because one-on-one outside the meeting they can be extremely vocal with their dissatisfaction about things on the project. 

I've come to the conclusion that a big reason for this is most of them are here on H-1B visas and they're kind of stuck as slaves until their green cards are issued. If they lose their jobs and cannot find more work within 30-60 days, they'll frequently get sent home. The contracting companies they work for tell them they'll guarantee them "bench time" between gigs, but in reality these places don't keep anybody on the bench for more than 2 months -- they'll cut them loose if they cannot place them within that time-frame.

But I cannot explain why it is that this same kind of attitude seems prevelant even when they're working in their home countries. There can be problems that they see and they simply won't speak up. So the project can slowly slide down the toilet, everybody on the dev team knows it, yet nobody talks about it until the shit hits the fan and you threaten to cut them ALL loose. THEN they start to make suggestions, but at that point it's usually way too late because there's too much re-work needed.

When it comes to software development, you need to hold an attitude like, "fail fast, fail often". And don't cover it up, but plow on through it. Too many developers are afraid to discuss questions for fear of looking less skilled than they pretend to be (which, in fact, an awful lot of them are!). 

If you're outsourcing a software project, you damn well better be a pretty good project manager and know how to deal with software dev teams! If you're not, then hire one locally. Do NOT expect to succeed by handing some vague specs to some guy in India who's promised to deliver on-time and under-budget from his team of exceptional programmers. He's just another used-car salesman trying to bring in work for his scrappy team of programmers, many of whom are probably learning on the job.

Julien Fruchier Founder at Republic of Change

May 26th, 2015

Strike one is the increasing use of this site by non-founders. It's called FOUNDER Dating, not consultant-trying-to-sell-you-services-dating.

Strike two is this fake post.

Fantastic resource. It needs to be executed better. 

Spokey Wheeler Director at Zinaida Ltd

May 23rd, 2015

Wow, David, that's a depressing tale. 

In truth, I think that doing a big project through something like Freelancer or Elance is an extremely risky approach anyway. I certainly wouldn't advocate it, although you may get lucky.

In my opinion, something like the technical heart of your business probably shouldn't be outsourced unless you already have a strong and proven relationship with your outsourcer.

Michael Brill Technology startup exec focused on AI-driven products

May 23rd, 2015

David, your first response resonated with me but your second is so far off from my own experiences. 

The fact that you let a 2 day project turn into a 6 month project is your fault, no? You didn't choose someone with the demonstrable skill set you required; you didn't manage the project very closely and you didn't cut him loose when you should have.

My own experiences with these little projects is different. Yes, you do get a massive range of proposals back from $350 to $15,000. Fine, you just cull out the ridiculous ones and any that are generic responses with references to ISO certification. Personally, I cut out any larger company responses... but that's a personal bias based on my poor track record. You look at people's backgrounds and eliminate those that don't have specific experience in the domain you need. That usually leaves you a few people to talk to. 

I feel very comfortable with my track record with 1-2 week projects. I don't think I've really had one fail... probably because I spend time up front interacting with the developer. I also have found developers to be extraordinarily GENEROUS and HONEST. I know that at least half of my fixed price projects go over allocated time and I've never had a developer threaten to stop working. Their reputation is extremely important to them and even one bad review can kill their business. 

Look, we all have biases... and there are some elements of truth in your post. But I do find it sort of vectoring into exaggerated, vitriolic fear mongering.


Logan Kleier

May 23rd, 2015

I've worked with great developers in other countries and some that are not so responsive. The same applies for developers in the U.S..

I recommend that if you're really concerned about quality, divided your project into smaller deliverables and ask the company to complete that small piece of work. You can then assess cost, quality and timeliness without putting too much on the line. 

Checking references is also a must.


Kathy Keating

May 23rd, 2015

I suggest you look at reaching out into your community/network and asking for recommendations. There are probably several people around you how have had successes with a development organization and can make a recommendation.

I owned my own software consulting business for 7 years. The only time we really "looked" for work was at the very beginning.  Once we had our first client, all other business came to us from referrals from that point forward.  

The really strong software companies (or people) are rarely out looking for business.  You need to find a way to reach out to the people/teams who aren't advertising. And some of them might be off-shore recommendations.

Use your network.