Adapting Extreme Programming for a Core Software Engineering Course

Author(s): Dr. Laurie Williams and Anuja Shukla
Venue: Proceedings. 15th Conference on Software Engineering Education and Training
Date: 25-27 Feb. 2002

Sample Size: 150


Adapting Extreme Programming for a Core Software Engineering Course examines how senior-level undergraduate students react to and perform using extreme programming methodologies. A 16-week semester course was taught at North Carolina State University in which students used all 12 of the practices that fall under the category of “Extreme Programming.” The course consisted of four java programs which exercised specific extreme programming practices in detail, and a final project done by a team of four students. The purpose of this study was to determine if extreme programming could benefit students in learning software engineering material, which would provide a foundation for better software engineering practices in the future, and would result in better quality of code and more productive software engineers.

Students had varying levels of success with extreme programming throughout the class. Some barriers included transitioning to systems where code was jointly owned (Collective Code Ownership), forming new habits to simplify code when possible (Simple Design), conforming to coding standards, and adjusting to short release iterations. Many students were empowered by paired programming as well, but a few were not. Among the more popular practices were Collective Code Ownership (94% tried & liked it, and completed their projects), Simple Design (97% tried & liked it, and completed their projects), Testing (86% tried & liked it, and completed their projects) and adopting Coding Standards (94% tried & liked it, and completed their projects). Among the least used were Metaphor and Refactoring methods. Additionally, having an “onsite” customer ranked highest in dislike, at 8%.

Overall, students felt that extreme programming was appropriate for small projects and small teams, such as the projects required in the course. Many students even preferred extreme programming over the more traditional practices of CSP (Collaborative Software ProcessSM), as success rates for project completion were very high using extreme programming methods. Students also felt that many of the “popular” methods gave them more comfort and confidence in their programming abilities. However, statistical data from the same course being taught with non extreme programming methods was not presented in this paper, so the validity of productivity claims increasing (based on how successful students were) is somewhat questionable without comparison. The quality of code produced using extreme programming was not discussed.

In light of productivity seeming to increase, the authors of the paper do not advise teaching only extreme programming methodologies to upcoming software engineers. The authors assert that there are time-tested skills and techniques, such as inspections, use case formulation, and UML, that need be taught at some point in a software engineering curriculum. If students only learn agile methods and extreme programming, these time-tested techniques may effectively be “skipped.” Instead, the authors promote a hybrid process of extreme programming with aspects of more “traditional” methods, especially for projects that span only short periods of time.