Reviewing my 5 yr old’s code
My daughter’s favorite Christmas presents were a microscope and an Osmo coding game. She spent the day alternating between examining specimens under magnification and playing the coding game. It was a very proud papa moment. But before we talk more about that, let’s turn back the clock for a minute, back years before my daughter was born.
Towards the beginning of my career as a software engineer an architect told me “There’s more than one way to solve a problem.” A seemingly obvious statement, but we were talking about how a particular system in his area of oversight ended up with an implementation that ran counter to advice he had previously given me. His point was that the system met his requirements, even if it was accomplished using a different pattern or approach than he preferred. He impressed upon me to be objective and take ego out of it when reviewing someone else’s work. I’ve replayed this conversation in my head and with others throughout the progression of my career; including this morning while I sat at the kitchen table playing the coding game with my daughter.
A little background on the game. It’s called “Coding Awbie”. Osmo is a tablet based learning platform. The coding pack comes with some physical game pieces which interlock to form a series of basic instructions like walk, jump, and grab. The instructions tell the main character how to move around on the screen. The goal is to pick up strawberries, pies, and open treasure chests which give you credits that can be used to upgrade your campsite. We take turns solving portions of each level.
Immediately upon waking up one morning my daughter wanted to show me the progress she had made in the game. We sat at the kitchen table working our way through a level as my tea steeped. Eventually I handed over full control and sat back to enjoy the warmth of my tea and the warmer feels of pride in my offspring….then she did something odd.
In one deft move she wiped off my well laid plan, sweeping the tiles to the side. Then she proceeded to take a drastically different approach to solving the problem. She used the jump instruction instead of the walking one. She went after the items in what I would describe as a hap-hazard order. Why did she go that way? The other way was more efficient. Now she’s going to have to back-track! She said “I like my way.”
And then I heard it; the voice of that architect reminding me that my solution isn’t the only one. I fought my urge to “correct” her plan and instead asked myself “If it accomplishes the same goal, does it matter?” Of course I saw a pattern, a way to use the loop instruction, a more efficient way to reach the treasure chest….but she’s 5, and loving this game, should I really tell her she’s doing it “wrong”? Or lead by example the next time it’s my turn? Of course as software engineers we have to consider the efficiency of our solutions, but in my experience there’s plenty of wiggle room and no need to prematurely optimize all-the-things.
Before I knew it my workday had started and I was attending a meeting with some folks who were soliciting advice to solve a problem; an experience that occasionally plays out the same way as handing over control to my daughter :-)