CMI Tech Corner
CMI’s Continuous Integration Series Article #2 Enabling Continuous Integration Through Automation

Enabling Continuous Integration Through Automation
Uncovering the Value of Continuous Integration

In Scrum, each Agile sprint of two to four weeks each is expected to result in in a potentially releasable product.  The product is potentially releasable because it has been fully regression tested in each sprint.  The product version at the end of the sprint may not be fully featured, but every feature will work.

“How is that possible,” you ask?  The answer is automation, lots of it, judiciously applied in a team culture with intolerance for defects lurking undetected and unrepaired in the code base. 

It’s the automation that captures the attention of the naïve, but it’s the judicious use of the automation in a relentless war against defects that’s delivering the much-ballyhooed value proposition of Continuous Integration.  Deploying Continuous Integration without team members’ passion for preventing the introduction of defects in the code base or for repairing them as soon as they can be detected is essentially indulgence in technology for technology’s own sake.

With that said, generous investments in automation are making Continuous Integration a smashing success in IT shops around the world.  Automation opportunities exist in making all of the following operations hands-free from start to finish: tagging, building, packaging, and deploying, testing, creation of test artifacts (defect reports), and email notification of team members.

In a successful Continuous Integration deployment, the stability of the code base is always known, and the potential release date is always imminent.

Organic CM: Natural Fit of CM

The natural goal of CM – comparing expected vs actual – creates an implication about what sort of business activity Configuration Management and where it may best fit in an organization.

Before diving into this, it is critical to understand that there is a difference between “CM team” and “employees that perform CM activities”.   For example a developer will perform many CM activities in the course of normal development – such as searching through branches and checking code out/in – and yet not be a member of the CM team.    To be effective, the CM team’s primary function should be to define, establish, and enforce the organization’s CM related strategy, policies, and practices.   Although it is possible that the CM team only focuses on this and never actually touches any code/products, there is often a benefit to having the CM team perform specialized activities such as creating branches, or when there is a need for separation of control.

Because the CM team should be focusing on strategy, policies, and practices where that team fits into the overall organization is no small matter and has a very large influence.  The CM team will naturally acquire the mindset of its parent organization.   When it is a part of a development organization, it will become focused on tools (version control, build automation, etc).   In an operations type group it will focus on gate keeping.   As part of a service organization, it will focus on providing ‘billable’ services (builds, service calls, etc).   When in the QA organization it will attempt to focus on quality – even though this is not a specific goal of CM.  

The fundamental issue is one of balance:  CM activities provide support for many roles within the organization including development, QA, testing, and operations.   The CM team is at a disadvantage when it cannot interact equally with each role to find the balance that best supports the overall effort.

With this in mind, it is fairly clear that the CM team should be its own organization, on par with the development, QA, testing, etc. groups.   A good second choice would be for CM to be part of program management type organization (PMO) as there is a fair amount of synergy that can exist between the two.

Regardless of where the CM team fits into an organization, the day-to-day CM related activities should be performed in the most natural location and person for the task.

CMI Launches its Software Development Center of Excellence in Bangalore, India

Continues to Demonstrate its Commitment to Helping Global Telecommunications Companies Effectively Manage their Software Development and Testing Business  

Matawan, NJ, USA– May 21, 2013 – Configuration Management, Inc. (CMI), a leading IT Consulting innovator and Staffing Provider announced today that B&Z Research India Private Limited—its wholly owned offshore subsidiary has opened its new Software Development and Testing Center in Bangalore, India.

“B&Z’s Research created this new center so U.S. companies could cost effectively offload their day-to-day software development and systems testing challenges to highly skilled resources and its U.S. led Program Management team,” said William Anderson, CMI’s Chairman and Founder.” The center is perfect for real time embedded development projects that require small to medium-sized teams.”

The Bangalore center is located on the elegant Evoma Business Campus. It is 100% secure, has private/redundant leased line access, generator and battery backup infrastructure, as well as round-the-clock availability. The complex also includes a 5-Star hotel.

CMI’s Continuous Integration Series Article #1 Continuous Builds Are Not Continuous Integration

Continuous Builds Are Not Continuous Integration
Uncovering the Value of Continuous Integration

What’s the difference between Continuous Integration and setting up your builds on a Continuous Integration server like Hudson?

