Dilemma: to outsource the coding or do it yourself


34

I develop and sell iPhone apps. I've released one app, and decided to build a few more, in parallel. I thought about outsourcing some of the coding, so I went on Elance and posted some jobs there. The estimates I've got from the contractors there turned out to be a bit higher than I had expected, and were generally comparable with the software engineer salaries in the US (e.g. they ask for $1000 for what would be maybe 4 days worth of work for me). I wonder if the lower rates of the oversees contractors often get offset by their lower productivity?

So I started doubting if the outsourcing approach is worth it. My company is new and is not making money right now. I'm bootstrapping it with my savings. I could invest some money to get things done by other people, or I could invest some of my time and save the money. What should I do?

I'd appreciate any insights and advice about my situation :)

[UPDATE] Thanks so much everybody for such thoughtful and helpful responses! If I could accept all of your answers, I would. I'll briefly summarize my own experiences so far. It is true that writing a very detailed requirements document is both essential and time-consuming. I've discovered that as I work on that document, and think about the potential ways a feature might be implemented, I'm really doing the hardest part of the job, and leaving just some fairly straightforward coding to the contractor. As a developer, it's pretty easy for me at this point just go off and write the code myself.

So out of the 2 jobs that I wanted to outsource, I decided to do one myself (a foundation for a new app), and outsource the smaller one (a well-defined feature for an existing app, implemented as a standalone app so I don't have to share my code with the contractor). The developer (based in Russia) has already sent me the code, and I'm happy with how is it going so far. To be fair, when I talked to him on Skype, we spoke in Russian since that's my first language too. I think it'd be more difficult to communicate with him in English.

I've read some stories of people successfully outsourcing entire apps, with the UI design and all, but I'm not sure how common that is. I.e. I really suspect that for one person who got lucky with that there may be many who have just wasted their money.

Bootstrapped Outsourcing

asked Aug 6 '12 at 05:54
Blank
Black Rider
297 points

9 Answers


30

I am from Germany and have worked with several companies from India. In addition, I have some friends who outsourced to Russia. Our experience is all the same: The biggest problem remains the communication. If you want something easy, like a Wordpress template, it might work fine. But if your app is a little complex, you need to write down every little detail. You are human yourself, so you'll find out that you have forgotten something.

My experience is that they take your spec and do it exactly as you wrote it there and don't mind the things which you have forgotten. So please be prepared to use a good amount of time to do a great specification which is error free. In some cases, I have seen that spec + implementation time exceeds the "do it in your own office" by a factor of 4. You need to speak simple English or have clear phrasing.

Another pitfall is that you mostly are not able to get somebody on the phone (own experience) on your working time. If you get somebody on the phone, please be prepared for hard to understand English. In my case, I am not a native speaker myself, so it was pretty tough to explain it in such good English that they could understand. If you are from the US states which have a strong accent, be prepared!

One day, I calculated how much we saved from the cooperation with India. They have had a lower hourly rate, but all the spec time, communication time, re-doing work because of misunderstandings and so on summed up so much that it would have been cheaper to develop it all in house.

Another thing might be that you outsource to a company which promise you heaven but give you hell. We had to fire one company because they told us they were some kind of SAP gurus with good Java knowledge. After a while, we figured out that they have just a basic understanding of SAP and worked in a lot of performance problems. With Java, they just knew the syntax, which really does not help in a JEE environment. We have lost a good amount of bucks and time there.

My suggestion: If you know the company and have seen some references, call them. If you can understand each other very well, make sure you have called to the actual developers. If they are replying promptly, and if it seems that they use their for more than just API digging, then you might give them a try. And if you find such a company, please write me an e-mail. I am still looking for it.

answered Aug 6 '12 at 06:10
Blank
Christian
3,590 points
  • Well, I am on Elance. Some of the projects went very smoothly and some did not. It is true that communication is the biggest issues. But then for any software development, Software requirement phase is very important and if you have properly documented the requirement, I do not feel Elance is that bad idea. Be it India or elsewhere, without a requirement documents, the development is not likely to be good. – Natwar Lath 5 years ago
  • +1 for spec time taking longer than you estimate. I am a freelance developer. Frequently the client goes back and adds more to the spec as work comes out and s/he realizes there's something missing from the original document. I don't mind as long as I get paid. – Dean Brundage 5 years ago
  • realizing the fact the country like my own JUST works on work sent from Europe or USA so people are up to giving false statements about their credibility. Don't fall in it, test them first with small tasks up-to 1 week max. If communication is good and output is as you expected then it is green signal for bigger task. Living in this country I myself have bad experience in outsourcing to locals. – Ayaz Alavi 4 years ago
Add Comment

25

Outsourcing software development can be a positive option but has major downsides. I've been badly burned with outsourced developers so here are 3 lessons that might help you. First of all, realize that the more valuable the software you want to create, the less likely you are to successfully outsource its development. In other words, if your software might generate a gazillion dollars of revenue and you're outsourcing its development for a few thousand dollars, then the developer will have very little incentive to perform miracles for you. How would you feel coding for dollars a software that might make someone else a few million dollars? This is especially true if you're outsourcing the first version of a software: specs kill creativity because it's only AFTER seeing the coded result of a spec that you realize that such and such functionality should actually be done differently. If you're creating something new, the spec should be a roadmap to the discovery of the final product, as it's being built. I don't think you can outsource the creative process that goes into the first build of a new software. On the other hand, if you're porting an existing product to another platform and everything is already figured out, then outsourcing might work. So in my opinion, don't outsource software development that requires lots of creativity or that's critical to your business. That's why for startups, outsourcing is usually a terrible idea. Second, in terms of payment, here's the biggest lesson I've learned. At delivery, the contractor should NEVER EVER be paid up more than 50% of the amount due. That way, if at delivery the outcome is in any way botched, the contractor is still holding 50% of the bag and has some incentive to fix it. If instead the contractor is nearly paid in full at delivery, then he has little to no incentive to fix any bugs that the software may contain; he might then in fact ask you for more money! So heed this lesson: at delivery, never more than 50% paid up. And if the contractor doesn't have the resources to float his operation, then he might be facing some financial troubles which may or may not influence the outcome of your project...

Third, if you outsource development, you MUST remain in control of the Q&A. As you know, there are many ways of writing code and some ways might be undesirable shortcuts that may come back and haunt you later. Be involved in the major architectural decisions and make sure that the code is at all times testable. If you hear "waterfall methodology", run for cover; if you hear "agile test-driven development" or "source control access", stick around. In other words, only outsource what you could yourself do so that you can supervise and understand what's happening, in a clear and transparent process.

Hope these help you with your dilemma and good luck with your business.

answered Aug 6 '12 at 06:31
Blank
Frenchie
4,166 points
  • where's the double++ – Mr Telly 5 years ago
  • If you outsource your code can you tell the developer to delete his personal record of the code? Especially when other guys are working on it too? – Tommy Adey 4 years ago
Add Comment

7

Since your business plan is to build multiple applications I have a suspicion there is some common aspect between the applications. i.e. each application is not unrelated bespoke development. If so, employ the rule of threes and use the first two or three apps to build your "formula" that defines the core of your business. This means key architecture patterns, key code that is automatically re-used between projects, test rigs etc.

It is possible to outsource well-defined problems. This can be a cookie-cutter implementation of a well-known technology, or it can be a variation on your formula. The previous comments are correct. Communication is critical. In my experience, existing examples is one of the best ways to communicate. Examples provide expectations and boundaries.

Until then, you need to be in control of your intellectual property (formula). No out-sourcer will build that for you (unless they have serious experience and are paid accordingly).

If time is problem then outsource something else (cleaning, mowing the lawns, cooking dinner...) and take ownership of the core of your business.

answered Aug 6 '12 at 22:51
Blank
Drover
71 points

5

If you have the time and the expertise to do it yourself I would say go for it, there are numerous benefits:

  • Saves money
  • You know it'll be done right
  • Easily manageable should any errors occur
  • Easier for you to upgrade should it be required

Once you start making money is when you might look to outsource as it won't affect you as much financially.

It might slow your progress slightly, but for the assurance and cost savings it's definitely worth it.

answered Aug 6 '12 at 06:11
Blank
Alex
151 points
  • +1 for saving money. As an individual starting out the OP might need this for marketing, or possibly grocery money. Every bit of runway brings one closer to their vision. – Joshua Drake 5 years ago
Add Comment

5

I would not write off outsourcing completely based on the price of offshore development. The other option is to look to a North American firm - I think you'll find that you get a better result, faster and for cheaper that way.

I've seen this from two sides. First, when I was running my own startup, we attempted to outsource development both in North America and overseas. In order to level the playing field, we insisted on a fixed price per phase approach. What was surprising was that, as you say, the total price overseas, even when using a firm with a North American presence for project management, was significantly higher than using a North American firm. The rates were way lower, but the number of hours were significantly higher.

From the other side, we've found that by exercising Canadian tax incentives and keeping only top development talent on the bench, we can produce an extremely high quality result for a lower total cost by running fixed price contracts out of Canada rather than going overseas.

The most important thing when outsourcing - whether its to a North American firm or an overseas one is that they align with your motivations and methodologies. If you are running against the Lean Startup methodology for instance - make absolutely sure that they understand that and are working and billing in line with that go to market approach. They need to get what an MVP looks like for you, understand your business approach and be constantly augmenting your code with the right hooks so that you can get relevant metrics and data out of it every step of the way. They need to be flexible enough to scale up and down with you as you need them. They also need to be partnered up with you to the point where their success is at least partially dependent on yours.

We've worked with a fair number of startups to build out product for them and have been consistently successful based on this one principle.

answered Aug 6 '12 at 22:53
Blank
Mike Kelland
51 points
  • What Canadian tax incentives are you referring to; SR&ED, or something else? – Chris W. Rea 5 years ago
Add Comment

4

Not a direct answer but an observation from the trenches, outsourcing especially of an Android/iOS app development is great when you have a running example and need it ported to multiple target devices. In that instance the spec problem is much less and the economies of many cheap hands writing the code is a huge time and money saver.

In this instance as it's a core part of your business I'd develop in house, and build relationships when you want an Android port done.

answered Aug 6 '12 at 13:15
Blank
Mr Telly
141 points

3

I do think outsourcing really works(even when using those websites).
But you need to try to have a strategy in order to make sure you choose the right people.

I read what others wrote here about their experiences and it made me smile.

@Christian:
How could you even hire and start working with someone who doesn't know English fluently?
How can you hire someone who knows only Java syntax when you need him to work on SAP?
If you talk with manager/team lead X, you will have to ask them who exactly are the developers which will be working on your project. You need to know what apps they worked on, and what were their roles in the dev of those apps.
You should know exactly who are the people which will be working on your project.

Don't be surprised you get high quotes when you didn't describe what you expect from your app.

Selecting someone only based on the bids\quotes is a big mistake.
I would suggest the following recruiting process:

1. Ask for a portfolio with project description(in your case it should include links to the actual apps in the store).

But it's not sufficient to mention it, they need to say what was their role in the development(did they do it from scratch? if not, what was their actual role? Did they do the backend, the UI or what was it). Also, they should mention the frameworks they used, etc. It's important I think sometimes to see if they know about the right tools.

2. Select those which send a portfolio according to #1.

You will be surprised to see how few are which did that!.
If they can't follow a basic request to send their portfolio, they will surely not be right to hire to code your app.
If you think you will need to have meetings on Skype, schedule a Skype few mins interview with them, and ask questions about their apps they did.
If you are talking with manager/team lead X, you tell him you want to meet the people which actually will work on your project.

At this point you will have a pretty good idea if you really found some people good candidates, with a good experience to code your app.

3. You should have a simple specification, about what you want to do in your app.

Send them the specification and ask them to make milestones on the features, and ask them to estimate them.
If the project is big and you cannot make a complete specification, then split the project by features, and at least do a specification for first features.
It's far better than posting the project without any specification at all or spend a lot of time creating specification for something which might change along the way.

I am a coder myself. I saw a lot of stupid people and projects.
I saw employers posting project and expect quotes for something they didn't even bother to describe the features.
How could someone realistically estimate something if there's no description on the feature which need to be implemented?
I never bid on projects which is not clearly defined. I sometimes try to ask employer for clarification/specs.

Isn't it stupid to ask for quotes on something which was not even defined?
Isn't a quote supposed to be in correlation to an estimated effort in hours multiplied by an hourly rate?

I have good knowledge in recruiting and working by outsourcing.
Some employers are asking for trouble, when they get burned, it's sometimes because of their own fault.

answered Aug 6 '12 at 23:25
Blank
Op Coder
131 points
  • speaking about freelancing: http://www.youtube.com/watch?v=-lY9Nl8QrOAOp Coder 5 years ago
  • Calling me ignorant is not fair. I was just team lead for one team of a big project and not involved in the recruiting process. The decision on our partners were made by the company management, and as far as I know they didn't make an english test with them. We hired them to build a Java component in Struts which connects to SAP. The SAP part would need a new service for this too. Thus they need SAP and Java skills and they promised that. Not everything is about small apps, some outsourcing happens in a huge enterprise environment, please consider that before calling me ignorant. – Christian 5 years ago
  • You are correct, I am sorry. I edited the post. However, trusting your project to some Indian programmers you got from freelance sites without knowing exactly who will work on your project it's not a good idea. Those from your company which made these decisions they are to blame, and have no clue how the heck things work. – Op Coder 5 years ago
  • Cristian, if you say that someone else made the arrangements, and it's actually someone else who made the decisions and the recruiting, then your post doesn't make sense. You are sharing a bad experience but you did not take the part of recruiting, – Op Coder 5 years ago
  • The question is not about recruiting, it is about experiences with outsourcing. This was my experience: we worked on several tasks with an overseas team. It doesn't matter if I recruited them or not. I had to deal with the problems. Please be aware we were a 100 ppl project split in several teams. We had dedicated people who dealt with outsourcing deals as it is in many companies these days. Maybe there is the perfect outsourcing company out there but I haven't found it yet. From my experience it didn't work. You shared your thoughts - are these thoughts also experience or just thoughts? – Christian 5 years ago
  • You had problems because your recruiting sucked. How can you hire someone which you can't even understand what you are saying? You should have mentioned or edited your post that you didn't do the recruiting. – Op Coder 5 years ago
  • No. Our recruiting didn't suck. We cooperated with well-known and established outsourcing companies in India. And some point you must trust your partner. In the environment of the fortune 500 you are not always getting access to the devs - not even when they actually do the job. The question and my answer is not related to recruiting. I just spoke from my experience, nothing else. And I mentioned that I have heard of other projects with the same problems. If you like outsourcing, fine. But please stop misinterpreting my post. – Christian 5 years ago
  • Your recruiting sucked. You end up working with someone which doesn't even understand English. That's a big failure. I wouldn't even mention about the Fortune 500. I do not misinterpret your words, these were your words. – Op Coder 5 years ago
  • Also, the question did was about recruiting, I quote from OP: "What should I do?" – Op Coder 5 years ago
Add Comment

2

Making a simple iOS app takes 50-100 hrs.
Making an fairly complex iOS app takes 300 hrs.

At $20 an hour, the complex app costs $6k

At $100 an hour, it would cost $30k. For most businesses, the additional $25k (which is far less if you include communication overhead with an outsourced team) is a no-brainer.

Unlike enterprise application software, iOS apps are less complex and you won't save a huge chunk by outsourcing it.

answered Aug 6 '12 at 22:14
Blank
Mugunth
21 points
  • There is an over-generalization here. There *can* be iOS apps as complex as "enterprise" software. Admittedly, most are not so complex .. but it isn't always so, and as the state of the art advances it will be less so. – Chris W. Rea 5 years ago
Add Comment

2

I'm sure there are outsourcing companies and developers who are very good, but that's not really the issue.

As a new company you're building a reputation and a brand. These will primarily come from:

  1. User feedback on your apps. Clients will want to see consistently good feedback on your app portfolio.
  2. Client feedback on their "experience" with working with you. Clients want "on-time and on-budget" while providing changeable requirements, often because they don't really know what they want.

What you're currently selling is you. Your ability to work with clients and your technical and design ability. I also assume that you like what you do and take pride in what you create. It sounds like you've got a couple of people interested and that's great, but now comes the hard part.

You've gone out and sold yourself to your clients; will thy be happy finding out that they've got someone else writing their application? They have hired you to do the work. If the projects are delivered late and/or not developed/designed particularly well it'll be your reputation that is being damaged.

One of the hardest things to do as a developer or a businessman is say no. If you're orderbook is full then you need to let clients know when you can schedule them in. If you find you're turning away more business than you're comfortable with, perhaps you should hire someone part-time (know any colleagues who are any good?). Whatever you do, don't over-extend. This will damage your reputation and your ability to make a success of your business.

answered Aug 6 '12 at 23:26
Blank
Faster Solutions
300 points

Your Answer

  • Bold
  • Italic
  • • Bullets
  • 1. Numbers
  • Quote
Not the answer you're looking for? Ask your own question or browse other questions in these topics:

Bootstrapped Outsourcing