The Missing
Element
(Evolution Of
Programming Methodology, Part II, Page 2)
By Bill Nicholls
March 27,
2000
In
a Unix class system, programming power comes from the
ability to select from all three generations of tools and
string them together to accomplish a task in the most
expeditious manner.
This capability has been used since early days, and it is
still one of the key elements to programming power. Even
today, these tools remain isolated and non-othorogonal with
varying I/O requirements. Thus the selection and assembly
can only be done by a knowledgeable programmer. While some
of the tools are past first generation, the assembly process
is still first generation.
Here is the dilemma a programmer faces. To get good
performance, details are important and take time to get
right. Commercial software is time-to-delivery sensitive,
and this requirement conflicts with building
high-performance software. What really makes a programmer's
job difficult and slow is the wide variety of programming
techniques and skills in a typical team. This increases time
spent by team members communicating details and resolving
conflicts. Productivity is further aggravated by high
programmer turnover rates that remove the trained people
after they become most productive.
The core of the productivity problem is the level of
detailed handwork required to specify a program. Multiply
that by the need to coordinate every interaction between
components and the task grows exponentially as the program
grows. This problem also affects the other steps of
documentation, quality assurance, and training.
Some help for the programmer has arrived with the use of
concepts called Model-View-Controller (MVC), Objects and
Patterns. But the lack of a unifying structure to make these
concepts work together means that it must be done by people
doing detailed designs and lots of handwork. Even with
modern IDE, there are still too many detail decisions
required to build a program.
Why? Colleges teach computer science with only secondary
attention to the actual programming process. Since the
science people are usually interested in solving challenging
theoretical problems, the practical problem of improving
programmer productivity gets little attention.
What appears to be missing is the engineering approach in
the field of programming. An engineering approach requires a
certain level of experience and knowledge of the industry
techniques before working independently. This process is
similar to the apprentice system in older crafts.
Engineering can also be described as building on what works
regardless of whether you know why it works.
<<<Previous
Page >>>Next
Page