My Summer at Stack Overflow
This summer, I had the privilege of joining Stack Overflow as part of their pilot developer apprenticeship program. For the past 11 weeks, Ian (the other apprentice) and I have worked alongside the Careers and Core Q&A development teams. In this final week, I have started to reflect on my most valuable takeaways. From the incredibly smart and humble people I’ve met to the company’s dedication to inclusion and personal development, almost every aspect of the program and company has exceeded my expectations. What I have come to value most is the experience of solving challenges in a workplace where ideas are heard and respected, no matter who you are in the Company (including myself, someone without a formal computer science degree or relevant work experience).
What I was doing before Stack Overflow
I studied Accounting in college and worked in public accounting for a few years. Although I had a clear career trajectory and was proud of what I had accomplished so far, I was unhappy because I wasn’t learning something new everyday that I was passionately curious about. So I made it my mission to find out what that could be. I decided to teach myself how to code and found enormous satisfaction in both the logical and creative aspects of it. I quickly found myself wanting to spend all of my time learning about web applications and writing code.
I researched many coding bootcamps, but I couldn’t afford the 15k price-tag of these 3-month programs. I eventually came across an opportunity that was perfect for me: a tuition deferred school for women, partner school of Fullstack Academy (a program I wanted to attend but could not afford). I applied to the program, and to my surprise, was accepted into Grace Hopper Academy’s first cohort. I dropped everything and decided to start over. It was the best decision I have ever made.
Bugs, A/B Tests, and Features
I spent the first two weeks learning Stack Overflow’s tech stack by building a ping pong score tracking application. By the end of the second week, we had each chosen a designated mentor for the next 10 weeks. I worked with my mentor, Kirti, on the Careers team, while Ian worked with Jon on the Core/Marketing teams. Our responsibilities included fixing bugs, building out small features, running A/B tests, and watching and participating in usability tests.
Integral to the apprenticeship was our graduation project, which we worked on for the last few weeks. Ian and I were tasked with building out a feature of our own. This was a rewarding process: we got to take a feature from brainstorming to implementation. We first produced a write up and circulated it around the team for feedback. We then worked with a product manager to scope the project, a designer to discuss how the project fits into the current platform, and a developer for regular code reviews. We were also guided by developers on the Careers team who steered us in the right direction while we navigated the code base.
The abundance of mentorship
One of my favorite things about the apprenticeship were the one-on-one chats I had with my mentor and managers, who gave me valuable insight into their own careers and experiences. These chats were usually unprompted, but I always walked away with constructive feedback about what I needed to work on to become a great developer, for example, learning how communicate technical topics clearly to people with both technical and non-technical backgrounds. I can’t thank Kirti enough for the time she spent in answering all of my questions and for the times she would invite me to sit next to her while she walked me through her approaches to solving various problems.
I also received a lot mentorship outside formal channels. A developer on the Careers team invited me to pair program with him on a full stack feature, which involved redesigning a table that touched many parts of the code base. Through pair programming, I picked up on his workflow and learned various OOP concepts.
Everyone I came across at the company had an open door policy and was happy to teach me and Ian whatever we were curious about. For example, while working on our graduation project, we had to research developer targeting data for jobs, so Stack Overflow’s data scientist walked us through some of his work on tag correlations and provided us with tools for using R. We also had to work with a custom query language which made use of an abstract syntax tree. We asked Stack Overflow’s Ad Server team lead about the topic, and he ended up giving us a mini-lecture on how a lexer and parser works and showed us how we could build our own.
Treated like a full-timer
From the first day, I was invited to all of the weekly meetings and was treated just like a full-time employee. I was encouraged to sit in on any meeting that interested me, both within and outside of the Careers team. What surprised me most was how quickly any developer could take his/her idea from concept to shipped feature. New features or changes can come from anyone in the company and are pitched through a shared document. The document is circulated around for feedback, which is always plentiful and often instantaneous. The developer then owns that feature and can work alone or with others. This same process was applied to our graduation project. It was awesome seeing people from all parts of the company voicing their opinions, being receptive to criticism, and shipping their ideas, all within an incredibly short amount of time.
Top three favorite perks
My favorite perk at Stack Overflow was having food cooked for lunch everyday by incredible in-house chefs. During a weekend brunch at Stack Overflow, the chefs had live sea urchin, which I got to crack open myself! I also tried out a Thai chili pepper, habanero pepper and dried locust with coworkers and the chefs — an unforgettable experience.
My second favorite perk was having a quiet place to work. Each developer in the NY office has their own private office, with adjustable height desks and multiple monitors. Some employees have treadmills instead of chairs and others have drums and guitars.
The third coolest perk was the ability to work remotely. Remote work is ingrained in Stack Overflow’s culture, and over half of the dev team works from locations all over the world, including Brazil, Hawaii, and Germany. One of the devs recently traveled around the world for 3 months while working full-time!
Scheduled chats with the team
My favorite part about the apprenticeship was our scheduled chats. These ranged from talking to the marketing and community teams about non-technical topics, to learning how specific code worked throughout Stack Overflow’s various code bases. The technical talks included infrastructure and architecture chats as well as general concepts like web security, caching and garbage collection. However, my favorites were those hosted by the Diversity and Inclusion Panel, where everyone in the company is invited to chat openly and share personal stories about topics such as diversity, career burnout, and online abuse and harassment. The open-mindedness and support that coworkers demonstrate in these chats was unlike anything I had experienced before.
Advice for future apprentices
The most challenging part of the apprenticeship for me was getting used to communicating through chat rooms and hangouts (video chats). Since most of the engineering team is remote, all communication and links to video chats are public in the chat rooms. Pieces of information you may need to solve a particular problem could be dispersed amongst different developers, teams, documents, and codebases, so it is important to be able to gather this information in an effective way.
I am the type of person who likes to try and figure out problems on my own with as little help as possible, so I struggled at first with asking for help through chat. However, in a work and team setting, reaching out for help from an experienced person could help you solve a problem in a fraction of the time that you may have spent on your own. Asking questions is the single most valuable thing you can do during the apprenticeship.
Overall, I really enjoyed my summer at Stack Overflow. It was amazing to be part of an organization filled with self-motivated people who are always helping each other improve. There was never a dull moment here and I grew immensely as a developer in just three months. I am grateful to have had such great mentorship, and am excited to continue building on what I’ve learned.