Everything you do in your day-to-day life, how you approach solving even minor problems, reflects in the way you write code.
My soon to be four year old son, Charlie, has had his mind set on getting a pet fish ever since the movie Finding Nemo came out. I suppose that's been true for many. My wife and I had been reluctant to allow him to have one until we were comfortable that he was mature enough to handle the responsibility of taking care of a pet. In the mean time the little guy had been persistent, never swaying from the ultimate goal of obtaining that fish. He practiced building his own fish-tank out of Tupperware and plastic animals, and for a while he even kept up the pretense of feeding the fish every morning. Being amazed as we were of his ongoing attention span, we concluded that in fact he was ready (with supervision) to take on the challenge of a real fish.
However, now that it was looking like a strong possibility that we were actually going to purchase a fish tank, I started having some doubts. I was not entirely inexperienced with fish tanks, after all I had my own as a kid. The problem was more or less my memory of the constant noise from the pump and filter. I'm somewhat of an insomniac and generally all around light sleeper. Even little noises like distant ticking clocks drive me batty. I suppose that's how I got so good at writing code, being so practiced at being awake all night. So I was ever so hesitant that day last week when we walked into the local pet store.
Yet we were amazed to find so many different options, big tanks, little tanks, huge tanks and such a wide variety of fish. Betsy and I were in awe at the possibilities. You see, as it turns out, she always wanted to have a big ol' fish tank too. We are both scuba divers (PADI dive masters if you are nosy), and so the thought of a huge salt water tank was hard to pass up.
Luckily, the store had a 'fish' expert on hand that invested a lot of time explaining to us all the intricacies of different types of fish, different types of tank, salt versus fresh water, warm versus cold, live versus fake plants, etc. When he showed me how all the modern tanks ran silent (abating my biggest fear), we were pretty much hooked on doing the tank 'right.' Go big or stay home. If you are going to do something, do it right. Yet, our dream of a large saltwater tank was dashed as we learned of the difficulties in maintaining one. We would need to become much more experienced fish owners before we tried it. Maybe our second tank?
We narrowed our wish-list down to a 50 to 70 gallon tank (quite large), a stylish piece of tank 'furniture' (a wooden cabinet to hold the tank) some other pieces of equipment. Betsy knew she wanted to go ahead and try live plants, so that added some more gear. The only problem we had now was how to go about setting it all up. As it turns out you can't just go buy a fish tank, take it home and enjoy. You've got to 'design it.' You got to set up the tank, then prepare the interior. You've got to let the pumps and filters function for a while to get the kinks out. Then you've got to add the plants. Lastly, you can introduce the fish, one by one, probably a week between each. It was going to take two to three months to build our dream tank. Fortunately, Betsy and I were up to the challenge.
But we were forgetting something. We had already been in the store for what seemed like hours. Charlie had lost his patience a long time ago, and worse, he did not yet understand that we would not be leaving that day without a fish. It was a very delicate moment.
I had to explain to him that we were only buying a tank. I took him back to the tanks and showed him the one I was thinking of. He wasn't happy about not getting a fish, and he did not like the tank. I assumed he was just being difficult and was unwilling to see the 'big picture', after all he was only three. He was about to start screaming. I decided to use the old parenting trick of letting him have some 'choice', some 'say' in the matter. I asked him which tank he wanted.
He walked over to a shelf and pointed at a little 2 gallon tank. I was about to try explaining to him the advantages of the larger tank when I realized that he as right. Betsy and I had gotten carried away with our own desires. After all, we had come here to buy Charlie a fish. Ten minutes later we were out of the store with the little two gallon tank, supplies and a little blue fish (a Betta) named 'shorty.'
The problem had been me, co-opting Charlie's dream of a fish into my grandiose dream of a fish tank utopia. I shudder to think what would happen if I actually wrote code like I shopped for fish. Maybe this explains WinFS.