Advanced Search | Help

  HOME     |    TOPICS     |    BACK ISSUES     |    EVENTS     |    NEWS    



  
Reprints & Linking Info   Printer-Friendly    Email this Article        Font Size     What's This?


[Column]
If CM Is Good, Outsourcing Will Be Better

John Blyler
October 2003

1) Memory Motivates Cell-Phone Growth  46
2) The How And Why Behind Internet-Enabled Embedded Systems  43
3) Hack Your Way To WLAN Security  41
4) Locked Your Keys In The Car? Get Out Your Cell Phone  41
5) Misconceptions About Wireless Broadband Abound  32
ALL TOP 20 >>

Good configuration management (CM) is seldom easy. It can become even more difficult when software-development teams are distributed across the globe. As the outsourcing trend in U.S. wired and wireless companies continues to grow, so too will the headaches associated with distributed development. But as experience has taught me, most of these headaches come from unexpected sources.

Several years ago, I was the manager of a small software team in Portland, Ore. In addition to developing product code, we had to coordinate source control and daily builds with two other teams. One of those teams was the parent company, which was located elsewhere in the U.S. The second team, which was outsourced, was based in India.

Surprisingly, our team encountered fewer configuration-management difficulties with the team in India than we did with the corporate team. The geographic factor didn't pose a major problem for us. Rather, the difficulties stemmed from a difference in the degree of CM process maturity and discipline.

The team in India did present the greatest challenge in terms of software-code transfers and daily product builds. The problem was that we didn't have a secure VPN connection. By using PGP encryption with public keys, however, we successfully transferred all source code, header files, libraries, documentation, and the like between our team in Portland and the outsourced group in India.

The careful planning and distribution of the various application modules also contributed to the success of our joint code-development work with the Indian team. For the most part—aside from a few shared libraries—the group in India worked independently from the Portland team. Synchronization of the daily builds was not generally required. Compared to the corporate team, however, the team in India demonstrated a greater appreciation for the benefits of configuration management.

The time difference between our Portland and India teams was rarely a problem either. E-mail messages, which contained both progress reports and software-related issues, were sent at the end of each day. They arrived just in time for the next team to start work. It was almost like running two shifts of development.

Unfortunately, the corporate team was not as conscientious in its adherence to basic CM procedures. Its members often forgot to check in their source-code files for weeks at a time. Version control was used sporadically. Although changes to shared libraries (DLLs) were common, they were rarely documented or communicated to the other teams. To find a critical part of code or shared library, it was not uncommon for Portland team members to spend hours tracking down the responsible programmer in the corporate office. Often, this was done by phone because timely e-mail responses were yet another problem.

In the end, we were able to meet our product release dates—but not without considerable pain. We came to realize that most of our problems with distributed development were the result of poor configuration-management practices. We also suffered from a lack of management enforcement of the existing CM procedures.

I'll save the details of our homegrown CM system for another time. It's sufficient to say that we had a documented and repeatable process for storing our source code, versioning the libraries and executables, and performing builds on the trunk and branches.

In a distributed development environment, good configuration management is not so much an issue of technology. Rather, it's one of communication, discipline, and practice. Our team in Portland used a homegrown, non-enterprise CM system to develop high-grade software applications with teams in India and the corporate office. We found that the following factors contribute to a successful development environment:

  • Ensure that an adequate CM system is in place. At the very least, it should provide an automated build engine; easy source-code control; a method for versioning all code and related files; and a way to reliably provide for both trunk and branch builds.
  • Make sure that good CM practices are followed first by your own team.
  • Clearly communicate your CM requirements with the other teams. Listen to their concerns.

I'm not saying that the commercially available, enterprise-grade CM tool suites wouldn't have made our job easier. But tools and technology must always be complemented with good communication skills and basic engineering discipline. Please share your thoughts or experiences with me at jblyler@penton.com.





[Reader Comments]
If CM Is Good, Outsourcing Will Be Better
READER COMMENTS:
We want to hear what you have to say about this article!



Enter the text from the image below


Please refresh the page if you have trouble reading this text.

     
Your email is only used if our editors need to contact you.
Connection Failure



PartFinder

Find real-time pricing, stock status, same-day/next-day shipping options and more. Brought to you by Digi-Key. Go to PartFinder.    
GlobalSpec

PART SEARCH :
Powered by: GlobalSpec - The Engineering Search Engine
Sponsored Links

Electronic Design Europe Electronic Design China EEPN Microwaves & RF Schematics
Electronic Design Military Electronics Featured Vendors EE Events Free Design Resources



Planet EE Network Home | Contact Us | Editorial Calendar | Media Kit | Headlines | Site Feedback & Bugs
Copyright © 2008 Penton Media, Inc., All rights reserved. Legal | Privacy