• Using in-house development engineers—the classic approach to staffing your software development project.
• Onshore contract outsourcing—hiring a company in your own country to handle your software development.
• Offshore contract outsourcing—hiring a company outside of your country to handle your software development.
• An in-house and offshore blend—in-house engineers and offshore teams work on the same project, aiming for 24-hour round-the-clock development.
• Creating an offshore subsidiary—a good choice if your project requires 50 or more software engineers.
• Build, operate, and transfer—hiring an offshore company to provide engineers on contract. The offshore company builds your engineering team and operates it for you. After a year or two, you can transfer the engineers to your offshore subsidiary.
• Political: What will be the impact on employee morale if you outsource? Will your customers care if you outsource projects? How comfortable is your organization working with different cultures?
• Business: How important are export restrictions on your product? Are there other reasons to consider going offshore? Is cost a major factor in the decision to outsource? How do you protect your intellectual property? How quickly does the project under question need to ramp up? Can the project tolerate schedule slippages? Is outsourcing a long-term approach for your company or just to meet a deadline? Do you see outsourcing as adding value to your company?
• Technical: Do you need specific technical expertise? How well have you captured the project's software requirements? How well-defined is your software development process or methodology? How many engineers do you need to develop your software? What kind of software development project are you considering outsourcing?