Thursday, May 11, 2006

Outsourcing: Rationale, Criteria, Concerns, Challenges, Lessons Learned

Diamondcluster did a study on the Global IT Outsourcing, here are the highlights:

Top 3 Outsourcing Rationale
1. Reduce or Control Cost
2. Better Manage Variable Capacity Needs
3. Free Up Internal Resources for more Critical Purposes

Top 3 Key Selection Criteria
1. Technology Expertise
2. Cost
3. Flexibility in Structuring Operating Model (offshore, onshore, ...)

Top 3 Outsourcing Areas
1. Application Maintenance and Support (rising)
2. Application Development (declining)
3. Help Desk (flat evolution)

Top 3 Primary Concerns
1. More Management Complexity
2. Reduced Effectiviness (communication overhead)
3. Lower Quality of Output

Top 5 Challenges with Providers
1. Delays in Issue Resolution
2. Slippage of Project Deadlines
3. Inadequate Work Estimate Capabilities
4. Inadequate Skill Proficiency and Experience
5. Conflicting Communication Styles

10 Lessons learned
1. Cost savings alone is not a good reason to outsource.
2. Leverage resources with experience and skills in outsourcing to help
you develop your own sourcing strategies and execution roadmaps.
3. Clearly define your goals, measurement metrics and exit strategies up front.
4. Well-defined governance structures and proactive management and
communication are the keys to success.
5. Structure your vendor relationships as win/win propositions.
6. Outsourcing your problems won’t solve them. You should fix potential
problems first before you hand over the process to someone else.
7. Establishing very specific and measurable SLAs is crucial for evaluating performance.
8. Give providers a chance to be successful. Transitions take time.
9. Due diligence on providers is essential if you want to avoid surprises.
10. Internal resistance to outsourcing can be managed but you have to
foster proactive and candid communications to succeed.

Outsourcing is always harder than you originally thought.

For the complete report see 2005 Global IT Outsourcing Study.

Wednesday, May 03, 2006

10 Continuous Integration Best Practices

Frequent integrations with automatic build and test leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. Since the first publication of Martin Fowler's article on Continuous Integration the method fastly gained popularity. In the latest version he focusses more on the best practices:
  1. Maintain a Single Source Repository.
  2. Automate the Build
  3. Make Your Build Self-Testing
  4. Everyone Commits Every Day
  5. Every Commit Should Build the Mainline on an Integration Machine
  6. Keep the Build Fast
  7. Test in a Clone of the Production Environment
  8. Make it Easy for Anyone to Get the Latest Executable
  9. Everyone can see what's happening
  10. Automate Deployment
Read more in Martin Fowler's article on Continuous Integration.