(This story is from just a week ago, making it an instant classic!)
When I was very young, toddler young, my uncle and my grandfather crafted a set of wooden toy blocks for me and my sister to play with. We spent hours playing with these great toys. At our youngest, we enjoyed knocking down towers that our parents would build for us. Later I would spend hours in my room building and rebuilding towers, learning about balance and proportion. Eventually, we reached the stage of building towers taller than we were, a feat which required all of our collective kindergarten-grade skill. Mom has a Polaroid picture of us proudly standing next to a four-foot block tower in the basement.
This year Dad decided to build a wood block set for my nieces. Cassidy is almost 2 and Sadie is nearly 6 months. As Christmas got closer, he got a little behind and I was called in to help with the sanding. It was a touching experience to be on the other side of the wood block story. We spent several hours in the basement, him using the power saw and me using the power sander (and later, Mom using the shop vac to remove the layer of sawdust that covered everything. Eventually we completed the job and packaged them up for Christmas morning.
I was excited to see Cassidy open up the block set. I feared she might be too young to appreciate it that morning, but I knew she'd eventually have the same fun I did. We gave her the block set after all of the other presents were opened. She looked at the set with wide eyes, as if examining the possibilities. She joyfully grabbed a couple of pieces and shook them. Then Dad showed her what else she could do with the blocks. He built a small tower for her. You could see the idea form in her face, starting with her eyes, then her little laugh. She gleefully knocked the tower over!
And so the circle continues.
HAI CAN HAS STDIO? VISIBLE "HAI WORLD!" KTHXBYE
Last night we squared off against #1 seed FC DTWC (Football Club, Don't Think Why Can't). Given that they had not played in three weeks, due to rainout, Thanksgiving, and a bye week, I was hoping for some rust on their part. I definitely did not get my wish!
FC DTWC only scored once in the first half, despite controlling most of the tempo and winning most of the loose balls. We came out of halftime with a little more energy, culminating in a breakaway attempt by Lawrance that was impressively saved. They came right back with an impressive shot of their own, which I barely managed to kick save, also barely averting a muscle pull!
Soon things went according to seed. Late in the half we gave up two goals, for a 3-0 final margin.
All in all, it was a season of great fun. We were competitive in nearly every game and managed to give our nemesis two nailbiter games in the regular season. Let's hope we continue to improve next year!
This year my wife decided to make multi-colored Christmas light strands by changing the individual light bulbs on solid-colored strands. The task seemed simple, if tedious, enough:
We followed this process, and after an hour we were ready for step 4. Veteran Christmas decorators know what happened next.
Two bad strands.
Christmas light bulbs are wired in series, meaning that one bad bulb will prevent the strand from lighting. For one more hour, we worked up and down the faulty light strands, looking for the bad bulb. We checked each bulb for a tight fit. Then we pulled each bulb out, furiously examining the connections, occasionally tweaking them. Every time we'd test the strand, we did not see any lights. Finally, we were able to fix all the strands. In total, we spent two stressful hours to create three multi-colored strands.
That night I laid in bed thinking about our experience. When we started, I felt great! We had an efficient plan. We would do the jobs in batches: finish one task (pulling out lights) before moving onto the next (putting in new lights). With no task-switching, it felt like we'd get done in no time. Unwittingly, we had followed the waterfall process of doing Christmas lights.
Our downfall, and the waterfall's downfall, was not knowing where we introduced the errors. In that second hour, testing the lights like crazy but never certain that we were making things better instead of worse. In both hours, we were so busy that our perceived productivity was high, but our actual productivity does not. We did not introduce any testing until the end, like a software team that does not test until development is done.
I realized an agile, test-driven development process would be the way to go. We would introduce regular testing into our process. Instead of time-boxed iterations we used lightbulb-boxed iterations. On the next set of strands, we stopped and tested each of the strands every three bulbs. While we had a lot of task-switching, we also had a high degree of certainty. Each test, either the whole strip worked, or one of the last two changed bulbs was faulty. Progress was slow but steady. We finished and had three working strips in 90 minutes.
In the waterfall process of Christmas lights, we sped through the bulb changing (development) but got hung up in test. With the agile approach, our bulb changing (development) time increased 50% but the final test was a breeze. In each case, we made the same total number of mistakes, but in the agile approach we caught and corrected them faster.
Test-driven development is a powerful concept. In the past several months, it has made me a better software developer. My wife's Christmas lights showed me how powerful agile techniques are outside the compiler.
In college I had a job doing tech support for students in the dorms. It was a good job: part-time, respectable pay, the opportunity to meet lots of people, and the occasional "wow" story. This posting is about one of those stories.
I received a call that a student was having trouble with her printer. The ink printed onto the paper just fine, but the paper came out wrinkled and mashed up. I went out to her dorm room and examined the situation. The paper loaded into the printer was fine, the print tray looked fine. I opened the lid on the printer, squinting to see any potential problems -- nothing. Then I looked into the paper output in the back of the printer, still not seeing anything. On a hunch I held the printer upside-down and gave it a soft shake. Out fell several small pieces of a Pop-Tart.
Problem solved, I thought! I set the printer back where it belonged, and noticed a box of Pop-Tarts on the shelf immediately above the printer. After printing a test page, I explained to the student what had happened, and how she might not want to have her Pop-Tarts directly over her printer. She laughed, thanked me, and I went on my way. When I returned to the office, I regaled the other techs with my tale.
After that call, I started taking on other printer-related calls, specifically grabbing them from the stack of call tickets. About a month later, there was another ticket about a printer that printed fine but wrinkled all the paper. Hey, I've done this kind of call before, give me that one! I went to the student's room and looked at the printer. I thought I saw something in the back of the printer at the paper output. As I went to shake the printer upside down, my eyes drifted upward and saw a box of Pop-Tarts. I turned to the girl and said "That's funny, I had a call just like this a month ago." She formed a sheepish smile and I realized "Hey -- it was you!"