December 11, 2007

Software Tools to Support Outsourced Development

Developing software requires expertise across a wide range of disciplines. Areas such as project management, software development, and software testing are performed by skilled people that have had years of practical experience delivering on time and within budget. The areas within each of these disciplines that contribute to successful software delivery include people, process, communication, tools, and so on. I’ll be discussing the role of tools in this article, particularly as it relates to outsourced software development projects.
Companies looking to outsource software projects fall into one of a few categories. Each of these cases is an opportunity to find an outsourcing partner that can best meet your needs. Let’s look at each of these cases in detail.

You’re an established software company that already has a suite of tools to support your current internal development team.

The optimal solution for most of these cases is to find a partner that can adapt to the tools you are currently using. Look for experience with your specific development infrastructure. They should have experience with the most common tools across a variety of functions such as:

  • Source control systems such as CVS, SVN, Perforce, SourceSafe, or ClearCase.
  • Bug tracking systems such as Bugzilla, Mantis, TestTrack, Quality Center, and ClearQuest.
  • QA automation tools such as Tcl, Expect, Perl, WinRunner, QuickTest Pro, and Rational Robot.
  • Development environments such as Visual Studio, NetBeans, IDEA, and Eclipse.
  • Project management and communication tools such as wikis, conferencing, mailing lists, IM, Skype, and Trac.

Your partner must be capable of working independently with periodic updates to your tools, or most commonly use a VPN to connect directly with your internal systems. Your outsource team should meet the same expectations you would have of a remote development team you hired yourself. Your outsourcing team’s past experience with your company’s tools will greatly contribute to their ability to become productive quickly. Be wary of partners that work independently in cases such as these.

You’re a new software startup that doesn’t have the tools in place yet.

This can be an excellent opportunity to learn from an experienced software development partner. Their experience with great tools and process can help get your own tools and process going in the right direction. Some partners may hide the inner working of their approach to developing your software, but the best partners will open their own systems for everyone within your company to access. Look for tools that leverage the best open source solutions for great software development. They must provide for secure access to everyone on your team while promoting great transparent communication regarding all your projects. Make sure all your data is easy to transition to your own internal tools once you are ready.

You’re not in the business of developing software.

In this case, you may think your partner can do whatever they want as long as your project is delivered on time and within budget. In reality you will find that you still must take ownership of software products to some extent. The future could include transition to another team either internally or through another partner. Since the work is typically done work-for-hire, there’s no way around the fact you are now in the business of software.

Look for a great partner that can help you understand software development at the level that makes sense for you at this stage. You should also be looking for great open source tools for the very same reasons stated in the previous case. The deeper understanding you will gain from transparent access during development will improve your satisfaction with the entire project.