I was about to pull my hair out.
I had been looking at my monitor for nearly an hour, trying to wrap my head around the inverse tree traversal that I had to do. Start at the bottom, work my way up, find my way back to where I started and update each node along the way. It didn’t sound too hard… why was I having such a difficult time envisioning the code?
After exclaiming to my friend Cory that my brain was about to explode, I dove in to a very high level description of the problem. When a parent node goes in to an error state, I have to mark all the children as unresolvable… but I’m looking at an array of items where each item knows about it’s parents.
30 seconds in to the conversation, Cory asked me a question.
5 lines of code later, I had a working solution and it was brilliant!
The truth is that I already had everything I needed – everything, except for the right perspective on the problem. I wasn’t looking at things from the right angle.
I had this preconceived notion that I had to start from the bottom of the tree structure I was dealing with. All Cory did was ask me if I knew which node was going in to an error state, at the moment it went in to error. Yes, of course I did – I was marking it as error. So, can’t I just travel down from there? Well, no… I … have already pre-computed the child nodes in a previous iteration! YES! I can travel down the tree from there!
It’s a problem that we often face in many different contexts. We have an idea that guides us toward a solution to a problem, and we get fixated on that idea. Or we have a problem that seems to twist itself in circles with no way out. But the moment we explain the situation to someone else, the solution suddenly becomes obvious.
That subtle shift in perspective when we have to explain a few extra details, when that person asks an “obvious” question, or when we just say the words out loud and they suddenly don’t make sense… forcing yourself to turn your implicit knowledge of a situation in to an explicit statement can be a very powerful thing, indeed.
Let The Anti-Social Be Social (Occasionally)
I’m not a people person, quite honestly. I don’t always want to be alone, but I rarely want to be the center of attention or in a big crowd. I’m definitely on the shy scale, and the awkward side of things in real life. I put on a good show, sometimes, but not always.
When I talk about the importance of talking, then, it shouldn’t be taken lightly.
This is advice that comes from years of experience in sitting around, pulling my hair out, trying to solve something and having the solution become perfectly obvious the moment I begin talking about it. This is such a regular occurrence for me, that I can’t imagine not having someone to talk to on a regular basis. It doesn’t have to be every day (and frankly, I don’t want it to be every day). But a couple of days a week, for me, is critical.
I Need That Conversation
That one conversation, that small spark of perspective change, that moment of being forced to explain something in new terms… that’s the reason I go in to my client’s office twice a week, and the reason Cory and I go to a coffee shop every Wednesday.
Don’t underestimate the value of other people’s perspectives… or the value of you being willing to listen to someone else and ask “obvious” questions. You may find yourself on the giving end of that spark of genius, if you only let yourself be available.