Page 202 -
P. 202
Chapter 6 • agile Modeling and prototyping 169
Strategies for Improving Implementation Using Implementation Using
Efficiency in Knowledge Work Structured Methodologies Agile Methodologies
Reduce interface time and errors Adopting organizational standards Adopting pair
for coding, naming, etc.; using forms programming
Reduce process learning time and Managing when updates are released Ad hoc prototyping and
dual processing losses so the user does not have to learn and rapid development
use software at the same time
Reduce time and effort to structure Using CASE tools and diagrams; using Encouraging short
tasks and format outputs code written by other programmers releases
Reduce nonproductive expansion Managing project; establishing Limiting scope in each
of work deadlines release
Reduce data and knowledge search Using structured data gathering Allowing for an onsite
and storage time and costs techniques, such as interviews, customer
observation, sampling
Reduce communication and Separating projects into smaller Timeboxing
coordination time and costs tasks; establishing barriers
Reduce losses from human Applying filtering techniques to Sticking to a 40-hour
information overload shield analysts and programmers workweek
Figure 6.8
Systems developers also need to quickly access a program, enter the required information, and How Davis and Naumann’s
retrieve it when it is needed again. strategies for improving efficiency
Structured approaches encourage adopting standards for everything. Rules set forth include can be implemented using two
items such as “Google Chrome will be the default on office desktops for browsing rather than different development approaches.
Firefox.” They may be more detailed instructions to ensure clean data, such as “Always use M
for Male and F for Female,” thereby ensuring that analysts do not unthinkingly choose codes of
their own, such as 0 for Male and 1 for Female. These rules then become part of the data reposi-
tory. Forms are also useful, requiring all personnel to document their procedures so that another
programmer might be able to take over if necessary.
In an agile approach, forms and procedures work well too, but another element is added.
The additional practice of pair programming ensures that one programmer will check the
work of another, thereby reducing the number of errors. Pair programming means that own-
ership of the design or software itself is shared in a partnership. Both partners (typically one
a programmer, often a senior one) will say they chose a programming partner who desired
to have a quality product that is error free. Since two people work on the same design and
code, interface time is not an issue; it is an integral part of the process. Davis and Naumann
have noted that programmers are quite emotional when the topic of pair programming is
broached.
REDUCING THE PROCESS LEARNING TIME AND DUAL PROCESSING LOSSES. Analysts and
programmers learn specific techniques and software languages required for the completion of a
current project. Inefficiencies often result when some analysts and programmers already know the
products used while others still need to learn them. Unfortunately, companies often ask systems
developers to learn new applications at the same time they are using these apps to build the system.
This on-the-job training slows down the entire systems development project considerably.
A traditional, structured project requires more learning. If CASE tools were used, an analyst
may need to learn the proprietary CASE tools used in the organization. The same applies to the
use of a specific computer language. Documentation is also a concern.
Using an agile philosophy, the ability to launch projects without using CASE tools and
detailed documentation allows analysts and programmers to spend most of their time on system
development rather than on learning specific tools.
REDUCING THE TIME AND EFFORT TO STRUCTURE TASKS AND FORMAT OUTPUTS. Whenever a
project is started, a developer needs to determine the boundaries. In other words, the developers