| Enterprise Application Software Development often involves the coordination of work across a large decentralized organization. For example, today’s large financial services firms may find that they have to manage a project being developed by their NYC based business analysts, Java developers in the company’s New Jersey based IT group and “offshore” developers in their contractor’s office (based in Singapore, India or Ireland). These distributed organizations illustrate the challenges of the multilingual, multicultural, multiethnic “global” organization. The business analysts may find that developing requirements for their “offshore” colleagues may be especially difficult given their variety of work styles, languages and cultural issues. This writer has personally experienced the challenges of developing standards for groups based in Singapore versus our European colleagues. Tolerance for rigid processes may be required in some places and resented (as intrusions) by others. The organization, however, wants to know that source code management practices are effective in safeguarding code regardless of where the developer is sitting!
The Challenge
The CM practitioner must address these challenges in order to successfully deploy standard Software Configuration and Release management practices throughout the organization. In my first article I briefly described many of the “people” issues that must be addressed by the successful CM practitioner in today’s challenging organizational environments. In this article we will focus more on the issues involved with Enterprise Application Development. We’ll also introduce a framework for implementing software process improvement (SPI) throughout the organization. This approach can help CM practitioners implement Software Configuration and Release procedures in large (global) companies. The SEI Capability Maturity Model as well as ISO 9000-3 provide a framework for software process improvement that does address many of these issues. However, these process improvement approaches can be extremely difficult to utilize unless they are part of a company-wide software process improvement initiative. Often CM practitioners must work in less than ideal organizational environments. Many companies decide to enlist the services of a CM practitioner after there has already been a serious problem (or disaster!). Discovering and addressing the root causes of these problems can certainly be a most difficult assignment.
Action Planning
The CM practitioner may utilize a methodology known as Action Planning (Kurt Lewin) to identify problems/goals, engineer processes and evaluate/measure success as well as the need for further organizational change and development. Perhaps the most important aspect of this approach is a framework for understanding the many challenges that will surface as “problems” and “obstacles” to implementing effective software configuration and release management practices. In a future article we will discuss viewing the organization as an “Open System”. This refers to understanding the company in terms of internal and external forces and influences. The most obvious is “resistance to change”. The skilled CM practitioner can learn to view “resistance to change” as one of the ordinary tasks that must be addressed in any major organization.
Action Planning provides a set of effective tools for addressing these concerns. In this column we will give many examples of implementing Action Planning to identify problems/goals, identify action steps and evaluate (and understand) results (e.g. success of the implemented change).
The Steps of Action Planning May be Described as Follows:
1. Problem or goal identification.
2. Data gathering and preliminary diagnosis.
3. Feedback to key client or group.
4. Joint diagnosis and planning.
5. Implementation of proposed change.
6. Data gathering after implementation.
7. Surveillance and/or auditing to confirm changes are maintained.
Let’s Apply This Model to Implementing a CM Solution in a Large (Global) Organization.
1. Problem or Goal Identification.
Enterprise applications are often distributed across multiple platforms (e.g. Unix/NT/mainframes). The obvious goal is safeguard all source code (as well as build and runtime dependencies) regardless of where the application is being developed. The test for success is clearly being able to build (from source) any application that is currently in production.
Is this really important?
The importance of these efforts can be understood in terms of lost profits due to extended system downtime and loss in productivity. If the system is used for securities trading then losses may indeed be significant! But there is also another aspect of this challenge. At a recent meeting of the U. S. Secret Service Electronic Crimes Task Force (ECTF) speakers highlighted the need to address the risks of attacks on our nation’s information infrastructure. One of the speakers described a major problem in which a significant amount of money stolen by attacks on ATM machines.
Experts agree that attacks on large scale Internet based systems are getting more and more sophisticated each day. Most people just assume that there will always be virus software capable of recognizing and dealing with virus software. In fact it would be entirely possible to sabotage a system, such that it would be almost impossible to find and eliminate the virus/Trojan “backdoor” code. Given this challenge, effective CM practices as no less than an essential requirement for our national security. With effective CM practices in place, compromised systems may be quickly rebuilt rather than relying upon efforts to find and eliminate infected code. U. S. Special Agent in charge, Bob Weaver and others are working diligently (in partnership with corporate security experts) to address these issues. CM practitioners may contribute to this effort by developing enterprise wide practices that make rebuilding any essential system possible in the event of a disaster or illegal infiltration.
2. Data Gathering and Preliminary Diagnosis.
CM practitioners must gather relevant data in order to understand the requirements for implementing a CM solution. This may include an assessment of current platforms, languages, release cycles and number (and skillset) of developers involved. The initial “diagnosis” should include an initial process description (including list of tasks, roles and responsibilities) that should be implemented to meet the organization’s stated requirements. In an Enterprise Development effort these requirements may vary greatly from one part of the organization to another. The CM practitioner must identify the key goals that must be common throughout the organization. The actual achievement of these goals may need to modified in one part of the organization or another. Flexibility and creativity is essential to project success. It has been this practitioner’s experience that it is essential to view data gathered within the context of the organizational culture.
3. Feedback to Key Client or Group.
The proposed CM solution must be discussed with those who will be affected and also approved by the management who have requested the effort. There is often a discrepancy between what the developers request and what management will approve. Often CM practitioners experience this “disparity” as a significant frustration. In fact this information can be diagnostic and extremely helpful in understanding the organization’s culture and behavior. The CM practitioner who understands the environment will obviously be most effective at coming up with creative solutions that will work within the groups culture. Incorporating the developer’s input (appreciative inquiry) in problem diagnosis and solutions gives the key stakeholders a voice than can obviously result in better solutions. Further this creates a sense of fairness and corporate justice, which can help to overcome resistance to change. “Buy-in” and support from senior management is a classic (and essential) requirement to the success of any Software Process Improvement effort. All of these steps are implicit in feedback of the CM practitioners observations and recommended best practices.
4. Joint Diagnosis and Planning.
The most effective CM solutions are developed with input from many people. The CM practitioner who approaches process engineering as an autocratic task will face significant resistance to change. Instead, presenting ideas as a set of alternative “best practices” can be most effective. It is also helpful to suggest that “these are the ideas that I have stolen from other groups in the organization”. This approach places the challenge between peer develop groups and can make for some healthy competition to come up with the “best CM practices”. For example, the CM practitioner can explain that “I just go around stealing everyone else’s best ideas and sharing them with everyone else. Here’s what I’ve seen other groups do in your situation…”
Appreciative Inquiry is the basis of good teamwork that results in better processes, solutions and developer acceptance than could possibly be achieved by any one practitioner working alone.
5. Implementation of Proposed Change.
The implementation of effective CM practices must be done in a manner that will be accepted and used in each of the development teams that are part of the Enterprise Application Development effort. The CM practitioner will be tempted to provide a “one size fits all” approach, in the name of consistency throughout the organization. This will likely result in significant resistance to change. A better solution is to identify the key goals and provide a list of “best practices” to be used in achieving these goals. Developers can held to the bottom line (don’t loose your code!).
Developers are your customers
In my work, I usually offer that I will support those groups who wish to adopt our recommended practices (otherwise you are on your own!). Peer pressure is a very effective change motivator. I work on the groups who are most interested in my assistance first. I also market my services and I focus on providing excellent customer service to my “customers”. The “customer service” paradigm works (especially) well when the users are (internal) developers. “Yes we all work for the same company, but I’ll view you as my customer and I’ll work hard to make you satisfied with the service that I provide.”
It is never a good idea to focus on those who are most resistant. The implementation of effective CM practices must be flexible and readily adaptable to the groups within the organization. This is especially important in large Enterprise Application Development efforts, where the challenges may be varied and especially complex.
6. Data Gathering After Implementation.
Most enterprise CM tools have history gathering tools that can be used to gather diagnostic data after implementation. Is the tool being used? Are developers checking in their code on a regular basis? Are naming conventions (specified in the CM Plan) being followed. Most importantly can the groups rebuild their releases or is code being lost? Is the CM process improving productivity or creating a “bottleneck.” The wise CM practitioner will always keep in mind that the most important goal is running the business. The CM tools and processes should help the business run more effectively and not prevent the systems from being up in time to run the business! Post implementation should focus on evaluating the effectiveness of the CM process in helping the group to ultimately meet business needs of the organization.
7. Surveillance and/or Auditing to Confirm Changes are Maintained.
Once the development group has accepted the new CM practices, it is easy for them to be abandoned or bypassed. It is unusual for groups to “voluntarily” have the discipline to avoid reverting back the old practices, in the name of “making a tight deadline”. It is often possible to establish automated monitoring practices to report on CM tool practices and report their proper use to senior management and possibly internal audit. For example, reports can be set up to automatically notify users of aging code checkouts, the use of version labels (for releases) and authorized access to code bases. These scripts can be the most effective way of “freezing” in place appropriate and effective behavior. They also provide a tangible test of the overall effort to improve CM practices. In a large organization, they are often the only way to monitor large Enterprise Application development efforts on an ongoing basis.
Enterprise Application Development presents many challenges that highlight the value of good CM practices. The Action Planning framework can be used to effectively understand and address these important goals.
In edition to being a Contributing Editor for CM Crossroads, Bob Aiello is an Associate Director at Bear Stearns & Co. where he is engaged in Software Process Improvement on a large scale basis. He is also on the Board of Directors for the Organizational Development Network of Greater New York (ODNofGNY) and a member of the Steering Committee of CitySPIN in New York. Mr. Aiello has a Masters in Industrial Psychology and a BS in Computer Science.
You can reach Bob by email at raiello@acm.org
Trackback(0)
Comments 
Write comment
 |