Footnotes

Pre-Requisite Introduction

1 Don’t Panic.

2 A technical term of unknown origins.

3 Easycoder was the assembler for the Honeywell H200 computer, which was similar to Autocoder for the IBM 1401 computer.

Chapter 1

1 Hopefully he has a good Errors and Omissions policy!

2 [PPP2001]

Chapter 2

1 Like Foghorn Leghorn: “I always keep my feathers numbered for just such an emergency.”

2 http://raptureinvenice.com/?p=63

3 With the possible exception of John’s direct employer, though I’d bet they lost too.

Chapter 3

1 Not that the patent was worth any money to me. I had sold it to Teradyne for $1, as per my employment contract (and I didn’t get the dollar).

Chapter 4

1 [Martin09]

2 [Martin03]

3 I don’t know of any discipline that is as effective as TDD, but perhaps you do.

4 There’s much more about this in the Estimation chapter.

5 See Chapter 7, “Acceptance Testing.”

6 This is far more true of men than women. I had a wonderful conversation with @desi (Desi McAdam, founder of DevChix) about what motivates women programmers. I told her that when I got a program working, it was like slaying the great beast. She told me that for her and other women she had spoken to, the act of writing code was an act of nurturing creation.

Chapter 5

1 From my vantage point at the time a kid is anyone younger than 35. During my twenties I spent a significant amount of time writing silly little games in interpreted languages. I wrote space war games, adventure games, horse race games, snake games, gambling games, you name it.

2 http://fitnesse.org

3 Ninety percent is a minimum. The number is actually larger than that. The exact amount is hard to calculate because the coverage tools can’t see code that runs in external processes or in catch blocks.

4 http://www.objectmentor.com/omSolutions/agile_customers.html

5 [Maximilien], [George2003], [Janzen2005], [Nagappan2008]

Chapter 6

1 The fact that some programmers do wait for builds is tragic and indicative of carelessness. In today’s world build times should be measured in seconds, not minutes, and certainly not hours.

2 This is a technique that Rich Hickey calls HDD, or Hammock-Driven Development.

3 This has become a very popular kata, and a Google search will find many instances of it. The original is here: http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata.

4 We use the “Pragmatic” prefix to disambiguate him from “Big” Dave Thomas from OTI.

5 http://codekata.pragprog.com

6 http://codingdojo.org/

7 http://katas.softwarecraftsmanship.org/?p=71

8 http://c2.com/cgi/wiki?PairProgrammingPingPongPattern

Chapter 7

1 XP Immersion 3, May, 2000. http://c2.com/cgi/wiki?TomsTalkAtXpImmersionThree

Chapter 8

1 http://www.satisfice.com/articles/what_is_et.shtml

2 [COHN09] pp. 311–312

Chapter 9

1 Manna is a common commodity in fantasy and role-playing games like Dungeons & Dragons. Every player has a certain amount of manna, which is a magical substance expended whenever a player casts a magical spell. The more potent the spell, the more of that player’s manna is consumed. Manna recharges at a slow, fixed daily rate. So it’s easy to use it all up in a few spell-casting sessions.

2 http://www.pomodorotechnique.com/

Chapter 10

1 Murphy’s Law holds that if anything can go wrong, it will go wrong.

2 The precise number for a normal distribution is 1:769, or 0.13%, or 3 sigma. Odds of one in a thousand are probably safe.

3 PERT presumes that this approximates a beta distribution. This makes sense since the minimum duration for a task is often much more certain than the maximum. [McConnell2006] Fig. 1-3.

4 If you don’t know what a standard deviation is, you should find a good summary of probability and statistics. The concept is not hard to understand, and it will serve you very well.

5 [Boehm81]

6 [Grenning2002]

7 http://store.mountaingoatsoftware.com/products/planning-poker-cards

8 http://en.wikipedia.org/wiki/Law_of_large_numbers

Chapter 12

1 A reference to the last word in the movie Soylent Green.

Chapter 13

1 [RCM2003] pp. 20–22; [COHN2006] Look in the index for many excellent references to velocity.

Chapter 14

1 There are many web sites that offer simulators of this stimulating little computer.

2 I still have this manual. It holds a place of honor on one of my bookshelves.

Appendix A

1 These tapes could only be moved in one direction. So when there was a read error, there was no way for the tape drive to back up and read again. You had to stop what you were doing, send the tape back to the load point, and then start again. This happened two or three times per day. Write errors were also very common, and the drive had no way to detect them. So we always wrote the tapes in pairs and then checked the pairs when we were done. If one of the tapes was bad we immediately made a copy. If both were bad, which was very infrequent, we started the whole operation over. That was what life was like in the ’70s.

2 http://en.wikipedia.org/wiki/ASR-33_Teletype

3 Rubout characters were very useful for editing paper tapes. By convention, rubout characters were ignored. Their code, 0×FF, meant that every hole on that row of the tape was punched. This meant that any character could be converted to a rubout by overpunching it. Therefore, if you made a mistake while typing your program you could backspace the punch and hit rubout, then continue typing.