More than anything else, Continuous Integration is a mindset that expects all the effort to integrating all the changes being made to a piece of software must be done continuously. That includes the effort to build the software, but it also includes the work to test, debug, and repair any integration issues.

We’ve all seen traditional project schedules for developing software. There is a certain amount of time in the project plan to do the development on all the components in the software, and then there’s a certain amount of time on the back end of the plan or schedule for resolving all the issues that are found when all the separate development efforts are brought together. Then in reality, it takes the software developers longer to develop the code than the project plan allowed for, so the testing phase of the schedule is compressed. The testers complain bitterly about this of course, and pull heroic late night and weekend shifts to get the testing done so the project can be completed on schedule. In the end, the project manager is left with the unpleasant choices to deliver the product late, to deliver the product buggy, or to deliver the product with the budget overrun. Normally, the project does all three. After the product ships, everyone cringes as they wait to see what the market or the business customer does to them. In the background, ambitious people prepare all their excuses why the project failure was not their fault.

By contrast, Continuous Integration pulls the integration test phase up in the schedule, effectively running in parallel with the development. In the Agile environments in which CI evolved, each two- to four-week sprint results in a potentially releasable product. The product is potentially releasable because the product has been fully regression tested in each sprint. The product version at the end of the sprint may not be fully featured, but every feature will work.

Organic CM: Activity Types

The natural goal of CM – comparing expected vs actual – also provides us a good way of categorizing the various CM related activities and gives us a simple, yet powerful way of looking those activities.

In general, a CM related activity will fall into one of the following categories:

1.      Activities that deal with expected.

2.      Activities that deal with actual.

3.      Activities that compare the two.  

These categories make it easier to map interdependencies, look for symmetries, and even identify what current activities are really not CM related.

The simplicity here is that there is that each comparison activity is precisely the end goal of CM, and that there is a very tight and necessary dependency between the three categories.   Each comparison requires ‘expected’ and ‘actual’ values that come from associated value(s) in the other categories.   Each activity in the ‘actual’ category should have a matching activity in the ‘expected’ category, and should feed a comparison activity.   The same is true for activities dealing with ‘expected’.

 Mapping this triangle out will reveal the unneeded or missing activities, as well as show where there are overly complex relationships.   It is often extremely helpful to look at the artifacts – the concrete and tangible data – that the activities produce.    This triangle also allows us to be able to articulate the importance of the artifacts by showing how they support the comparison.

The final, and critical, thing to do is to link each comparison activity to the business need that drives it.

About Configuration Management, Inc.

Configuration Management, Inc. (CMI) is a leading provider of technology services and Enterprise Change Management, Software Configuration Management®, Release Management and Software Quality Assurance & Testing Services. Our standards-based framework helps organizations manage change across all digital assets including software code, software packages, web content, hardware, and documentation. These services streamline the development process to increase ROI, improve quality, and compress time-to-market. Headquartered in Matawan, NJ, CMI has offices worldwide.

For additional information, please contact:

Corporate Communications Manager
(732) 450-1100
press@cmi.com

Organic CM: Natural Fit of CM

The natural goal of CM – comparing expected vs actual – creates an implication about what sort of business activity Configuration Management and where it may best fit in an organization.

Before diving into this, it is critical to understand that there is a difference between “CM team” and “employees that perform CM activities”.   For example a developer will perform many CM activities in the course of normal development – such as searching through branches and checking code out/in – and yet not be a member of the CM team.    To be effective, the CM team’s primary function should be to define, establish, and enforce the organization’s CM related strategy, policies, and practices.   Although it is possible that the CM team only focuses on this and never actually touches any code/products, there is often a benefit to having the CM team perform specialized activities such as creating branches, or when there is a need for separation of control.

Because the CM team should be focusing on strategy, policies, and practices where that team fits into the overall organization is no small matter and has a very large influence.  The CM team will naturally acquire the mindset of its parent organization.   When it is a part of a development organization, it will become focused on tools (version control, build automation, etc).   In an operations type group it will focus on gate keeping.   As part of a service organization, it will focus on providing ‘billable’ services (builds, service calls, etc).   When in the QA organization it will attempt to focus on quality – even though this is not a specific goal of CM.  

The fundamental issue is one of balance:  CM activities provide support for many roles within the organization including development, QA, testing, and operations.   The CM team is at a disadvantage when it cannot interact equally with each role to find the balance that best supports the overall effort.

