The Secret Pay-off From a Career in Technology
About 5 years ago, I started down a path of learning technical skills that would eventually lead me to a career change into software engineering. As someone who thought of myself as “bad at computers” for most of my life, joining Ibotta’s engineering team at the end of 2019 was quite a plot twist.
I’m grateful for the benefits one might expect from this career change: more flexibility, increased earning potential, challenging and interesting day-to-day work. Lately, I’ve been appreciating the less obvious and more deeply enriching changes that have come about on this path, and hope anyone else who is new to their career in engineering might do the same.
This is not an easy time to be in a new career, but the fact that we’ve gotten here is reason enough to believe we can handle whatever comes next. For me, following a technical path has developed personal qualities that will support my success in any professional or personal pursuit I might choose.
Hack-ability
I used to worry a lot about the “right” way to do things. For example, I am usually a devoted recipe-follower. I would sometimes spend twice as long researching a recipe as it would take to cook it, and make a trip to the store if I was missing even one ingredient, rather than find a substitution on-hand.
Coding, however, is not like following a recipe. There are hundreds of ways to accomplish something, and you have to take into account your particular environment. It’s a lot like working with the ingredients in your pantry, something I’ve gotten a lot more experience doing these days.
Furthermore, to follow a particular recipe means you can only ever make dishes that have already been made. In tech, that means you’re only solving problems that have already been solved.
Expanding this tenet outside of tech means that there is no right or wrong way to make any of the choices I face in life. Waiting around for someone to come with a checklist and validate that yes, you’ve done everything the “right” way, would mean missing the chance to do things in a new way that better fits my needs and values.
In the worst case, when inspired with a new idea or goal, I run the risk of thinking “that’s not achievable” simply because I haven’t seen someone else do it. My team may decide a particular solution isn’t worth the effort, but we never say it isn’t possible.
Test Driven Everything
In my first few weeks as an associate engineer at Ibotta, I got an amazing piece of advice from a mentor, Rebecca Hyland. She told me the best way to get feedback on a story was to put something up, even if it was broken, even if it was hacked together. “It’s easier to give feedback on something that exists, even if it’s completely wrong, than it is to tell someone where to start altogether.”
This advice has helped me progress and contribute much faster than my confidence level would have otherwise allowed. When getting it wrong is an essential part of the process, it motivates me to try things out, one idea after the other. I am always surprised by how much I’m able to learn on my own this way.
When I do need help and direction (which is often), putting up some failing code informs my teammates of my level of understanding, gives me specific rather than vague questions to ask, and allows us to collaborate on a solution, rather than me simply executing steps handed down from a senior developer.
In Test Driven Development, failing is the way you find out where to go next, like a breadcrumb instead of a roadblock. With this principle, I can start projects outside of work by telling myself: “My goal is to get this to fail.” This is a huge blow to my perfectionism that would keep me from ever getting started.
This spring, I leaned on this mantra to start a garden. Rather than making my goal to grow all my own food this year, I set out to kill at least one plant. By accomplishing my anti-goal, I have a new garden bed where I can eventually learn how to help plants thrive.
Everything is Figure-out-able
A few weeks into the pandemic, I pulled out the sewing machine a friend had given me to try and make some masks. I’ve had the machine for years but never really used it. Somewhere in the back of my mind are memories of my mom’s sewing machine as this inscrutable piece of machinery that broke in random ways and always needed an expert to fix it.
Approaching this project, my attitude was different. When I hit the first snag and had to rip out a knotted up seam, a calm voice in my head said: “Let’s figure out what’s wrong.” I reminded myself I had a manual, the internet, a group of experienced friends — everything I might need in order to figure it out. In a short time, I was making simple masks for my family.
It’s a small victory, but it’s too similar to the change that’s taken place in my career not to notice. Before all this, if something went wrong with my computer or software I was working with, I’d easily give up because I was “bad” at it. This is the very definition of a fixed mindset — the belief that I am either inherently skilled at something or I’m not.
It is not easy to make progress in any direction with a fixed mindset, let me tell you. To develop technical skills, it simply became impossible to keep it up. At first, when I got stuck on an error, the voice in my head said things like “You’re just not good at this,” and “You should give up.” But bad news for that voice: I had a job to do. I had to find a way to get unstuck, so I learned to use documentation, internet forums, and the experience of my coworkers. Over time, that fixed mindset voice got quieter, and was replaced with a growth mindset — the belief that with dedication and practice, I can build skills and get better at things.
A growth mindset is a cornerstone trait of almost every technologist I know, and every single bootcamp or self-taught engineer I have ever met. Those of us who have learned to code later in our careers have something in common: we took on something we’d never done before, and we’re figuring it out.
I’m particularly grateful to be a part of a group with these qualities right now. It’s impossible not to feel stressed facing the uncertainty in the world, but everyday I work on a technical problem, I prove I have the grit to do something I used think was impossible.