Quest For Professional Excellence

The Indian Navy has a school where fire
fighting is taught. In this school, one is asked to focus on a triangle of three elements
which sustain a fire-heat, fuel and oxygen. Thereafter, methods of fire fighting, which
are based on the removal of one of these elements, are explained, emphasizing the fact
that removal of just one of the three prime elements extinguishes the fire. It occurred to
me when I first heard about the fire triangle that the concept of focusing on three
essential elements is a universal one and may be applied to virtually any pursuit in life.
I have, with some success, applied this principle to structurally analyze problems in
diverse fields. On most occasions the solutions have emerged satisfactorily. While the
need to improve one’s lifestyle and upward mobility in a professional area of activity is
fundamental to human ambition, by training they are taught to think in a structured manner
and to analyze any problem through either the top-down approach or through the bottom-up
method. It is the value of structured thinking that is sought to be emphasized in this
article through an illustration of an approach to achievement of professional excellence
by IT professionals.

Knowing software development
Before one attempts to achieve
professional excellence, a clear concept of the demands of the chosen profession must be
developed first. In the case of IT professionals, the field of activity is software
development. Applying the concept of fire triangle, could we identify an equivalent
triangle for software development? Please remember the characteristics of the
triangle-there are several aspects to software and to development, but what are the three
essential components, the removal of any one of which would render software development
meaningless?

A raging debate could well follow the
above, since on this rather wide question there can be as many opinions as there are
participants. But a significant majority of IT professionals would agree that software
development cannot commence without a user requirement. Being essentially a service
industry, harnessing information technology is an aid to better the decision-making and it
has to start with a requirement from the user. Most users, no matter how good their
communication skills are, can define their requirements to a maximum of about 70%. The
average is more like 40-50%. This means that when a program is developed to meet exactly
the defined requirements, it would fulfill the user’s actual needs to the extent of 70% at
the maximum and, on an average, 40-50%.

This usually results in an iterative
exercise of guesswork on the part of the developer and repeated modifications by the user.
Sooner or later, depending upon the skills of the developer or the extent of patience of
the user, the entire development loses relevance. This is not the fault of either the user
or the developer but is attributable to the fact that most user needs are felt through a
combination of gut sense, experience, training and intrinsic knowledge and cannot
generally be expressed or written down as a fully comprehensive user-requirement document.
Customized software, therefore, has to be developed iteratively with continual user
participation. Thus, the first essential element in our triangle becomes user-requirement
and participation.

There is generally no argument about the
second element in the triangle-technical ability of the developer to be able to convert
the user requirements into a software program. But there is a widespread difference of
opinion on the third. Of all the elements that go into a sensible definition of software
development, a significant majority would agree that the third element should be
documentation. Without the various levels of documentation, the software that is developed
is generally not usable and would therefore become meaningless. Thus we have our triangle
of the three essentials-user requirement and participation, technical ability and
documentation.

It would be useful to remember that each of
these elements could itself be analyzed into further triangles till we reach the various
logical steps to undertake the actual software development.

Improvement of technical ability
Forming a triangle for technical ability would help identify why a particular
software engineer is more sought after or is paid more or enjoys more perks in his job
than others. Again, it would be generally agreed by most people in the IT world that a
truly excellent software engineer is one who, after a brief meeting with a prospective
client or a visit to his facility, can conceive of the client’s needs and formulate a
project. He can then make a successful presentation, ‘sell’ his concept and land the
contract for development. Further, he would be capable of designing the total structure of
the project, make all the design decisions, obtain the client’s approval, form his team
and select able coordinators, break the project down into interleaved modules and assign
them to subgroups within his team. He would, all the time, be conscious of the user
acceptability of the product, both from its timeliness of delivery as well as its
capability to fulfill the client’s expectations. Above all, he would be a leader who holds
his team together and commands respect through his personal example of professional
excellence. Each team member would be convinced that if a problem were referred to him, in
all probability it would be solved quickly and elegantly, yet giving the feeling that it
was the team which solved the problem.

How, then, would one focus on three
essential elements that would describe the technical ability of such a professional? There
are endless variants to the triangle and one can formulate one’s own concept of
professional ability. This article merely seeks to exemplify the methodology of selecting
the elements of the triangle. The quality of a selection would ultimately be defined by
the measure of success achieved in the realization of the aim of developing superior
technical ability and, thus, professional excellence.

