This past friday, something absolutely amazing occured. Before I get started, let me say first that most of my friends/family have no freakin clue what I do, much less understand to any degree how complex it _can_ be and in effect, don't care what I do, its "something with computers". Well, my girlfriend started to ask about it because she didn't understand why some of this stuff zaps my brainpower after a day at work. This was a mix of things that brought this on. 1, an ad on TV about "get a technical degree in multidirectional impact devices!" and 2, I had mentioned I was doing stuff with this really cool-named product, Ninject.
I know she's got the mindset to figure this stuff out and a little mind stretch is never bad so why not? I offered to show her the bare bones of programming, a simple (cringe) hello world website with the cliche button, textbox and label. No sweat, easy stuff, went very very smoothly and with a slightly concerned face, she looks at me and comments "this ...really isn't that hard" then something astonishing happened - she says "well, lets do something for the dogs, I want it to say who was a good dog today". Ok, so we removed the textbox with a dropdown and went along with that until "what if I want to say more than one dog was good? ...and can we make it say the other dogs were bad?". The ball was rolling at this point! Did I mention we were using "best practices" in control names too (lbl = label, txt = textbox, etc)? That she was telling me? Correctly? The first time? She was getting it!
After a while, we ended up making a design decision that we would use a checkboxlist, run though the list, display which dog was good, which was bad now insert the astonishing comment "wait, if we have Buck and Kimber selected, the (verb) tenses won't be right ...we can't have it say Buck Kimber was a good dog. We'll have to do ...something that figures that out won't we? And can we put and in there when there's more than one selected? What about commas? Is that possible?" Where's the heavenly awe music when you need it??
We had to write an if statement to check the counts, make a decision and give us a string that was acceptable along with a flag that let us know if it was a good dog comment or bad dog comment. After about 2 hours, she was happy with what we'd created and was amazed at the level of complexity that something as "simple" as making a page say what dog was good and what dog wasn't. I also demonstarted that since we put in the work now, if we added 5 more dogs to the list, it didn't matter, it just worked. When we were finally done she commented, almostly slyly "I'll never look at checkboxes the same ever again" - HA!