With this in mind, it is fairly clear that the CM team should be its own organization, on par with the development, QA, testing, etc. groups.   A good second choice would be for CM to be part of program management type organization (PMO) as there is a fair amount of synergy that can exist between the two.

Regardless of where the CM team fits into an organization, the day-to-day CM related activities should be performed in the most natural location and person for the task.

Continuous Integration from a Process Engineering Perspective

Perhaps you have hesitated to make a full investment in Continuous Integration, wondering if this is just a passing fad.  Continuous Integration has momentum because it is firmly grounded in sound theoretical principles.  Because of its fundamental correctness, Continuous Integration is destined to make a profound and permanent impact on the way software is developed.

It has long been established that the impacts of defects detected and repaired early in a process flow are much less than the impacts of defects that lie undetected until late in a process flow.  This is partly because the work performed on defective software, i.e. the packaging, deployment, testing, etc. must be repeated once the defect is repaired.  The effort to identify the defect also increases the longer the defect exists in a changing code base, since it is much easier to troubleshoot a problem when the difference between working code and nonworking code is very small.

So, why is it that many organizations do not fully commit to rigorous code inspections and frequent, full regression testing?  The answer ultimately is the cost, or the perception of the cost, to detect the defects.   Businesses must justify the certain cost, both in dollars and in time to market, of committing to detect the defects early versus the subjective and uncertain risk of adverse market reaction to the product once it is deployed without that kind of investment.   Confronted with the choice to pay certain money to mitigate uncertain risk, businesses often choose to cut costs as the lesser of two evils.

In the Agile world where Continuous Integration has evolved, the uncertainty of software development is greatly mitigated by practices that ensure a potentially releasable at the end of every two- to four week sprint.  “Potentially releasable” by definition includes completion of successful testing of committed feature content.  The stability of the code the impact of lurking defects  have become more visible and the value of detecting defects long before the end of a sprint has become more obvious.

Continuous Integration techniques have been born of the need under high visibility to detect defects as early and cost effectively as possible, so the defects can be removed before the end of the sprint.  By making the necessary investments to implement these techniques, an organization can drive the down costs for detecting and repairing defects, thus preventing their downstream impacts.

Given that cost effective techniques have been developed to prevent the greater downstream costs that lurk below the surface by default, what could hold you back from taking the plunge?

CMI Wins Major Services Contract at Leading Commercial Bank

Leading Commercial Bank leverages CMI’s Managed Services to support the Release Management for over 200 software systems

 John Falzon, COO at Configuration Management, Inc. announced that it has been selected by a Top 5 US Bank for a three year multi-million dollar managed services contract.

 On August 13, 2012 CMI signed a three year managed service contract for Release Management services.  As part of the managed service contract, CMI will be supporting over 200 software systems at the Bank.  The agreement also leverages CMI’s service based pricing and their consumption-based approach providing the Bank with essential flexibility to use and pay for the services they need.

 “The Bank clearly recognizes CMI as an industry leader with 20 years of experience and expertise in delivering Release Management Solutions,” states Falzon.

Tips for Phone interviews

Congratulations on making it this far! Securing a phone interview is the first look that you are giving a future employer. Here are a few tips from our recruiters here at CMI Staffing to ensure you are successful:

1)    Find a nice quiet space. It seems logical but we can’t tell you how many times people want to do a phone interview in their car!

 2)     Have the resume you sent in in front of you.  If you made any changes to your resume after speaking with someone from CMI have that resume in front of you. It’s likely that the interviewer will have that copy.

 3)     Stand up! This helps to project the voice and makes the person sound like they are more confident.

 4)     Think of 3 questions to ask your interviewer that pertain to the company, manager, and finally the positions future. This shows you are engaged in the conversation and are proactively thinking about this position.

5)    Don’t be coy! Ask for the job. You don’t necessarily have to say “I want this job” but you can say “I’d really appreciate the opportunity to fill this position, and I hope to hear from you soon.” In some cases, the manager doesn’t even know if the candidate is excited about the position.


nasdaq:

This great visual.ly infographic, pulled from the results of a TIME and Qualcomm survey, shows us the global impact of wireless technology—and how different countries feel about their phones. Full graphic here. 

nasdaq:

This great visual.ly infographic, pulled from the results of a TIME and Qualcomm survey, shows us the global impact of wireless technology—and how different countries feel about their phones. Full graphic here.