Ask Slashdot: Is Outsourcing Development a Good Idea?
New submitter penmanglewood writes "I am a developer at a small IT company, and we primarily make software and games for the education market. I used to work with a team of developers, but for reasons outside the scope of this question, my boss and I are the only ones left. My boss says that our new strategy is to use outsourced developers to do the 'monkey work' for us. To me, this sounds like a bad idea. Do we give the developers access to our internal libraries? How will they be able to work on parts of our product without having access to our repository. I could think of a hundred more objections, but maybe I'm looking at it the wrong way. Is there a smart way to outsource development, or is it just a bad idea?"
You get what you pay for. There's a reason those outsourced programmers are so cheap. They don't care about you, or your project, and they don't have to maintain it when it breaks.
...as if your the last two left, there isn't a company left - it's time to pull the plug. If you can't perform the service / provide the product you were created for within the organization, or even get it started - then you are just conservators of a bunch of assets, waiting for the right time to call it quits; not a software development firm.
No.
Thank you. Next question?
"Flyin' in just a sweet place,
Never been known to fail..."
You need to balance your workloads with the project timeline. If the two of you can do it on time and within your budget, then you should try to do it yourself. If not, you'll need to spend quite a bit of time managing the individual(s) or company that you outsource your project to.
If your internal libraries are proprietary, you'll need to be smart. Don't give away the source code - just the compiled libraries. If you need to issue temporary licenses for the libraries to run (if your code requires licensing), make sure they are for 'dev versions' so they can't be used for release versions.
There are lots of reasons to keep development in house, but if you can't do it all yourself you nee to pick your developers well. Make sure you get references and that you check all of them. Make sure they provide references for several years back so you can see if they tend to repeat the same mistakes.
...are local.
They don't have to work on-site, but you'll find it incredibly difficult to manage the process properly without being able to visit them at will.
Loading...
Try IGDA, the Independent Game Developers Association, and find a team with a track record of a game roughly similar to, or better than, the one you want. Give them participation in the deal, so they get paid a basic price plus some fraction of sales. This will encourage them to make it good, not do a half-assed job.
Rent-a-Coder and Freelance will not help. I've never been able to get good work from there for anything above the trivial level. (I once wanted screen scrapers written for state corporation registries. I'd written one for one state, and wanted someone to write the other 49, each state being different. No joy.)
Why not try creating a non-paid or minimally paid internship?
Don't blame me, I voted for Kodos
If monkeys can do it, then just outsource it to them . I see a huge lack of perspective just from that idea alone.
"Monkey work" looks exactly as if monkeys have worked on it.
If you want a high quality product, the world is pretty flat as far as cost.
If you are a developer, and your boss thinks programming is "monkey work", I'd be looking for a different job, right now.
I know that's not the question you asked, but that's the answer I have.
By all means, hire strangers who get paid in advance and have no personal stake in the outcome.
Who fights harder, people whose country is being invaded, or the mercenaries doing the invading?
The company I work for is going through the same thing (roughly). We've tried to run an in-house development staff, but talented developers who don't expect six figure salaries are few and far in be-tween. In the last 3+ years we've launched 7 in-house applications that have helped us quadruple in size (revenues, profits, and employee size). Within the last few months the owners asked for another 7 projects to be completed, and to start renting out our systems to potential clients. They did not want to hire any more developers, and tasked me with outsourcing our development. They want the work done in 1-2 weeks compared to 1-2 months. So far, our outsourcing replies have all been $10K+ and 2.5 months estimated time, for one of our smaller projects. Looking forward to reading the responses on this one!
Outsourcing doesnt have to be to a foreign country, it happens all the time. There are organizations with big IT departments that choose to pay outside company to do the work. Is that a good idea? It depends, as with everything. You have to realize that you will spend much more time on specifying and verifying the implementation of requirements, interfaces, etc. than if the developers were in-house. If you don't do that then you're going to fail. This increase of specification cost, is due to communication problems with external parties. If you are prepared to stop coding and start managing - why not go for it. Just be careful and precise with requirements, including non-functional ones (performance, etc.). Always mention that you won't pay if it doesnt adhere to the spec and good practices. If you are going to own their code later on, you should also enforce some standards, frameworks used, etc... You do see where I'm going? You can outsource the grunt work, not the thinking.
Your new job is to manage outsourced developers doing 'monkey work'. They will do it badly and you will have to pick up the pieces. There is a huge shortage of strong developer talent out there. Therefore you should have little trouble finding a new job that is a better alignment with your passions. If it were me, I'd be looking to leave the company you are at now.
We have an offshore team in country [X] working on feature work and bug fixing on our enterprise level software product [X]. It is a horrible nightmare. Offshore creates more problems than they solve, they don't respond to explicit direction, they double, triple and sometimes quadruple bill while simultaneously producing very small amounts of actual work. We finally had to cut off their access to source control, and all check-ins have to go through an onshore dev for approval before it can be integrated. We are letting them go in the next week or too. But seriously, it can really be a waste of time and money for all involved.
Ask yourself this: What are your clients paying you for?
Now, whatever you do, don't outsource that!!!
If you're really good at designing games that meet your clients needs then it may be worthwhile to outsource the actual development of the game once it's designed. In my personal experience this is unlikely, as the design and coding phases tend to be highly coupled, especially in smaller companies. Likely you don't create detailed enough design documents for an outsourced team to fully understand and execute your vision.
First off, if your company was in business to make wrenches, would it be smart to pay someone else to make wrenches and just sell them? Or, would it make more sense to be making wrenches better than other people and sell those? See, one way you are a sales company that isn't making anything and the other is you are actually making something. Same goes for software, trust me.
For a software company you might have some old products that could be pushed off onto some other folks for maintenance. Or, you could consider outsourcing accounting and bookkeeping. But outsourcing the core product(s) that establish your identity for the future is ... well, madness.
The basic problem is the folks you outsource to are looking for a paycheck and have little interest in a product. You, on the other hand, count on a product as a way of surviving into the future. To tie yourself to some folks doing this with little supervision (and don't kid yourself, there won't be anywhere near enough) for the future isn't going to work out well. I have heard of this with a number of organizations and while they can get some cheap development done, it is generally something that simply needs to be redone on a crash basis when customers start noticing defects and quality problems. Also, you will find a lot of outsourced development done exactly to specs - and done in a virtually unmaintainable manner. It does exactly what was specified, no more and no less - but to add some new feature takes a huge amount of effort because there was zero flexibility written into the code.
Yes, having developers in house is more expensive, no doubt about that. For things that are not critical to the business at hand you can outsource and get reasonable results - it may have some problems and may not be as flexible as you would like but you can live with it. Core product functionality on the other hand you better have a lot better control over and instill quality and flexibility in the development team from the start. Can't do that remotely when the team changes every week - which is common for such arrangements.
The other thing is that you can't just look at outsourcing as being the same as you having programmers, but in a different building. You aren't going to be walking by their desk every couple of hours, and see what they're doing. Managers are often used to being able to do this. As a result, many companies that aren't used to outsourcing have weak requirements specification processes. They just notice when what's being made isn't what they want, and fix it early. With outsourcing, you have to put more effort in on the front-end requirements, or you'll get something that isn't what you want, even with a competent outsourcing outfit.
You have to trade this off against the flexibility that an outsource outfit gives you. You don't have to spend time and resources recruiting. You don't have to provide office space. You don't have to worry about what to do with the people if your budget or needs dimish.
I'll come from the other angle. I'm a consultant developer full-time. In order to be successful, don't keep the guys at arm's-length. Yes, they will need access to core libraries, and anything else that will make their project successful. You will need to put in place adequate agreements to protect your IP, however. Set milestones for them to reach, and have regular (but not overwhelming, once a week should do) contact with the developer to discuss their progress. Verify they will be using technologies that you are comfortable with. The consultant knows better their own work-pace than you do. Allow them some leeway to set their own development schedule, making sure that it fits in with your ultimate deadline. Often, you will not be their only client. It's tough as a consultant to make everyone feel special. I often have 3-5 projects I'm juggling at a time. Of course, you will need to get the warm and fuzzies that they are devoting adequate time to your project, but try to get a feel for their existing workload as well before moving forward with them. Just my two cents.
I'm curious, if you're outsourcing development what is it that the business actually does?
I mean fundamentally. What is it your company offers your market? What value does it add, if someone else is doing the work? Why wouldn't customers cut out you, the middleman? How does it control everything that matters - supply lines, production, IP, quality, direction, and so on?
An organisation is just that - an organisation. It doesn't fundamentally matter what's in-house and what's out, as long as it's organised i.e. controlled. However, it is dramatically more difficult when it's outsourced.
Consider say Apple. It outsources production but retains everything else internally. What it has outsourced can be very heavily controlled because it's all extremely highly specified and those specifications are of a nature well suited to contracts.
As an IT professional with over 25 years of industry experience, I can tell you that if you outsource you need to be very explicit about what you expect them to do and what deadlines there are. VERY explicit. You can expect no thinking outside the box. I'm going to give you an example. Let's say that due to some mistake on your part that you asked them to build you a car that blows up and kills everyone inside when you turn on the ignition. You would hope that if you did that that the outsourcing party would contact you and say "Did you REALLY want us to build a car that blows up when you turn on the ignition and kills everybody inside? Because that is exactly what you asked for." They won't. They'll either shrug their shoulders and build your death car or they simply will assume that maybe you have a very good reason for asking for a death car and it's not their job to question it.
The quality of work you get from outsourcing is arguable. I work for a Fortune 300 company who I am unwilling to name, but I can tell you that we outsource some programming to our employees in India. We're pretty selective about what we give them, but they do good work. However, the vast majority of the workforce there is not given our most crucial tasks to implement and those continue to be done in our US office. I would say that easily less than 10% of the programmers we have who actually live in India are allowed to work on truly critical tasks for us. Finally, do note that if your software needs are proprietary and a competitor might pay to have access to your code, there is absolutely nothing you can do if someone in a common outsourcing county is willing to sell dumps of your code for cash. Laws are very weak in those countries and they are always in favor of the locals rather than "rich foreigners". In a worst case you'd actually have to outbribe the judges in the country to get any justice.
'monkey work'
Leave. Now.
Contrary to the popular belief, there indeed is no God.
I wouldn't usually say this, but you need to update your resume and start looking for a new job. Its only a matter of time before he realizes that he can outsource you too.
I've seen the follow three scenarios play out, usually its number 2.
1. You find cheap professional quality developers who are available for your entire project cycle and do excellent work. Do they have anyone that can do your job?
2. You find cheap developers who hold it together long enough for them to find a better job. You'll really know your in trouble when you're on your third or fourth set of developers and the project appears to be going backwards. Ends in disaster.
3. You find cheap developers who can't find a better job and stick with your project for the entire cycle. Ends in disaster.
10: PRINT "Everything old is new again."
20: GOTO 10
You are talking about outsourcing the core focus of your business. That is a big fat no. If you have a store and you want to sell things online, contract, outsource, whatever. You make your money on the margins of your merchandise.
If your business is making software, you are outsourcing your core business model. That is a recipe for disaster.
"Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
I've been through outsourcing at two companies, and it just doesn't work, especially for smaller groups. I could see it working if you have a large team, you have some repetitive, cookie-cutter development tasks, you've done this task a million times yourself, and you know exactly how to give the task to someone else. And you already have the tests to verify that the product actually does what it is supposed to do. And you have managers already managing that same work internally. This just isn't you.
I strongly agree with other posters here: If these arguments are not persuasive to your partner, you should find another job, and let him find the monkeys.
Then again, the non-idiots are less cheap and sometimes that can be a turn-off for decision makers who are more focused on the bottom line than on the quality of the work.
Exactly. There seems to be this myth around outsourcing that somehow there's a magic method by which an outsourcing company can provide you engineering or programming effort for less than what it would cost you to hire someone of equal quality, despite the fact that the outsource company has to provide facilities, licenses, computers etc for that person, and also make a profit. This just isn't going to happen. You go to outsource for business flexibility, or in order to gain access to expertise that you don't have internally, and don't want to pay to hire over the long term. If it seems too good to be true, it is.
Isn't this like asking turkeys to vote for Christmas?
What a strange place to ask this question... unless you're just looking for us to cooborate your already fixed opinion. Of course Slashdot thinks its a bad idea; this place is full of programmers who don't want to see their jobs outsourced. Might as well ask oil executives their opinons on solar energy and alternative fuels.
(Of course, someone will now contradict me by posting in favor of outsourcing. We're not just geeks; we're contrary Slashdot geeks...)
You have no hope in hell of keeping a product going. You have no way of enforcing your deadlines. You're basically middle-men who may or may not be able to cajole your supplier into doing what you need when you need it.
The projects I've been on that have used outsourcing usually required a fair amount of management to get them to do well-defined tasks to spec, and deliver that on time and working as expected. What you're describing sounds like it simply can't work.
If what you do is primarily make software, and your boss calls that the "monkey work", then you're screwed. That's not really a strategy which is going to work, which means your small IT company will implode in a while
Seriously, what is left for you guys to do? Collect the money and laugh all the way to the bank? What value do you guys add at this point?
Lost at C:>. Found at C.
Allow me to add the CISO's view.
We have a very good and very eager development department where I work. Despite that, the powers that be decided to outsource a very critical online application development to a third party who has allegedly more experience with this kind of online presence than our developers do. I say allegedly because of what transpired.
The project started roughly a year ago. We built specs and I added my security requirements as usual. I didn't hear from the project manager until November, despite frequent inquiries. In an in-house development, I could have marched over to the developers (which is not the "due process", mind you, but I could actually do it!) and ask them for progress reports. I can not do that in an outsourced development where I am fully dependent on the project manager and his ability (or, in this case, lack thereof) to give me progress information.
In November, I was informed that the project is not quite on track but it HAS to be rolled out in February. By that time, I did neither have any beta (or at least alpha) that I could even remotely start to define security tests for, nor anything else, not even a final content sheet. Of course, I did write my usual reports about it, but that only covers my ass, it does not give me a more secure project. In a nutshell, I don't have a problem with that, but my company does!
February came and I still did not have a finished product in hand. Security tests for a project this size takes at the very least a period of a month, considering that I have to hire auditors, have them conduct audits and compile and evaluate the results. And that doesn't even include necessary fixes yet. In short, to make this whole security process even remotely sensible, I'd have to have this product in hand at least 2 months before the intended launch date. In an in-house development, I can at the very least get the unfinished product and define the testing parameters, maybe even hire an auditor and have him test the almost-finished product instead so we can at least launch with some semblance of security.
In the end, we launched a completely untested product because the launch date could not be postponed. I wrote a report, detailing that I could not test it and hence are not responsible for any failures, which was nice for me (hey, I don't have to do my job and are still out of any obligation), but it's a catastrophe for the company should the product prove to be insecure, gets hacked and we lose a ton of critical information, both internal secret information as well as customer data.
This is what's my horror when it comes to outsourcing. You depend even at C-Level fully on your product managers without too much of a chance to reach down the chain and yank it.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
On a professional note: I've been on a few teams where parts were outsourced, as we shook our heads in sadness at what got delivered. Now I lead the outsourced efforts, and things are much, much better.
On a personal note: I routinely use elance.com for small project help.
It's all in how you do it.
1. Do not go for the lowest bidder. Go with subject matter/platform experts.
2. Do not allow them to exercise any discretion. I mean do not leave any platform decisions to them. They will make decisions on what's best for THEM not YOU.
3. Thoroughly review their work in a regular basis to prevent surprises. Yes, this means MORE work for SOMEONE at your office. But you won't have to pay X people for multiple years, just a few months.
4. Don't outsource work that will take years bring them in house.
5. Don't expect it to be cheaper or faster. But you can expect that more work will be done. If you did tip #1 correctly, you'll get it don better than you an do. And that alone is worth it.
Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
Hi, I am Bob from Texas. I think you are becoming to be unfair to Indian programmers. Indians work diligence at programming trade and have many skills of which may be offered. First place, they speak fluency English. Also, they make for hard work for modest pay. I think you should be finding them to be good workers with code of great significance.
I'm an "on-shore" dev for my company which has hired contractors from India to work on our flagship internal product for literally years now. I can add nothing that hasn't already been sung from the chorus of outsourcing detractors, except the old saying, which I haven't seen posted yet: If you think it's expensive hiring professionals, wait until you hire amateurs.
I used to work with a team of developers, but for reasons outside the scope of this question, my boss and I are the only ones left.
I suspect this actually gets right to the heart of your problem.
Just look at the other responses that basically say you boss has no respect for what you do, you should GTFO NOW.
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
You know, instead of outsourcing the "monkey work, " they should bring in actual monkeys to do it.
They could pay them in bananas!
Unless, of course its not actually "monkey work" and rather something that would be better done by hiring competent software professionals.
"MIT betrayed all of its basic principles."
My boss says that our new strategy is to use outsourced developers to do the 'monkey work' for us.
I don't think this strategy is successful for producing great software, but given enough time your outsourced developers might write Hamlet.
look monkey, you are to do, not to question. If you question, then you are no longer a monkey, and you will be fired.