Skip to main content

Being Extreme in the classroom: Experiences teaching XP

Abstract

Agile Methods propose a new way of looking at software development that questions many of the beliefs of conventional Software Engineering. Agile methods such as Extreme Programming (XP) have been very effective in producing high-quality software in real-world projects with strict time constraints.

Nevertheless, most university courses and industrial training programs are still based on old-style heavyweight methods. This article, based on our experiences teaching XP in academic and industrial environments, presents effective ways of teaching students and professionals on how to develop high-quality software following the principles of agile software development. We also discuss related work in the area, describe real-world cases, and discuss open problems not yet resolved.

References

  1. [1]

    Johan Andersson, Geoff Bache, and Peter Sutton. XP with acceptance-test driven development: A rewrite project for a resource optimization system. InProceedings of the 4th International Conference on eXtreme Programming and Agile Processes in Software Engineering (XP 2003), volume 2675 ofLecture Notes on Computer Science, pages 180–188, 2003.

  2. [2]

    Gary H. Anthes. Sabre takes extreme measures. Computer World, see www.computerworld.com/softwaretopics/ software/story/0,10801,91646,00.html, March 2004.

  3. ][3]

    O. Astrachan, R. Duvall, and E. Wallingford. Bringing extreme programming to the classroom. InProceedings of XP Universe 2001, Raleigh, NC, USA, 2001.

  4. [4]

    Kent Beck.Extreme Programming Explained: Embrace Change. Addison-Wesley, 1999.

  5. [5]

    Kent Beck. The metaphor metaphor. Keynote speech—ACM OOPSLA’02, November 2002.

  6. [6]

    Kent Beck.Test-Driven Development: By Example. Addison-Wesley, 2002.

  7. [7]

    Kent Beck et al. Manifesto for Agile Software Development. Home page: http:// agilemanifesto.org, 2001.

  8. [8]

    Piergiuliano Bossi. eXtreme Programming applied: a case in the private banking domain. InProceedings of OOP, Munich, 2003. Available at www.quinary.com/pagine/downloads/ files/Resources/OOP2003Paper.pdf.

  9. [9]

    A. Cockburn and L. Williams. The costs and benefits of pair programming. InProceedings of the First International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2000), Cagliari, Sardinia, Italy, June 2000.

  10. [10]

    Alistair Cockburn.Agile Software Development. Addison-Wesley Longman, 2002.

  11. [11]

    Ron Crocker.Large-Scale Agile Software Development. Addison-Wesley, 2004.

  12. [12]

    Martin Fowler.Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.

  13. [13]

    Andrew M. Fuqua and John M. Hammer. Embracing change: An XP experience report. InProceedings of the 4th International Conference on eXtreme Programming and Agile Processes in Software Engineering (XP 2003), volume 2675 ofLecture Notes on Computer Science, pages 298–306, 2003.

  14. [14]

    Orit Hazzan, Joe Bergin, James Caristi, Yael Dubinsky, and Laurie Williams. Teaching software development methods: The case of Extreme Programming. InPanel at the 35th Technical Symposium on Computer Science Education (SIGCSE’2004), Norfolk, Virginia, USA, 2004. ACM. db.grinnell.edu/sigcse/sigcse2004/ viewAcceptedSession.asp?sessionType=SpecialSession&sessionNumber=28.

  15. [15]

    Donald Howard. Swimming around the waterfall: Introducing and using agile devel. InProceedings of the 4th International Conference on eXtreme Programming and Agile Processes in Software Engineering (XP 2003), volume 2675 ofLecture Note in Computer Science, pages 138–145, 2003.

  16. [16]

    P. Lappo. No pain, no XP: observations on teaching and mentoring extreme programming to university students. InProcedings of the 3rd International Conference on eXtreme Programming and Agile Processes in Software Engineering (XP2002), Cagliari, Italy, 2002.

  17. [17]

    Jim Little. Ats diary. C2 wiki site, see c2.com/ cgi/wiki?AtsDiary, 2000.

  18. [18]

    Kim Man Lui and Keith C.C. Chan. Test driven development and software process improvement in china. InProceedings of the 5th International Conference on eXtreme Programming and Agile Processes in Software Engineering (XP 2004), volume 3092 ofLecture Notes on Computer Science, pages 219–222, 2004.

  19. [19]

    Katiuscia Mannaro, Marco Melis, and Michele Marchesi. Empirical analysis on the satisfaction of it employees comparing xp practices with other software development methodologies. InProceedings of the 4th International Conference on eXtreme Programming and Agile Processes in Software Engineering (XP 2003), volume 2675 ofLecture Notes on Computer Science, pages 166–174, 2003.

  20. [20]

    K. Maruyama and K. Shima. Automatic method refactoring using weighted dependence graphs. InProceedings of the 21st international conference on Software engineering, pages 236–245. IEEE Computer Society Press, 1999.

  21. [21]

    P. McBreen.Questioning Extreme Programming. Addison Wesley, 2003.

  22. [22]

    Atif M. Memon.A Comprehensive Framework for Testing Graphical User Interfaces. PhD thesis, University of Pittsburgh, July 2001.

  23. [23]

    Atif M. Memon. GUI testing: Pitfalls and process.IEEE Computer, 35(8):90–91, August 2002.

    Google Scholar 

  24. [24]

    Roger A. Mller. Extreme Programming in a university project. InProceedings of the 5th International Conference on eXtreme Programming and Agile Processes in Software Engineering (XP 2004), volume 3092 ofLecture Notes on Computer Science, pages 312–315, 2004.

  25. [25]

    N. Nagappan, L. Williams, E. Wiebe, C. Miller, S. Balik, M. Ferzli, and M. Petlick. Pair learning: With an eye toward future success. InExtreme Programming and Agile Methods—XP/Agile Universe 2003, volume 2753 / 2003 ofLecture Notes in Computer Science, pages 185–198. Springer-Verlag Heidelberg, September 2003.

    Google Scholar 

  26. [26]

    Joseph Pelrine. Modelling infection scenarios—a fixed-price eXtreme programming success story. InACM OOPSLA Companion Proceedings, pages 23–24. ACM Press, 2000.

  27. [27]

    Ken Schwaber and Mike Beedle.Agile Software Development with SCRUM. Prentice Hall, 2001.

  28. [28]

    M. Stephens and D. Rosenberg.Extreme Programming Refactored: The Case Against XP. Apress, 2003.

  29. [29]

    C. Taber and M. Fowler. An iteration in the life on an XP project.Cutter IT journal, 13(11), November 2000. Updated eletronic version: http://www.martinfowler. com/articles/planningXpIteration.html.

  30. [30]

    James E. Tomayko. A comparison of pair programming to inspections for software defect reduction.Computer Science Education, 12(3):213–222, 2002.

    Article  Google Scholar 

  31. [31]

    I. Tomek. What i learned teaching XP. InProceedings of the ACM OOPSLA Educators Symposium, pages 39–46, Seattle, Washington, USA, November 2002.

  32. [32]

    L. Williams and R. Kessler.Pair Programming Illuminated. Addison-Wesley, 2002.

  33. [33]

    L. A. Williams and R. R. Kessler. All I really need to know about pair programming I learned in kindergarten.Communications of the ACM, 43(5):108–114, May 2000.

    Article  Google Scholar 

  34. [34]

    D. Wilson. Teaching XP: a case study. InProceedings of XP Universe 2001, Raleigh, NC, USA, 2001.

  35. [35]

    Klaus Wuestefeld. Customer Proxy and Libero. E-mail personal communication, September 2002.

Download references

Author information

Affiliations

Authors

Rights and permissions

Open Access This article is distributed under the terms of the Creative Commons Attribution 2.0 International License ( https://creativecommons.org/licenses/by/2.0 ), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Reprints and Permissions

About this article

Cite this article

Goldman, A., Kon, F., Silva, P.J.S. et al. Being Extreme in the classroom: Experiences teaching XP. J Braz Comp Soc 10, 4–20 (2004). https://doi.org/10.1007/BF03192356

Download citation

Keywords

  • Unit Test
  • User Story
  • Agile Method
  • Pair Programming
  • Agile Software Development