Fly Fishing is a lot Like Coding
ummm.... what??
Let me explain:
One of my favorite things to do in my free time is to fly fish for trout in mountain streams. This hobby will transport you to breathtaking places, where there is nothing quite like standing knee-deep in the heart of a meandering stream with the gentle current drifting by your legs. Here, you can release all your worldly worries, letting them be carried swiftly downstream.
Let me teach you a little about fly fishing! It resembles traditional spin fishing, where you cast bait to entice fish, but the key distinction lies in the delivery technique. In spin fishing you use light (often clear colored) fishing line to throw something heavy, like bait on a hook or a plastic lure. When fly fishing, you are doing the same thing, but with an imitation fly (like an insect). These “flies” are crafted from virtually weightless materials like feathers, fur, foam, and yarn so they would not be easily cast by a traditional fishing rod. Instead, fly fishing uses special thick and heavy line that the caster must throw forward and back to shoot out toward their target. Effectively you are casting the line and the fly is just along for the ride.
The main reason I love fly fishing so much more than traditional spin fishing is because of the behavior of the species I target—Trout. Most fish are opportunists who feed on anything that looks tasty and is nearby; this includes nearly all the “game fish” that people catch like Bass, Catfish, Pike, as well as the deep sea fish like Sailfish, Marlin, and Tuna. Trout however are a little bit different…. They eat bugs (which are plentiful) AND they sit facing upstream with a literal conveyor belt of food being thrust upon them every second by the water flow. They often barely have to move more than a few inches to grab a snack, so they can quickly become picky in what they are eating.
My goal as a fly fisherman is to figure out what the trout in that part of the river are keyed in on at that time. You can make the perfect cast, with a perfectly crafted fly, to an area with dozens of fish and they will snub their noses at it. (Literally, they will look right at it, swim up to it ,and then flick their head back as if they were dining at a fancy restaurant unhappy with the way their steak was cooked. Send it back!!).
I recall one day I ended up changing my flies twenty times and I was getting that unwanted reaction from every single trout. Then on the 21st change of fly, I figured it out. I pulled up one fish. Two fish. Three fish…. In 15 minutes I had caught close to THIRTY fish, all on that one fly.
As I told this story again a few days ago, I realized this is a lot like coding and the debugging process. You can have all the technical knowledge and theory in the world when you want to design software, but when things aren’t working, you have to figure it out through console logs, stack overflow, and other debugging tools. That can be frustrating when you know your functions and architecture “should” work, but it isn’t for some reason. However, you keep trying and when you figure it out, there is that wonderful reward of accomplishment after your determination.
When you figure it out once, you now have that experience in your toolbelt for next time as a place to start. However, much like each coding project is a different task and may require different methods, fly fishing is the similar. Trout, like code, enjoy bugs and it’s often not the same bugs it liked last time. I could move just 100 hundred yards upstream and those fish could be eating a different size, shape, or species of fly and so my “fix” wouldn’t work. Or I could take a break for lunch and go back to the same spot and they could very well be eating a different fly completely.
Fly fishing and coding are two of my favorite ways to spend my time as they are the perfect blend of challenging and rewarding. The draw of persevering through errors and no bites (not bytes 😉) to figure out the solution is what keeps me coming back. I hope you find something in work and in a hobby that brings you joy and builds resilience while taking you some really cool places along the way.
Tight lines and clean coding!
Cheers,
David
Comments
Post a Comment