CS 458 - Week 3 Lecture 1 - 2017-09-05

*   focusing on the variety of Agile methodology
    called Extreme Programming

*   project starts with short user stories, <-- the list of user stories
                                                CHANGES throughout project
    *   also help create empathy between user and developer;

    *   an XP attitude: extreme customer involvement

*   an operational, deliverable product results from
        each short iteration;

    (the client then can use that iteration,
    get a better idea of what user stories
    they hope will be implemented next,
    maybe which they no longer want,
    maybe additional ones they'd like added...)

*   during the iteration...
    *   development is done by pairs, using pair programming
    *   test-infected development
        *   unit tests are written BEFORE the code is written
        *   acceptance tests are also written BEFORE the code is
	    written
        *   code is not (supposed) to be added to the iteration
	    unless it passes all unit tests
    *   frequent or even continuous integration
    *   simple designs ("do the simplest thing that could possibly work")
        that are REFACTORED as needed

	*   refactoring: changing WORKING code to "improve" it in
	    some way

	    (contrast this with "debugging" - changing code that
	    has exhibited a FAILURE, seeking to remove one or
	    more FAULTS, or bugs, in that code)

    *   the XP practices are meant to be SYNERGISTIC,
        stronger when used together;

*   some more XP philosophy:
    *   must have rapid system development
    *   must have extreme customer involvement
    *   must be extreme in avoiding defects
    *   must not be afraid to change code -- "embrace change"
    *   must have extreme involvement of coders -- everyone "owns"
        ALL of the code (shared code ownership)
        *   did I mention coding standards, also?
    *   must be extremely respectful of people and their
        personal, social, and psychological needs (!)
    *   YAGNI - "You Aren't Going to Need It"
        *   jargon that accompanies the goal of simple design
   
*   some more practices considered to be under the XP banner:
    *   40-hour work week
    *   pair-programming
    *   short iterations
    *   coding standards
    *   test-infected development
    *   stand-up meeting
    *   refactoring
    *   collective code ownership
    *   continuous integration
    *   simple design
    *   the planning game
    *   choose 2 of these 3:
        fast, cheap, or good
    *   on-site customer
    *   system metaphor
    *   spike solutions

...more discussion of these,
   esp. user stories,
   on Thursday;