DECEMBER 2002 JOINT MEETING
EXTREME PROGRAMMING AND AGILE DEVELOPMENT
Dennis Mancl
Lucent Technologies - Bell Labs
Extreme Programming (XP) is a lightweight software development process. It is a set of techniques designed to maximize the effectiveness of small development teams. It takes a completely different approach than traditional documentation-heavy waterfall processes. XP is highly iterative -- team members often build experimental code to try out their design ideas, instead of creating a lot of detailed design documentation before coding.
Extreme Programming depends for its success on several software development practices: developing software in very short cycles, frequent customer feedback, planning via user stories, daily integration and testing, and pair programming.
Pair programming is one of the most interesting and controversial practices in XP. At the beginning of each day, the team is divided into pairs who are assigned to specific tasks for the day. In XP, no one ever writes code as a solitary hacker -- there is always a second person who contributes design ideas and who forces the code to be clear and concise.
XP is not completely "fun and games". The XP process requires developers to follow several sound engineering practices: estimation before design, writing unit tests, and managing all code using formal change management. But XP reduces developer paperwork, and it can help developers achieve truly remarkable productivity.
In addition to "extreme", there is a growing family of software development processes that are called "agile". Agile development is an extension of the principles of XP -- listen to customers, welcome changes in requirements, deliver software frequently, and set up a development environment where individuals can work together.
This talk will demonstrate the key elements of XP and other agile methods, and it will discuss how to choose the right method for a wide variety of situations.
Dennis Mancl is a member of technical staff at Lucent Technologies - Bell Labs in Murray Hill, NJ. He has been doing mentoring and training in software technologies (C++, Java, object oriented design, use cases, iterative development) for the past 21 years.
A pre-meeting dinner with the speaker is held at 6 p.m. at the Rusty Scupper on Alexander Road in Princeton. If you would like to attend, please RSVP with an e-mail to princetonacm@acm.org.
Princeton ACM / IEEE Computer Society meeting are open to the public. Students and their parents are welcome. There is no admission charge, and refreshments are served.