Working in Big Tech

ยท 1514 words ยท 8 minute read

Software Engineering at a big U.S. technology company is a dream job for most software engineers and computer science students that I’ve met. Some people have concerns about work-life balance or the competitive interviews, but all agree that the benefits and experience are the peak of software engineering careers. I shared these concerns and this dream, and here I am - 6 years into my career with a year of experience at a big tech company - ready to share the story of how I got here and what it’s like now that I’m here.

My First Job ๐Ÿ”—

My very first job was as a “mechanic’s apprentice” in a local automotive shop where I would change tires and do oil changes along with other simple tasks. I probably wouldn’t have gotten this job in high school if it weren’t for the fact that the shop was my dad’s one-man small business. It wasn’t related to software engineering, but I like to think it gave me skills in working with customers, managing time at work, and other soft skills that would be valuable down the line. I was able to speak to that experience in my internship interviews and I think it helped me land my first one.

My first internship was in the summer after my Sophomore year at UW-Madison for a 10-person tech startup. They were building a hardware product with a software program. My job was to do manual testing as well as contribute to automated testing where I could. This was really only a small step in the direction of hard software engineering skills, but I added a point to my resume that said “Improved end-to-end testing time by 50%” along with more experience in a software engineering atmosphere. Talking about scrum and testing and automation helped me land my second internship with a large insurance company.

This second internship in the summer after my Junior year turned into my first full-time job when I graduated, and they were basically the same work over the cumulative two years I was there. I wrote a variety of code and white papers trying to “innovate” in the research and development department of a company that was putting out ads slamming chat bots. While not being taken seriously was what led to my resignation, I did learn a lot. It allowed me to catch up on the skills in programming that a lot of my peers at UW-Madison with top grades had already achieved.

Serious Business ๐Ÿ”—

I left the insurance company for a big financial company to write production code that would have high traffic and be high quality. When I joined, I could code until my fingers started cramping, but my systems knowledge was miniscule. I had heard about Docker and almost got a B in my Operating Systems class, but there were some fantastic mentors and books that taught me about data-driven architectures and cloud native applications. By the time I left almost two and a half years later, I was setting up container orchestration for automated testing and giving talks on the minutia of the Go language.

The job market in 2021 was too hot to keep me at a company that was unsure of their future with remote work. A really good opportunity to continue pushing my career came along.

Senior Engineer ๐Ÿ”—

My career progression was moving along nicely as I had gotten promoted at both the insurance company and the financial company - effectively moving through four levels of Software Engineer. My boss at the financial company even offered to make me a Senior Engineer if I had stayed, but this offer at a startup came along where I was told I would start at Senior Engineer and progress to Staff level in six-to-eight months.

When I started, I was developing a green-field tool and teaching a team of engineers Go. I worked across teams while absorbing and contributing to company-wide technical practices. I was having a blast. I even got to have a conversation with the 30-something CEO at a bar in Texas!

The time came and went for my six-to-eight month promotion to Staff. Instead of moving up in my career, they moved me to a new team where I effectively got demoted. I was reporting to an architect that I bashed heads with and writing code that was dictated to me. Not only that, but I was working across timezones with Europe and would work from 5:00am to 9:00pm to maximize overlap. I got burnt out and felt burnt by the recruiting and hiring manager.

Big Tech to the Rescue ๐Ÿ”—

I was hired at the tail-end of the post-Covid hiring boom after applying to a Senior Engineer posting that was promoted on LinkedIn. If it weren’t for my fiance pushing me to apply, I probably wouldn’t have believed in myself enough to try. I crammed Leet Code for a few weeks to prepare (after regularly doing problems over the last few months while applying to other jobs), and it helped me pass through the first online-test stages. The company offered a preparation session where they talked through the final interview staged and how to best prepare, which was also really helpful. It was there that I found out that my performance in this interview would determine my level.

After the final stage, I gave myself a 50% chance of getting offered the job, and if I were to be offered the job, I considered it a 50% chance of being demoted below Senior Engineer. I had done really well in some of the coding exercises and failed to solve others, but I felt really good about my systems design answers. I was really surprised when I got the offer for Senior Engineer, but I later found out that the team’s business domain lined up perfectly with my experience.

Luck is where preparation meets opportunity and I had struck gold!

Onboarding ๐Ÿ”—

Big Technology companies spend a lot of money making sure that their new hires have the tools necessary to be effective in their roles. I had team-specific onboarding and company-specific onboarding, but was freer to discover my own path than I anticipated.

My manager assigned me tasks to guide me, and introduced me to people, but I was the one discovering the questions that needed to be asked. Sometimes I didn’t discovered the right questions and I’ve missed important information along the way, but mostly I was contributing valuable information to our team by discovering new things through my new connections.

It took about six months to feel comfortable with the business domain, tech stack, and responsibilities of my role. I think it will take years to master these areas, but look forward to continuing that.

Day-to-Day ๐Ÿ”—

As a Senior Engineer at a Big Tech Company I am responsible for at least one quarter-long initiative and several month-long initiatives. I am empowered to delegate to Junior and Mid-Level Engineers and I regularly have three-to-four tasks I am progressing simultaneously.

The tasks that I work on include coding, designing, documenting, and driving initiatives through organization and process. Coding is a much smaller share of my time than it has been in all prior roles, but it is expected that I am an expert capable of delivering features quicker than other Engineers and catching things in Code Reviews. Designing is also quite different than it was at other companies.

Big Tech companies have a lot of internal libraries and processes. Designing then becomes a challenge of how am I going to do something that another internal team has done with my specific set of requirements. Whereas, at startups or non-tech companies, designing is much more open-ended. At first I didn’t like this, but it makes things much more maintainable and makes engineers much more efficient.

Driving initiatives is another task that differed for me from prior roles. At smaller companies, there would be a lot of meeting for the sake of meeting and people were generally spending a lot more time per initiative on the organizing. I’ve found I have to do more with less when meeting across teams. I focus on resolving assumptions and rely heavily on subject matter experts to give me that information. I push people, but try to keep relationships strong.

Looking Back ๐Ÿ”—

I was asked recently how I got into computer science when I grew up in a small town with no exposure to software work. I told them “my grades weren’t good enough to get into the engineering school, and I chose CS since it was in the liberal arts school without a GPA requirement.” Along the way, I’ve continued to build on my knowledge, but slower than my classmates who were excelling. I’m now surrounded by Software Engineers that were the best in their class at the best schools in the world. I got lucky graduating into a world 6 years ago that no longer exists and I got lucky with each of my career moves. I’m happy to stay at this Big Tech Company as long as they’ll have me.