Session 20
Extreme Questions and Answers
810:171
Software Systems
Exercise 29: Improving the Textbook
Goals
- To understand better the principles of direct manipulation.
Tasks
Work in same teams as you did for
Exercise 28.
Shneiderman opens Chapter 7 with this sentence: "When designers cannot
create appropriate direct manipulation strategies, menu selection and
form fill-in are attractive alternatives."
Okay. When exactly is that? So I thumb back through Chapter 6, and
forward through Chapter 7, looking for a section titled "When Designers
Cannot Use Direct Manipulation Effectively", or some such. No luck.
I guess I'll send e-mail to the author and ask him to fix this problem
in his fourth edition.
In the meantime, what am I to do? Why, I'll ask my bright and eager
171 students to help me out! As a team, draft an outline for the missing
section. Your section may consist primarily of a bullet list of points,
but you should provide some introductory and summary text for the section,
too. And the bullet list should have some real "meat" to it, too. Oh,
and tell me where you'd place your new section, either in Chapter 6 or
Chapter 7. A page number should suffice.
Results
- Your group submits its new section in writing.
- We discuss the limits of direct manipulation interfaces.
Summary of Exercise 29
First of all, what does Shneiderman mean when he says "When designers
cannot create appropriate direct manipulation strategies..."?
Should we take him literally?
We shouldn't take Shneiderman's use of "cannot" out of context--notice
that he uses it conjunction with "appropriate". So, what he
really means is, "What happens when we don't think direct manipulation
is the best approach?". Design is almost always a matter of choices made
along a continuum. We could always force ourselves down the continuum to
some absurd DM metaphor.
And that means it's even more important to have some concrete
guidance on how to recognize when the big crossover from good uses to bad
uses happens--and why!
Shneiderman already has a couple of sections that might satisfy my needs:
- Section 6.3.1 (pp. 204-205)
- Box 6.1 (page 229)
Are these sections enough? If not, why not? My claim: these sections
may be useful summaries, but they do not provide readers with enough
concrete guidance for knowing when a direct manipulation interface is
a bad idea.
Here are some suggestions that students make:
- task-related reasons not to use DM
- when the task is primarily data entry
- when the task consists of a sequence of many actions,
individually specified (Here, a DM metaphor may become bloated
with the need for too many affordances.)
- conceptual reasons not to use DM
- when a DM metaphor detracts from the usability of the system
- when all of the affordances in the DM metaphor are ambiguous,
blur the meanings of the actions, or otherwise confuse users
- when there is no natural visual metaphor (What does that mean,
though? Spreadsheets and word processors can have direct
manipulation interfaces...)
- practical reasons not to use DM
- when the cost of developing a DM interface is too high
(How do we know the cost is "too high"?)
- when you have reason to believe that future implementations
will not have sufficient hardware, processing speed, or
bandwidth to support a DM interface... Once a user has been
"spoiled" by a good DM interface, they sometimes have a hard
time going back to something else!
Where would you put this new section? Common answers are at the end of
Chapter 6, the beginning of Chapter 7, and near the front of Chapter 6.
How can we tell which is best? (Writing a book is hard!)
Exercise 30: Are You Gonna Get Extreme?
Goals
- To explore the idea of extreme programming as a lightweight methodology
for developing software systems.
- To consider the relative need for high-level structure in a software
development process.
Tasks
Work in teams of three or four people based on assignment in class.
- Why do they call it "extreme programming"?
- Suppose that your boss has asked your group to brief her on extreme
programming (XP), which she heard about from a colleague. Prepare a brief
of one page or less that gets the idea across to her as clearly as
possible. Use as little XP and CS jargon as possible.
- Compare and contrast XP with LUCID. What are the most important
similarities and the most important differences?
- As a group, construct a list of the things that you like about extreme
programming (XP practices that you favor in building software) and a
list of things that you dislike about extreme programming (XP practices
that you think are a bad idea). Give a rationale for each of your
preferences.
Results
- Your group submits its brief and preferences.
- We discuss as a class whether XP (1) is really cool and is the wave of
the future, (2) is really silly and is short-term fad, or (3) is something
else.
Summary of Exercise 30
What does the "extreme" in "extreme programming" mean?
- living on the edge...
- software development based on experience and reaction
- extreme in that you begin programming right away
- extreme in the lifecycle: rapid iterations of analysis, design,
implementation, and testing
What are the important points in a jargon-free description of XP?
- aggressive
- focus on the program, not on the surroundings (e.g., design documents)
- very short turnaround time in the lifecycle
- heavy focus on testing to ensure quality, in place of design upfront
- take advantage of changes in software tools and practice... much of
software engineering is predicated on the idea that the cost of
change (in design and implementation) is high, but modern languages
and tools make this less true
What do you like?
- Ask The Code
- Do The Simplest Thing That Could Possibly Work
- Refactor Mercilessly
- Pair Programming
- Unit Testing
What do you dislike? No one would actually say, since y'all seemed to
not want to disagree with me--even though you don't really know what
I think about this yet. :-) Here is what passed for criticism:
- This probably works well with very experienced developers, but
it may not work well with novices...
Eugene Wallingford ====
wallingf@cs.uni.edu ====
March 22, 2001