Session 7

TDD Exploration for the Project

Agile Software Development

Follow Up on Reading

... Ward Cunningham on the debt metaphor.

... Jason Fried on No Functional Spec.

Toward a Syllabus

This is how we will assign grades:

Grades for the group project will be based in part on contribution to the code base, use of the XP practices we learn, and peer evaluation.

Exploratory Programming on the Project

We discussed the one-page story you were asked to write. I read Nate's, which most closely reflects what I would write. I will post mine on the course wiki.

We discussed the project requirements and stories more. The ended up thinking that starting with a single general journal for all transactions would simpler for the team, and I as customer agreed. So we adjusted our thinking and our stories.

We paired up, took a simple story, wrote a test, and wrote code. The story:

Record a check written for cash in the amount of $100.

Some pairs started working on a second story; others tried to forge ahead even further. By writing even one test, the team learned some new things about the system to be built. For example,

The first two lessons are are about the domain. The last is about software design. Both kinds of lesson are good ones for a young team to to learn, or be reminded of, while building this system.

We took a second story:

Record receipt of a $200 paycheck, with $100 going to my checking account, $20 to my prepaid medical expense account, and $80 to income tax withholding.

Again the team learned something: A transaction must may consist of multiple debits or credits. This also means that a transaction must be able to record multiple amounts (unlike in the first story), because several debits may total up to the value of single credit.

Each little bit of learning helps us to grow the design of our system, from something perhaps as simple as a string to a simple collection (say, a Ruby array) of string/number pairs.

Wrap Up

Eugene Wallingford ..... ..... May 18, 2010