Using Independent Computer Consultants and Consulting Specialists

Abstract: Article discusses unique characteristics of Independent Computer Consultants, the services these specialists can offer, and how to assess the qualifications of Independent Consulting Services Firms.
Keywords: Computer Consultant, Consulting Services, Independent Consultant, Computer, Professional, Specialist, Independent, Consultancy

This article first appeared in "Directory of Computer Consultants, 1992 Edition" published by the Phoenix Chapter of the Independent Computer Consultants Association (ICCA). It appears here in slightly edited form. The opinions expressed are those of the author, and not necessarily those of the ICCA.

In the following sections we will discuss some of the unique characteristics of Independent Computer Consultants, and some of the services that these specialists can offer a client. We will conclude by examining the question of how to assess the qualifications of Independent Consulting Services Firms.

What is an Independent Computer Consultant?

There are many different aspects to the definition of what an independent consultant is: Objectivity, Detachment, Resources, Facilities, and Knowledge, to name a few of the more important ones. In this section we will examine each of these aspects in turn.

Objectivity

An independent consultant provides an objective, unbiased outlook on the client's situation. The independent consultant does not express opinions or make recommendations to a client without disclosing to the client any vested interest which the consultant might have in the outcome.

Detachment

In order to maintain objectivity, an independent consultant must be detached from the day-to-day operations of the client's business. While an independent consultant may make recommendations regarding business or personnel matters, the client must retain responsibility for business decisions and their implementation. An independent consultant never supervises the client's staff, and conversely, the staff does not supervise the consultant. To do either would compromise the independence the consultant needs to function effectively.

Resources

An independent consultant has a substantial on-going investment in training, books, and computing equipment that can be brought to bear to solve the client's problems. Independent consultants bring not only their own talents and abilities to a task, but through membership in professional organizations such as the Independent Computer Consultants Association (ICCA) have access to numerous colleagues that are able to provide additional resources should the need arise, without requiring any additional effort on the part of the client.

Facilities

While some activities of the consultant must be done at the client's site, one of the hallmarks of an independent consultant is that analysis, design, coding, report preparation, and similar activities are usually done away from the client's site. This avoids disruption of the client's day-to-day operations, and saves the client from the cost of providing facilities to support these activities.

Some of the reasons that a consultant might perform work at the client site include security considerations, or when the consultant is retained to service the client's hardware. Other reasons for the consultant to work at the client site include training or interviewing the client's employees.

Knowledge

An independent consultant has an ongoing commitment to continuing education, and does not rely on the client for training. However, this does not mean that the consultant never obtains information from the client. Indeed, one of the most important tasks that an independent consultant can perform is to elicit knowledge from the client to organize it into a format conducive to better use by the client or as a foundation for developing recommendations for the client.

Services Provided

This section is an overview of services that an independent computer consultant can provide. These services include Knowledge Engineering, Software Engineering, Quality Assurance, Modernization, and Support, among others. Indeed, one of the hallmarks of an independent consultant is a strong generalist background permitting the consultant to successfully complete unusual assignments.

Knowledge Engineering

Knowledge Engineering encompass a variety of knowledge acquisition, knowledge organization, and knowledge presentation activities. In many cases the client's organization may have a considerable asset in accumulated knowledge that is not organized in the most useful form, or which needs to be passed on to other members of the client's organization.

For example, the client may have computer programs that have been developed over many years, and which may embody business rules that are no longer documented. This is often the case when the computer system has been in operation for a long time and the original developers are no longer available. The design recovery process which can be used to extract and document the business rules and program design from an existing program is called Reverse Engineering.

In another example, the client may have a situation in which a large portion of its work-force is relatively inexperienced, and there is concern that the few experienced workers are spread too thin or are nearing retirement. In this situation, it may be useful for the client to develop an expert system or hypertext on-line documentation that can provide guidance to inexperienced workers. This shortens the learning curve and enables inexperienced workers to be more productive.

For yet another example, a client may feel a need for change, but may benefit from assistance in clarifying needs and defining requirements. A client may say "I don't know what I want, but I'd recognize it if I saw it." In this case, commissioning a full-scale project could turn out to be a costly mistake, if upon seeing the completed system the client finds that it is not really what was desired or needed. In situations like this, it may be useful for a consultant to develop an inexpensive Rapid Prototype or "mock-up" which will give the client some idea of how their system would behave as a consequence of making certain design decisions. Such Rapid Prototypes may sometimes be refined into full-scale production-quality systems, but usually it is more cost-effective to treat the rapid prototype as a "throwaway."

