Computer science is a tricky world. Unlike many other disciplines, we live at the frontier of computing. The speed at which new technologies are introduced is difficult to understand from the outside, particularly because of the extent of their impact. A clever piece of software might allow a new industry to use artificial intelligence. A novel approach might make the internet twice as fast. While technology pushes ahead, though, there are still mountains of code and machines that must continue to work. Fresh approaches don’t mean much if they destroy years of progress. And for that, there’s testing.
Testing in software is a bit like stretching before a workout. It’s not necessary, and some of the best can get by perfectly fine without it:
“Why should I stretch? Does a cheetah stretch before it chases its prey?” -Ken Griffey Jr.
But without stretching, or testing, it’s hard to feel bad when problems arise. Like a kid chasing soccer balls on the school yard, I had always just built, never tested. With such little time to catch up to peers with far more knowledge, testing felt like a painful extra. So approaching testing at school, I needed to learn and learn fast. We were taught in class, listening to a lecture for two hours about the purpose and goals. I learned on the internet, reading about how to implement tests and what to test for. It was all helpful, but it wasn’t until I worked with a friend that things really started to fall into place. After letting it be known that I had ‘figured out’ a few things, peers were looking to me for guidance, asking me to sit down and teach them. This exercise, far more than the lectures, books, or tutorials, taught me about testing.
I was struck by the effectiveness. A trait most aspire to. It’s pushed me to spend commutes in the pages of a book or a long drive listening to history podcasts. Time is the great equalizer and taking advantage of every second made the reward from teaching so fulfilling. Reading about testing during lunch would have moved me closer to my goal, like watching TED talks instead of the Bachelor, but it was teaching that was easily the most effective. Being effective is pivotal toward reaching goals, but is all ‘effective time’ really the same?
Most people agree on the benefits of learning. It’s better to know more than to know less. Dinner parties with stupid people are dull. Furthermore, solutions require knowledge. Whether it’s a mobile app to share photos, a policy to protect citizens, or a poem to calm the mind, great solutions require great understanding.
“I have not failed. I have just found 10,000 things that do not work.” – Thomas Edison
The premium put on learning leads to the next question, how? For that, there is little better than teaching. A common reference is the learning pyramid, introduced to me first in high school psychology. Though questioned by some, most agree on the relative idea. Information is better retained while teaching than any other method. For learning, teaching is the most effective, possibly 9x as effective as reading.
So, if learning is the goal, teaching is the ‘how’. Breaking down a good book or epic movie, particularly the tricky ones, means knowing the drivers. Explaining testing to a n00b pushed me to get to the heart of testing. What’s the point? Why do we do it? How does it help? The questions were sure to be asked. Answering them, honestly understanding them, allows the knowledge to find its place in our minds. Teaching means learning and learning connects the dots.
Teaching, though, is more than walking a friend through testing. Life is full of teaching and learning. Shakespeare teaches us about love and loss. Commercials teach us about benefits and risks. Steph Curry teaches us about faulty expectations and the value of a 3-pointer. Actions can teach. Holding the door for women teaches others about chivalry. But sometimes we don’t know the answers ourselves. Why hold the door?Because it impresses the ladies. Because a few extra seconds of politeness is a small price. Because I’m lucky to be strong enough to open the door.
It’s my experience that the best way to teach, the way to be the most effective, is to teach yourself. When only a spark of an idea exists, clear as day of its importance but hazy in its details, mechanisms for teaching can pull the ball of yarn to reveal an idea’s depth, to ourselves and others. Mary Shelly pursuing fear and horror though Frankenstein. John Lennon imagining what peace really looks like. Steve Jobs striving for simplicity in the face of complexity.
Learning is a core principle, pushing our minds toward solutions through understanding. Sometimes though, the information we need lies within, masked as experiences and stories, situations and scenarios. So get it out there. Write the story, sing the song, build the product. It helps us all.
“Human knowledge is never contained in one person. It grows from the relationships we create between each other and the world, and still it is never complete.”
Paul Kalanithi, When Breath Becomes Air