Posts Tagged ‘software project management outsourcing’

So Far Away

November 10, 2008

Everything is going global. This goes double for our industry, where there are no shipping costs involved in transporting raw materials. With several sites like RentACoder, 99designs and GetAFreelancer it is easier than ever to find talented programmers and designers from around the world that are ready to help you tackle your project. Thomas L. Friedman analyzes the effect of this 21st century phenomenon in his bestseller The World Is Flat. As software continues to become a commodity, here are 10 tips to using this new model of commerce:

  1. Be explicit in your requirements
  2. They say “experience is the best teacher”. In my experience, the most successful outsourcing jobs have been the ones where the requirements were communicated to the contractor very clearly. Any time you leave it up to the programmer/designer to exercise some creativity you run the risk of receiving work which is not quite what you had hoped for. This can be disastrous in software, where interfaces need to be well-documented and quite precise. Document your requirements well or don’t be surprised when you receive deliverables that are unusable.

  3. Keep in constant contact
  4. One big problem in outsourcing is communication. Compounded by language barriers, this can be a huge problem for longer-running projects. Use instant messaging, wikis, or good old fashioned phone calls to stay in touch with your contractors. Be sure to keep in touch too, even after the project is finished. It’s pretty likely that you’ll want to bring in someone that you’ve worked with well in the past on a new project, or that you’ll need to make some changes to the original design.

  5. Be selective
  6. Most outsourcing sites offer a ratings and feedback system so that it’s easy for you to evaluate avaiable freelancers. Does this person have a track record of delivering on time? Are you selecting someone who has experience working on many projects in the past, or is he a relative new-comer to this? Be sure to ask for code samples, portfolios, or links to personal websites and blogs.

  7. Ensure that payment is commensurate with local compensation expectations
  8. When negotiating, make sure to compensate for differences in local economies. Finding cheap labor by leveraging economies of scale is probably the biggest reason to explore outsourcing. Find out where your contractor lives and find out what the local salary average is in his area. One great reference for this is the CIA World Factbook. Using a currency exchange calculator like XE will help to translate these figures to local currency.

  9. Test thoroughly before releasing funds
  10. Ideally you should have a test plan in mind before your contractor delivers the work. Run through it and be sure that the code delivered to you works as promised.

  11. Integrate contractors into your workflow
  12. It doesn’t do you any good if it takes more effort to manage your virtual workforce than it would take you to do the work yourself. If you’re not already using project management systems like version control and issue tracking systems, now would be a good time to consider implementing them. Be sure to grant your workers the minimum access required to do the job. I recently invited a Ukrainian programmer to participate on our project by setting up a sub-project on our Redmine issue tracking system and creating a git-shell for him to check his revisions into our repository. If you’re not up for running these systems on your own servers then checkout managed solutions like Basecamp.

  13. Agree on non-disclosure and ownership
  14. This is valuable intellectual property and you need to be sure that your contractor agrees on who owns the rights to work product once the job is complete. In a similar vein, be sure that your contractor isn’t using any 3rd party code or clip art unless it is licensed appropriately for your project. Use your best judgement to decide whether or not this agreement needs to be legally-binding by contract.

  15. Don’t outsource your secrets
  16. A valid fear of outsourcing in IT is that contractors may take work product and offer them to your competition. Make sure that your most valuable code is built in-house by staff members that you know and trust. If this isn’t an option for you then at least consider breaking the project up into manageable sub-projects which can be built separately by multiple contractors. The government uses this model for top secret projects all the time.

  17. Ask for documentation
  18. The lion’s share of software cost comes not from initial development but from ongoing maintenance. Make sure your contractors are delivering documentation detailing their design decisions to mitigate this factor.

  19. Back it up
  20. Nothing is more frustrating then paying for a piece of code and not being able to find it when you need it. This can happen easily when there are several interdependent modules of a system which are being developed simultaneously. Some outsourcing sites keep a copy of the work product on their website for your download long after project completion, but just to be safe it’s a good idea to copy it to a thumb drive, burn it to disc, copy it to a virtual (web) drive, or email it to yourself.


Design a site like this with WordPress.com
Get started