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