Advertisment

Quest For Professional Excellence

author-image
DQI Bureau
New Update

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.

Advertisment

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.

Advertisment

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.

Advertisment

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.

Advertisment

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.

Advertisment