How to Have Your Software Engineering Job and Eat It Too

How to Have Your Software Engineering Job and Eat It Too

I was never sure if I wanted to be a software engineer.

Don’t get me wrong, I loved coding. I loved solving hard puzzles, thinking about products, and working in a collaborative environment. I loved advocating for users, interfacing across multiple teams, and learning new technologies. 

The problem was that I loved so much more than that. I loved writing, reading, and public speaking. I loved leading projects, performing improv comedy, singing in choirs, and teaching. And most importantly, I loved working on multiple different projects simultaneously. How could I possibly commit to being a software engineer, when that meant coding on other people’s projects for 40+ hours a week?

To some extent, the stereotype we have of the Software Engineer™ is accurate: I do spend large portions of my day in front of a computer, writing code for a project that I own just a small piece of, but over time, and with the guidance of caring and supportive managers, my role as an Uber software engineer has evolved to fit me.

Computer science did not start to feel like my home until several months into my freshman year of college. I went to Brown University where I immediately jumped at the chance to take the advanced intro class to computer science (CS19 if there are any Brunonians reading this) because I had taken two years of computer science in high school. The advanced class was interesting and challenging, and I met some great people, but that was not what made me choose to major in computer science.

I remember realizing that the teaching assistants who graded our assignments, attended lectures, held office hours, and sometimes even wrote the curriculum were not the Ph.D. candidates that I thought they were, but undergrads. All I could think was, “That’s going to be me.”

And it was. I was a teaching assistant for two years at Brown, which meant I spent two years leading office hours, grading homework, and attending lectures. I was a head teaching assistant for one year, meaning I was upgraded to writing homework assignments, creating grading rubrics, and sometimes even delivering lectures. Then I was the lead teaching assistant for Brown’s whole teaching assistant program for two and a half years, which involved admin work, as well as interfacing with professors and other teaching assistants. For the first time in my life, computer science did not just mean long hours in the computer lab, it meant teaching. I thought I had finally found my dream job.

When I went into industry, however, this trajectory skidded to a halt. Suddenly, I was a Software Engineer™. I was working on cool projects with cool people at a cool office, but all of a sudden, 100 percent of my time was spent coding.

To be honest, I went a little nuts. I started filling my time after work with dramatically different pursuits: improv classes, rock climbing, crossword puzzle constructing, and even a secret internship with a literary agent to exercise my writing muscles.

I was busy, but I was happy. My job was not fulfilling me the way that I wanted it to, but I was releasing my creative energy elsewhere.

But when I came to Uber in 2015, everything changed.

Well, not at first.

I still started as a Software Engineer™. I sat in front of a computer for eight hours a day and worked and owned tiny pieces of larger projects that I was only sort of invested in. I continued my creative pursuits after work by going back to school part-time to get my masters in creative writing and went all-in on trying to be the cookie-cutter Software Engineer™ that everyone wanted me to be.

They say that a great manager can be the difference between having a job and having a career. When I found my great manager at Uber, I knew this was true.

I had had good managers in the past, but this was the first one that seemed to value the pieces of me that did not fit into the Software Engineer™ job description. He knew I was a writer, and so he encouraged me to write blog posts both for my personal blog and the Uber Engineering Blog. He knew that I was passionate about diversity and inclusion, and so he encouraged me to actively participate  in the initiatives led by LadyEng, Uber’s women in engineering group. He knew that I enjoyed being on stage, and so he encouraged me to turn my blog articles into presentations.

When he told me that he valued these parts of me, I almost did not believe him. What possible impact could I have on the company if I was spending my time on something other than coding?

As it turns out, a lot.

In my first year and a half at Uber, I spent 20 percent of my time on diversity efforts. I wrote blog posts about allyship, I volunteered for LadyEng positions, I traveled for recruiting events, and I gave presentations. I enjoyed the 20 percent of my time, but I was unsure if I was really making any difference. There were still problems, and I felt like my voice was not loud enough.

But over time, I realized that was just not true. People had been listening to me, because once we committed to fixing these cracks in the foundation, people were flocking to me to help use this as an opportunity to affect change.

For about a month, I spent 100 percent of my time doing everything but coding. I wrote a blog post on how to be an ally for diversity, I advised people on allyship in one-on-ones, I attended listening sessions, I met with executive leadership, I turned my allyship blogpost into a presentation and gave it dozens of times to different teams, I took phone calls from interview candidates, I brainstormed projects Uber could take on to make our company more inclusive, I helped design Uber’s posters for International Women’s Day, I attended protests, I frequented support sessions, and I did not write a single line of code.

Am I still a software engineer?

Hell yes.

Since February, the pace of my diversity and inclusion work has slowed, but my job today could not be more different from what it was six months ago. I have traveled around the country presenting on allyship at Uber offices, tech conferences, and corporate events. I am making it a point to write at least one blog article a quarter, whether technical or cultural, and I am working on long-term community building initiatives within Uber. My cultural leadership has become increasingly tech-focused; I am now leading projects and mentoring junior engineers. In fact, my newfound stake in the future of Uber has led me to invest more energy into the projects that I believe in (hello, Social Profiles!).

Over time, I realized that my job could be whatever I wanted it to be. I could have been giving tech talks from my first day in industry. I could have spent the last four years of my career revamping interview processes, leading classes in Uber’s engineering orientation, or maintaining my own blog. I only acted like a Software Engineer™ before because that is what I thought the industry wanted me to be.

I am not my job description. There are a million people in the world who can write code and probably do it faster (and with more keyboard shortcuts) than I can, but what I bring to the table is everything else. I will always be a writer, a teacher, a comedian, and yes, even a crossword constructor. I will always fight for our customers and our employees. I will advocate for inclusive design and inclusive offsites. I will discuss the pros and cons of Taylor Swift’s new music video, and I will do all this while being a great software engineer.

When it comes down to it, Uber hired me and not Aimee the Software Engineer™. And for as long as I am here, Uber is going to get everything I have to offer.