Other knowledge engineering activities in which a consultant may be utilized include technical writing and editing, developing and presenting seminars and training programs.

Software Engineering

Software Engineering is the application of sound engineering principles to economically produce computer programs that correctly, reliably, and efficiently solve the client's computer data processing needs. Although there are many approaches to Software Engineering, the classical approach consists of a series of steps: Familiarization, Analysis, Design, Implementation and Documentation, Testing, Installation, and Maintenance.

It is important to keep in mind that Quality Assurance measures must be applied throughout all steps of the Software Engineering process. This is important because errors or omissions are easily and inexpensively corrected if found before proceeding to the next step in the process, but become increasingly costly to correct the longer they remain undetected.

Familiarization

During the initial phase of the Software Engineering process, the consultant must become familiar with the unique situation of the client, how the proposed project fits into the client's corporate culture, and how the project will interact with the client's operations. The consultant also begins gathering the information that will be needed for the successful completion of the Analysis phase.

Analysis

The Analysis phase of the software engineering process is a form of Knowledge Engineering, in which the needs of the client are identified and organized into a form which supports the Software Engineering process. During the Analysis phase, the Software Engineer may construct data models and simulations that provide a foundation for the Design phase. The consultant may also consider various alternative approaches to the problem at hand and evaluate the relative strengths and weaknesses of each. The Familiarization and Analysis phases correspond to strategic planning.

Design

During the Design phase, the approach chosen in the Analysis phase is broken down into a concrete plan for implementation. The Design phase corresponds to tactical planning. Ideally, a written document should describe the system in detail.

Implementation and Documentation

The Implementation phase is where the design is translated into reality. The implementation may consist of modification and configuration of off-the-shelf software packages, or custom coding of entirely new programs. In some cases, a system will be based on off-the-shelf software packages with additional custom coding added to "glue" the system together.

Testing

During the Testing phase, the working system is demonstrated and evaluated to be sure that it is functioning properly. This phase is only one aspect of an overall quality assurance program that should be in place throughout a project.

Installation

During the Installation phase, the newly developed system is put into production. The new system may provide a new facility, but more often it will replace an existing manual or automated system. In this case, careful planning must be made during the Design phase to ensure a smooth transition to the new system.

Maintenance

Software does not wear out in the normal sense of the word, and a program will perform its task forever, as long as the hardware that it runs on continues to work. Unfortunately, the client's needs often change with time, and programs must be updated to cope with changing needs. This process of adapting an existing computer program to meet changing needs is called "program maintenance," and for a successful program (i.e. one that is used for many years), may account for a significant portion of the total life-time cost of the program. Proper planning, design, and documentation of the software system may substantially reduce the life-time cost of a software product, with only a modest up-front increase in development cost.

Hardware does wear out, and does require periodic maintenance and adjustment. Moving parts such as cooling fans and disk drives are most susceptible to wear-out. Other parts that are susceptible to wear-out include monitor screens (especially if an image is displayed all the time) and the batteries that are used to maintain essential system memory while the computer is turned off or the line supply has failed. Power supply output voltage regulation may drift and need to be adjusted. In many cases, by the time a major system component has failed, it is more cost-effective to replace the entire system, due to the tremendous decrease in cost/performance that rapidly advancing technology has made possible.

An important preventive maintenance operation is the periodic reorganization and surface analysis of hard disk data storage. This is necessary to assure optimum disk performance and reliability. The making of periodic system backups is another aspect of preventive maintenance.

Quality Assurance

Quality Assurance is necessary at every step of the Knowledge Engineering and Software Engineering processes, and includes both Verification and Validation (V&V). Verification answers the question "Are we building the product right?" Validation answers the question "Are we building the right product?" In order for a computer system to be useful to the client, both questions must be answered "Yes".

Verification and Validation may be done by the client in some cases, but in many cases the client will lack the needed expertise. In this case, the client may wish to retain an independent consultant to do a V&V audit.

