This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: XP in Cincom Smalltalk
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
Vassili Bykov and Joseph Pelrine on XP - it's an unscripted talk. Joseph - "Without VisualWorks, and Envy, and Gemstone, XP never would have happened. Something else might have happened, but it would have been as crappy as many other things in Java".
Joseph: What would you do differently, if your customer could only pay you for one day of software development? Especially if, by doing something different, he would be able to afford yet another day of software development? What would become important, and what would become less important?
The consultants view: The customer is healed when all of his money has been removed. To increase the quality of your code, bring these practices into your team:
Pair Programming
TDD
Refactoring
You should also have some (minimal) coding standards. A team should be able to agree on some set of them that makes code consistent across the development team. Continuous integration - always being able to have a functioning version of your project - is crucial. If it's a PITA to do a build, you'll do it less often...
This talk is more like an interactive bull session between Joseph, Vassili, and the audience. There's a lot of good humored back and forth with the audience. Jospeh and Vassili are now launching into a TDD session with VisualWorks - starting with a test for a simple application. One thing right off - his first test is a simple one that passes - and Joseph points out that this is a bad idea in general - it gives you no new information When you write new code, the test should fail (because it should precede the new code). So they walk through a simple exercise of creating a Person class, with the test driving the required code. It's all basic stuff, but it demonstrates how a pair programming, TDD session ought to run (at least, how one in front of a live audience should run :) ).
A small aside at this point about the benefits of Smalltalk - it's a real boon to have the refactoring/test tools built right into the development tools - you don't have to step out of one toolset and into another in order to get things done. To get from where you are now to TDD - take what you normally do in a workspace and slap them into a test class instead - it automates the process.
Finally, Joseph is previewing what's coming in the next rev of SUnit - TestErrors and TestFailures will be full classes, and he's added report logging (using the same format that ANT uses). "If you don't know enough to write the test, do you know enough to write the code?"