Many of you have it. That dormant bug that’s hungry for hacking. Even if you don’t professionally pursue it, the spirit of engineering is often ingrained deep in the crevices of our brains. Common triggers include things that are abysmally clunky, slow and annoying. You’re perpetually compelled to hack together better solutions for the daily details of life.
The world of finance is filled with triggers for hackers. Massive volumes of financial data are often too heavy for the shoulders of Excel VBA or Pivot Tables. It could mean waiting hours just to load a spreadsheet.
And it’s never too late to awaken the inner hacker.
This was the case for Kari Tarr. She was working as a revenue analyst for Airbnb when her itch to hack transformed into urgency to become an engineer. It’s understandable. If you think about it, she was working on analyzing revenue for one of the most high-growth startups of all time. Airbnb earned about $250 million in 2013, and tripled to $850 million this year. Her work involved analyzing massive spreadsheets, a daily arduous and time-consuming battle.
After being exposed to the true power of programming, Tarr made it her mission to achieve what many inner hackers often dream about. She switched from the finance team to the engineering team in 1 year.
How did she achieve this herculean transformation? We sat down with Tarr to get inside her head on how she–and you–can feasibly change an entire career trajectory by indulging the inner hacker.
So, first off, what was your first entry into programming?
You know the scene in the movie Clueless where she has that dream closet? And she can see all of her outfits on the computer screen? I really wanted that and my dad was a software engineer at the time, so I asked him to make it for me. He said he wouldn’t do it for me but he’d help me learn to do it myself. So, I got into very simple front-end HTML. Again, this is in the 90s, so simple HTML sites were all the rage.
That’s awesome. The Clueless Closet is apparently real by the way. So, if you’ve always been interested in programming, why didn’t you study CS?
As a kid, I was a geek but definitely not thought of myself as a programmer. Especially because my dad was a very typical engineer—very quiet and reserved. And I was very outgoing. I made these associations in my mind that I wasn’t supposed to be an engineer.
I thought about majoring in CS, but I took an AP Calculus class that absolutely destroyed me. I was around people who were very nerdy and mostly guys. It felt intimidating – so I went the business school route instead.
So, practically speaking, how did you start coding?
I think if you’re an engineer at heart, you’ll always gravitate toward it and eventually find your way there. I was always looking for ways to be more technical in my roles. I had a habit of inventing new job descriptions that let me do more and more technical things, Excel macros and VBA being the gateway then teaching myself SQL.
At Airbnb, I became friends with the engineers. Being a startup, we’re dealing with tremendous growth and often have to go way outside of our roles and hack together solutions quickly, building the road as you’re driving on it, so to speak. To get one of my projects done and out the door, I had to learn a little bit of Linux, and I was immediately hooked. I think I kind of felt drunk with power and became obsessed with learning as much as I could. I became a part-time self-taught person at that point.
What kind of project was it?
I was dealing with lots and lots of data, and I started learning how to edit files through the command line instead of opening an Excel spreadsheet.
I was basically doing things like changing files from tab to comma delimited, so I could import them into another program. It was taking me seconds to do something that took hours in Excel. I was really excited and wanted to see what else I could do.
But how did you convince Airbnb engineers to give you access to the code base?
Two things: first, it was looking for the right opportunities. If something needed to be automated, or there was a weird bug that the engineering team didn’t have the bandwidth for, I’d dig into it. I sought out opportunities that would force me to get experienced with our code base.
Second, I tried to make it really hard for them to say no. For example, I wanted to build a tool for my team so I reverse engineered some existing code and got something up and running. Granted, it was pretty terrible code as I had no experience in writing “good” code, but I got it working.I had a prototype and I showed it to one of the engineering managers and said “hey, I want my team to be able to use this. It’s already working. I did all the work. Can you help me ship it?” It’s hard to say no to that.
Plus, the team at Airbnb is incredibly supportive. I had some awesome mentors who also were wonderful at helping me navigate things and get me unstuck.
And how did the engineering manager react when you first pitched the idea of switching to their department?
At first, they were against the idea. It’s risky to take someone on who doesn’t have experience. They were worried that they’d end up spending too much getting me up to speed. So, I figured okay I’ll keep learning on the side and formally apply in the next 3-5 years when I’m ready. I’m not sure why I wasn’t more discouraged. I guess I kind of expected it. I know the caliber of people who work here and I felt like I had a long way to go before I’d be able to compete.
But then I got some good advice from a friend who told me if I really wanted to learn this stuff, I needed to be living and breathing it every day and I should just jump off into the deep end. So the scariest thing I could think of was to ask them to give me a chance to prove myself.
The best managers help you figure out where you want to go and give you the steps to get there. Once I adamantly said “This is where I want to go” they set up a path for me to get there.
Now that you’ve successfully become a software engineer in 1 year, in hindsight, what are the best tools for self-learning?
I think the best thing to do would be just getting your hands dirty as quickly as possible. I started by reading books, but it left me with so many questions. You have to see things in action early and often.
The thing I really struggled with the most was wanting to deeply understand everything the first time I dug into it. With programming, it doesn’t always work like that. You might have to see or hear it in 6 different contexts before it clicks. That’s why it’s helpful to do a combination of:
- Reading lots of books
- Getting a mentor
- Going to meetups, surround yourself with people doing what you’re doing
- Working through coding problems
Eventually if you keep at it, things start coming together. One thing that particularly helped me get over that hurdle was pair coding with friends. Gayle Laakmann McDowell is a good friend of mine who helped me through a lot of the coding interview problems. She and I would hop on HackerRank and work through algorithms. It was a beautiful way to learn because she could literally see where I was having trouble. If she could tell I wasn’t solid on something, she’d make up smaller sub problems. Eventually, 36 mini problems later, I’d solved some matrix iterative algorithm. It was slow, but it got me from point A to point B and it was really encouraging.
Now I’ve been working as a full time software engineer for about 6 months I’ll admit, the learning curves never stop. Once you get over one and think you’re in the clear, there’s another ahead that makes you feel like a beginner all over again. If you’re a life-long learner, you’ll love it, because you’ve really got no choice. It’s been a roller coaster but I’ve shipped some awesome projects and I wake up every day really excited to get to build stuff for a living.
Are you ready to become a coder? The hardest part is starting. Join the 30 Days of Coding challenge for coding newbies.