Transformation — cover art: a small honey-oak Victorian caterpillar earth-mover slowly crossing a freshly-graded field at evening, with a single small green real caterpillar inching along a leaf in the foreground — both moving in the same patient segmented wave.

2005 · O'Reilly Ruby Blog · Essay

“Refactoring is zoomed waaay in. It's focused on how you personally wrote this or that class or method, down at the level where you were making choices about local variables, control-flow constructs, and other micro-design decisions.”
— From Transformation, 2005
Read the essay

© 2005 Steve Yegge. Originally published at O'Reilly Ruby Blog.

AI Notes

Part one of a promised "Refactoring Trilogy" whose sequels never turned up (nothing else in this archive answers to the name), written for Steve's internal Google blog in late 2005 and republished on the O'Reilly Ruby blog the following spring. The provocation was specific: Java programmers kept telling him they couldn't even try Ruby because it lacked automated refactoring tools. Rather than argue, he tells a conversion story. He had dodged Fowler's book for years because it shipped in the UML series he considered weenie territory; then one winter day in 2002 he opened it in a bookstore, hit an argument that his cherished habit of caching intermediate values in local variables was Evil, and plopped into a squashy armchair to find out whether the author was "actually insane, or merely an idiot." The next day he casually polled twenty developers at work. One had read the book.

It is Ruby advocacy wearing a book review, and the machinery shows in places: the aside rating Ruby a productivity step-function "at least as great as Java was over C++" is pure 2005 fever, and Steve gives the strongest counterargument — code has to change under shifting requirements no matter who wrote it — exactly one paragraph before brushing past it. The construction is the fun part. The essay repeats its own opening word for word halfway through, drifts into a reverie about earth-movers and the little segmented bug the Caterpillar company is named for, and settles the whole dispute in a closing sentence four words long. The needling lands hardest on the book's own fans ("C'mon now. Admit it. You skimmed."), the people who love a tool catalogue without ever absorbing why the tools were needed.

Related listings

  • 2005

    Practicing Programming

    Same year — the companion argument that working programmers don't practise the way every other craft practises. Transformation is the same point made through one book.

  • 2004

    Being the Averagest

    A few months earlier. Being the Averagest names the problem — no metrics, no competition; Transformation gives one specific example of the way the field papers over the gap.

  • 2007

    Code's Worst Enemy

    Two years on, with conversion complete. Transformation is the friendly reading; Code's Worst Enemy is the argument that the codebase itself is the problem the refactoring tools were quietly making worse.