Once a year, I’m invited to judge the Computation Thinking Competition at my alma mater, Iowa State University. The event is a K-12 outreach program designed to get girls and boys interested in computer science, technology, and thinking about how to solve problems computationally. Each year, I’m tremendously impressed by the ingenuity and creativity that the students bring to the competition. Last Saturday, like all the past years I’ve been a judge, was no different.
While my role at these competitions, technically, is to judge the students’ projects based on a set of clearly defined criteria; my real purpose there, at least from my perspective, is entirely different. My purpose is to ask three simple questions:
1. What was the most difficult problem you encountered?
2. How did you solve the problem?
3. How did it make you feel when you solved the problem?
These questions might seem trivial and unimportant to an outsider of the world of computer programming. However, I’m asking these questions, in this order, for a very specific reason. My goal is to get the kids to recognize the feedback loop that exists in their brains when they successfully solve a difficult problem.
This is the same feedback loop that exists in the brains of every great software developer. I want them to remember that little burst of dopamine that they felt when they solved their most challenging problem. I want them to become consciously aware of the feedback loop that drives us to seek out and solve progressively more complex and difficult problems.
I think it’s this feedback loop, combined with a few other intellectual assets, which transforms curious children into great software developers. If we didn’t get that little burst of dopamine every time we solved a complex problem, we wouldn’t have the motivation nor the willpower to solve these difficult IT problems. Sure, money motivates people to do work; however, great software developers love solving problems for the sake of creating solutions.
We see clear evidence of this in the ever-growing world of open-source software development. Developers like my peers and me are solving these problems just because they are problems that need to be solved. It just feels good to be solving problems, whether the reward is financial or some internal dopaminergic currency that we often find more valuable than money.
My goal in asking these three questions is to get the children to recognize this feedback loop early on so that they will be mindful of it over the course of their academic and professional development. I want them to see how finding a difficult problem and creating a solution to that problem makes them feel great when they’ve completed the task. I believe that if they become conscious of this feedback loop, they’ll be more likely to learn to leverage it to help them grow to solve larger and more complex problems. If we can get them to recognize this pattern early, it could make a profound difference in their personal development.
When a child is working on a solution to a complex problem, she or he will inevitably run into a roadblock that they will find too difficult to overcome. If they are aware of the positive feeling that lies just over the top of this metaphorical hill that they are about to climb, they will be more likely to keep pushing to reach their goal. However, if they are unaware of the causal relationship between problem-solving and that feeling of accomplishment, they might very well give up before they complete their ascent.
I think that it is highly advantageous to the process of nurturing the next generation of young software developers that we help them to see this pattern of behavior early in their careers. I was fortunate enough in my childhood to have parents and teachers who helped me discover it on my own very early in my life. I honestly believe that this had a significant impact on my desire to progressively tackle bigger and more complex problems each year; to the point where I now solve some of the more complex and difficult problems that currently exist in information technology.
Ultimately, the purpose of this article is to help you, as the reader, recognize this feedback loop that exists inside of you, if you haven’t already. Then to suggest that you learn to exploit it to advance your problem-solving skills in your own career. Finally, to encourage you to pay it back to society by volunteering your time to teach the next generation of software developers and computer scientists how to do the same. Most of us owe our careers and the great lives that we live to people who did the same for us.