I’ve spent the last two days heads down at hacker summer camp - aka DEF CON - smack in the middle of the devil’s armpit of America. It’s been a lot of fun so far, and I’ve spent a good chunk of time in the Embedded Systems Village, where I’ve been “hacking” at embedded devices. I’ve solved a fraction of the challenges, yet I’m just shy of the top 20 on the leader board, so at least that feels good.
Try Stuff
I’m not a professional hacker (I don’t think I’m professional) at anything. But I like trying these challenges almost entirely because I don’t know what I’m doing. After sitting at a table for a few hours flipping between web pages and command line scripts, people started asking me for advice. It could be the grey beard that makes me seem wise, but I had to let them down and tell them I was mostly as clueless as they were.
I was thinking about trying hard shit on the walk back from the convention center. There’s something about walking in 110 degrees Fahrenheit that makes you go deep inside yourself just so you don’t realize that you can’t breathe. I was going to tell a story about never being afraid to put yourself on the steepest learning curve, and then I remember that I wrote this story once - as an essay for a book that I can no longer remember the name of. I have my original copy, so I’m going to share it here - partially because I think it lines up with what I wanted to talk about, and partially because I may have heat stroke.
Always Put Yourself On The Steepest Learning Curve
“I’ve used that before. I would be happy to take on the project and get it set up and running”.
I was working at Microsoft on an unannounced project that I knew would never see the light of day (ed. I wrote about this project last week). I’d been on the team for a month or two and finished most of what my team expected (and given the state of the product, probably had already done far more work than I needed to).
My job was boring.
Because my job was boring, I lied.
With a cup of coffee in my hand and heading towards my office, I eavesdropped on a conversation about implementing an open-source toolset as part of our CI/CD system. I’ve worked on similar systems before, and I had at least heard of the tools they were talking about. I saw an opportunity for a significant task that would give me a chance to learn something new and I took it. I didn’t know where to start or what to do, but I had the tools fully integrated and up and running in under a week.
The Challenge
Early in my career, I met with a senior vice president at Microsoft, and he offered me some advice that I still remember; he said, “Always keep yourself on the steepest learning curve”. I don’t think I fully understood it at first, but on reflection, every time I’ve put myself in a position where I absolutely had to learn something new to get my job done or be successful, are the times when I’ve grown the most.
Most often, my time on the steep learning curve hasn’t involved lying. Almost every job I can remember has involved some kind of pivot and new learning in order for me to have a chance at success. I don’t know if it’s good luck, bad luck, or just my unwillingness to say no, but these moments appear frequently throughout my career.
I recall a time early in my career where I paired with a senior developer on a low level task for an operating system. It was way over my head, and I didn’t have a very good understanding of what I was doing, but I was excited and honored to have the chance to learn from one of the big names in programming at the company. Then, just a few weeks after we started, he retired. Instead of pairing me with someone else, they just gave the entire project to me. As a self-taught programmer, I learned C on my own, and felt like I knew the language pretty well. But the work here involved a fair amount of x86 assembly and work in the operating system's kernel. There was absolutely no way I could pull this off. I just wondered how long I would have to flail before someone came to take over, and I could go back to easier and less important work.
But I tried stuff. I learned things. I made progress. For those observing my output, it was almost like I knew what I was doing. Here, while I didn’t lie directly, I told a lie of omission. I never told them I didn’t know assembly language - so when they gave me more work that required writing and debugging assembly, I was too scared to say no. I tried stuff; I learned things, and I made progress.
There are a lot of stories like this from my last 25 years in software. What’s different now is that when I agree to do things I don’t know how to do, I have some confidence that I’ll figure out how to do it and get it done.
Don’t Be Bored
Some people are perfectly happy doing the same thing day after day; week after week; year after year. One reason I’ve loved working in software for nearly 30 years now, is the hundreds of opportunities I’ve had to do things I’ve never done before. I can’t say that I’ve taken advantage of every opportunity I’ve ever had to stretch myself and try something new, but I know I’ve taken most of them.
Sometimes I’ve failed. I’ve had to dig myself out of a few holes created by getting myself in too deep - or being overconfident of my ability to learn everything through mere desire and persistence. Failure provided even bigger opportunities to learn and grow, so I don’t regret those mistakes either.
Try things and stretch yourself. Try things you’ve never tried before. Get stuck and fail once in a while, but always learn and grow.
Always put yourself on the steepest learning curve.
Epilogue
There are a few hours of DEF CON tomorrow. There are a few places I haven’t visited yet, but I will go back to the Embedded Village to see if I can get a few more worthless hacking points - because, why not?
As I finished one of the challenges today, the person next to me looked over and said, “shit - you did one of the hard ones”. Truth is, they’re all hard. I just tried a little of all of them until I found one that I thought I could (eventually) figure out. Trying hard stuff is fun.
-A 1:4
btw - for anyone trying The Puzzle, it’s finally (technically) solvable. More clues coming.