September 12th, 2003


Refactoring: How old systems get renewed...

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
- Martin Fowler in Refactoring: Improving the Design of Existing Code

This is cool stuff. As long as I've been a software engineer, it's been assumed that software designs die off quickly. My ten-year-old system is seen as a dinosaur that is better off dead, and perhaps rightfully so, so much stuff has been hacked into it to fit the new requirements we've been given. A software system can't change as quickly or as easily as the real world it's supposed to emulate, and even the best started design can't take into account all the changes that marketing, users, and even the developers themselves want to incorporate into it. It goes with the assumption that all good software starts with a good design, which is then implemented into code.

This book presents the tools with which one can redesign an existing system, given new requirements, and make it not only 'just work' with the new requirements (otherwise known as "the hack") but makes the design and structure of the system fit the additional code. It can even take badly design code and make a happier future for the designers that have to work on it. That's where it's so cool. I can't believe how many times I've heard about old systems that were quickly cobbled together and how terrible they are to work on. Usually that signals a time for the old code to 'die' and a new replacement be written from scratch, which is then followed by much screaming and tears from end users who have to learn a whole new system or have some favorite functionality that now either works entirely differently or doesn't do what it used to do.

With the tools in this book, it's now possible to just keep evolving and make the evolved code cleaner than it used to be. Yowza.
  • Current Mood
    crazy crazy


This morning Jet and I had another big fight getting him into the car to go to Joan's. He was kicking and screaming and tears were running down his face. It was just pure force that got him into his chair. John came out and helped me strap Jet in. On the drive over, Jet started muttering, "No want bye-byes, no want bye-byes."

Halfway through the ride, he did a two-year-old switch and started grumbling, "Want bye-bye. Want bye-bye."

I repeated a lot of the things he said back to him to answers of "Uh huh! Yeah!" Which seemed to calm him down as he was being heard, at least. And by the time we got there he was sad, but not fighting it all. He did, however, want me to carry him in, and wrestling him, his car seat, and the diaper bag was kind of tricky. It got significantly better when he let me strap his car seat into Joan's car, first, and then get carried in.

He wrapped himself around my leg as Alex came over to greet him and tell him that he was going to the bus stop. Jet hung onto my pant leg as Haley came tumbling, half naked, into the livingroom to roll somersaults and giggle at Jet, her mom, and the TV. Roley Poley Ollie was on the TV with ladybugs and flowers and his dog's head stuck in a fishbowl. All of which Jet took in while staying firmly wrapped around my leg.

Joan and I talked a bit about stuff. Allergies, Doc the horse, and the weather. Haley danced and played. Alex got all his stuff together and put on his shoes.

Jet's grip shifted. He looked up at me and gave me his shyer smile, "Bye-bye." he said.

"Bye-bye okay?" I asked.

He nodded, "Bye-bye." He let go of my leg and giggled when Haley tackled him. He wrestled cheerfully back and waved to me as I waved to everyone else and left.
  • Current Mood
    contemplative contemplative