This weekend, I've been "mentoring" at a DevLeague and Uber Hackathon taking place in Honolulu, Hawaii. I've moved from taking part in hackathons to running hackathons to now just helping out the younger developers during the brain-drained wee hours of the morning.
It's been a interesting few years. I still take part in hackathons now and then but the lack of my own free time and overall enjoyment of mentoring up and coming developers tend to push me to mentor more than actually take part.
The question I get the most during these hackathons is always something along the lines of, "When does this get easier?" Variations of the same fundamental question are, "How long does it take before you can break down these problems?" or "When can I see X like you do?"
I have a short answer and a long answer to these questions.
The short answer is always, "Experience."
The long answer though is the reason why I write this blog post. I tend to view knowledge and experience as the same thing in these situations. And I view knowledge as this tree that's planted in everyone's head that they need to nurture.
The human brain is designed to pull from prior experiences to solve novel problems. So it makes sense that the more experiences and knowledge, the more branches you have on your "Knowledge Tree." And, the easier it is to solve those novel problems. Basically, the more experiences you have, the more you can leverage one or more branches and view that problem as something you've dealt with before in one form or another.
This is also the reason why I tend to tell younger developers to not just try new languages, but to try new experiences, go travelling, learn a new spoken language, read up about the new scientific advances. These all create new branches that you could potentially leverage in the future.
So hackathons, they also generate a large amount of branches in a 24 - 72 hour timeframe. But at some point, when you have your go to web framework and your go to frontend toolchain, you've reached the point of diminishing returns. At this point, I find it's more enjoyable to go to smaller hackathons and mentor young developers. Help them build new branches, and I end up building branches in areas that I never expected or at least strengthen the ones I thought I already had.