Verification may include test planning and design, test execution, and evaluation of the results. Verification may also include examination of the design and coding documents for good programming style.

Validation may include evaluation of each phase of the Software Engineering process to make sure that it follows logically from the previous phase, without omitting, modifying, or adding features.

Another form of Quality Assurance includes security audits to make sure that data is protected from improper access as well as from accidental loss.

Performance Evaluation and Tuning are another form of Quality Assurance, in which a functioning system is evaluated to determine how it can be made to function faster or with lower cost. Troubleshooting and Debugging are sometimes treated as Quality Assurance measures, but are more properly viewed as part of the Software Engineering Implementation and Testing phases. Troubleshooting is the process of finding where the cause of a problem is, and Debugging is the process of correcting the problem. Troubleshooting and Debugging are often necessary after a V&V audit which indicated that a problem exists.

Modernization

It is often necessary or desirable to modernize or refurbish a computer system. This may be necessary because the existing hardware is obsolete and cannot be repaired or expanded in a cost effective manner, or because new software cannot run on the existing hardware.

In some cases, it is possible to modernize or upgrade a system by replacing or adding only certain system components, and without disturbing the existing software. This is the case, for example, when a PC using a microprocessor chip is upgraded to a newer, more powerful member of the same product family by replacing the motherboard, or an old hard drive is replaced by a larger, faster model. Then IBM-PC compatible line of computers built around the Intel family of microprocessors are notable for the interchangeability and upgradability of their major components.

In other cases, it is necessary to change from one hardware line to another. In most cases, the software must then be modified or replaced. The process of adapting software to run on a different computer design is called "Porting" the software.

Finally, the software may need to be replaced. In some cases this may be done to migrate from a batch processing system to an on-line system, or from a command-line interface system to a graphical user-interface system. In most cases, when the software is replaced, there will also be a need to do file conversions to avoid loss of data from the old system.

Support

A good analogy can be made between the way independent computer consultants work and the way accountants work for a small business. For example, when a small business is established, there will be an initial period of intense activity, during which time the chart of accounts and the general operating procedures are set up. An analogous situation exists when a new computer system is installed and the consultant establishes the standard operating procedures for the system. After this initial period, the services of the accountant or independent computer consultant are required on a periodic basis to perform support functions. In the case of an accountant, these support functions include adding new accounts from time to time, and participating in quarterly reports and year-end closing of the books. In the case of the independent computer consultant, these support functions include doing on-site program and hardware maintenance, and back-ups.

Independent Computer Consultants may provide support in a variety of ways. In some cases, like lawyers, they may provide telephone consultation for a fixed retainer fee or for an hourly rate. However, they may also provide services via electronic mail (for client questions) or be able to dial into the client's computer via a modem to carry out some support functions.

Finally, Independent Computer Consultants may be called on to assist in disaster recovery after some accident or mishap has caused the loss of data. Such disaster recovery efforts are most effective if appropriate disaster planning controls are already in place. If effective disaster planning is practiced, there will be no "disasters," only "nuisances".

Other Services

Other tasks that may be done by an independent computer consultant include proposal writing, contract negotiation, mediation and dispute resolution, acting as an expert witness, and assisting in procurement.

Qualifications

Prior to retaining the services of an independent computer consultant, most clients will want to carefully evaluate the qualifications of the consultant. References from previous clients are valuable in determining whether past work was correctly performed, on time, within budget, and without interpersonal difficulties. In addition, prospective clients should be aware of certification programs such as the Institute for Certification of Computer Professionals (ICCP) and various vendors, such as the Novell Certified Network Engineer.

To qualify for certification by the ICCP, a candidate must demonstrate professional experience in the field of computing, pass a series of exams, and subscribe to the codes of ethics, conduct, and good practice of the ICCP. Furthermore, they must participate in continuing education to maintain their certification.

Conclusion

In this article we have explored some of the unique aspects of Independent Computer Consultants that distinguish them from other kinds of service providers. It is hoped that this article will provide a firm foundation for the effective use of Independent Computer Consultants as a cost-effective solution to a variety of business problems.
Copyright © 1992
Copyright © 1995
Orville R. Weyrich, Jr. <orville@weyrich.com>
Last updated: July 08, 1997; Version: 1.8