One must always remember to relate the
choice of elements in the triangle at the lower level with those in the higher echelon
triangle. For example, in the triangle for the technical ability, the elements in the
software development triangle would influence the choice of the factors. The first
element, therefore, could be sense of logic. In other words, the software engineer must
have or be able to develop in himself an ability to translate the user requirements into
logic. From here on, it would be possible to develop the business rules to which the
program must conform. Most would agree that the ability to develop logic is a good
starting point for defining technical ability in a software engineer.

It would not be far too wrong to deduce
that the next step would be that the logic developed from user requirements must be
converted into a mathematical model. The last used terminology is not meant as jargon but
has been used to stress the requirement of an understanding of the mathematical capability
of the machine used by the software engineer, so that the mathematical model developed by
him falls well within the realms of feasibility of execution. The capabilities of the
machine and resources in use by the user should be kept in mind while determining
feasibility. This element of the technical ability triangle necessitates a scientific and
mathematical bent of mind, not often seen amongst the scores of today’s IT people, who
have eschewed the science stream at school and have taken to ‘computers’ more through
fancy or a desire to improve own marketability than to achieve true software development
capability.

The third element in our triangle would be
quality optimization. This would imply that the software engineer has sufficient in-depth
knowledge of the various tools that he could use in order to convert the logic developed
into the mathematical model, into an optimum program. A definition of the term optimum at
this point would not be out of place. Most would agree that today’s quality of a program
is not judged by either time for execution or by resource occupancy, since hardware
capability has rendered these considerations irrelevant. The quality of a program is
judged by its maintainability, sustainability and its growth potential. The ability to
optimize the use of software tools with which these goals are achieved would constitute
the third element in the triangle for technical ability.

Thus, we have our sub-triangle of technical
ability-sense of logic, mathematical modeling and quality optimization. There would not be
much disagreement on these elements forming the essential attributes of a technically
superior software engineer. Conscientious and honest introspection would reveal existing
weaknesses in each of these attributes in an engineer and deliberate and logical steps
could be taken to bridge the gaps between capability and desirable ability. Achievement of
professional excellence would then be a natural corollary to the sincere software
engineer.

Bridging the gap
If we are convince that what an IT professional should aim at is the development
of the attributes of the three elements of our technical ability triangle, the next step
is: How to go about it? Companies involved with IT as their primary business activity lay
a lot of emphasis on human resource development (HRD). Training is an integral part of the
duties of the HRD departments of these companies and it may be worthwhile to introduce
creativity into the curriculum of training programs. Training institutes generally do not
pay too much attention to the development of primary attributes necessary to build up the
innovativeness of a software engineer and instead stress the learning of a language or a
newly-introduced package of software tools. While the latter is important to equip the
engineer with the ability to optimize quality, no one would disagree on the priority to
develop primary skills. These skills constitute the first two elements of our
triangle-logic and mathematical modeling.

One of the more common misconceptions among
training institutes is that learning the disciplines of a structured language such as
Pascal would automatically instill logical thinking in a software engineer. What is more
important is that the human mind has to be constantly exercised in structured thinking so
that it can evolve logic from a set of requirements. To achieve this, a structured
language like Pascal can certainly help but care must be taken to ensure that learning the
language should not be allowed to supersede the need to develop the ability to evolve
logic. Project lessons can be tailor made to fit this need and trainees would emerge with
much more confidence in their capability on completion of the course. Similarly, a logical
extension of such a lesson would be to train software engineers in developing their
mathematical skills. Any number of exercise plans is available from which the most apt
ones should be chosen that would enable the development of skills to convert a given logic
to mathematically executable modules. Instructors or the faculty could then evaluate the
projects submitted by the trainees in open sessions, with a view to optimizing quality
such that the students once again learn techniques of optimization through an intelligent
choice of software tools and methods. The only yardsticks of measurement of quality, as
stated before, are maintainability over the life-cycle, sustainability in the user
environment and growth potential without addition of excessive overheads. Companies with
their own training academies could reap immense benefits if the syllabus is creatively
modified to include these concepts.

Leave a Reply

Your email address will not be published. Required fields are marked *