Archive for April, 1998
They’re just rules!
Alistair Cockburn and Kent and I have been chatting via email concerning the eXtreme Programming methodology, and a family of lightweight methods that Alistair is formulating. As part of getting to know each other, we have been accusing the…
The Four Variables
Scope, Quality, Resources, Time
Projects are often given to developers in terms like these: “Take these four people, and get back here in three months with a perfect program”. The developers ask “What does it have to do,” and are…
Unit Tests
Each class must have unit tests. Every class’s unit tests must score 100%. On C3, we use Kent Beck’s public domain testing framework, augmented with a GUI that runs all the tests and shows the percent correct. At…
Do the simplest thing that could possibly work
The most important rule in our development is always to do the simplest thing that could possibly work. Not the most stupid thing, not something that clearly can’t work. But simplicity is the most important contributor to the ability to…
Pair Programming
All significant development is done in pairs. We have found that progress is faster, we can work longer without losing headway, and quality is higher. Typically the person types who has the best feel for where the code is going.…
Code Ownership
We do not practice code ownership. When the classes for some feature are first developed, only one team will typically work on them, during the one iteration it takes to develop them initially.
freely. Because we release frequently, there are…
You’re NOT gonna need it!
Often you will be building some class and you’ll hear yourself saying “We’re going to need…”.
Resist that impulse, every time. Always implement things when you actually need them, never when you just foresee that you need them. Here’s why:…
Let Smalltalk Tell You
Here’s another guideline that is very easy to forget, but very important. The general notion is that Smalltalk is very good at incrementally changing things, breakpointing, and checking values. Instead of wasting time thinking about what to do, or theorizing…














