Continuous improvement is one of the fundamental tenets of Agile methodology that PagerDuty’s product development teams emphasize. This already works fairly well at the individual...by Simon Darken
August 15, 2019
My name is Joshua Carnide and I’m a fourth-year Software Engineering student at the University of Waterloo. In this post, I’ll share the incredible experience I had interning at PagerDuty’s Toronto office and how it has set me up for success.
I was a member of the Mobile team, which is responsible for maintaining and improving PagerDuty’s Android and iOS applications. The team’s aim is to deliver features and functionality that enable users to interact with the PagerDuty platform seamlessly while they’re on the go. It’s a small yet rapidly growing team—when I joined in January 2018, there were only five people on the team. Three months later, the team had grown to 11 people: two engineering interns (myself included), a product management intern, five full-time developers, an agile coach, a product owner, and an engineering manager. I learned more than I could have ever imagined in those four months, met many incredible and talented individuals, and grew extensively as an engineer in the making.
The people at PagerDuty are nothing short of amazing. They are truly passionate about their product and the work that they do. They work extremely hard to ensure the best experience for their users and have fun while doing so.
PagerDuty is also a community of individuals who strongly believe in inclusivity and diversity—it’s an environment that embraces the differences of others and where you can truly be yourself. For example, during International Women’s Day, the company’s Toronto office hosted a discussion panel that featured four local female professionals from companies like Salesforce and Procter & Gamble. It was a valuable opportunity for me to learn more about the career path of women in comparison to other gender orientations and the contemporary challenges faced by women in various professions.
At PagerDuty, I’ve never felt like an intern—I’ve always felt like another full-time employee. During the first week of my internship, I had the privilege of attending the Company Kick Off (CKO) event in Napa Valley, California! CKO was an opportunity for employees both remote and across the offices of Sydney, London, Seattle, Toronto, and San Francisco to come together and celebrate the success of PagerDuty and to align on key priorities going into the new year. The event featured lots of social functions, where I had the opportunity to meet people from different teams and parts of the world. I also met the members of the Mobile team who work in the San Francisco office. It was really cool to learn about the backgrounds and experiences of different employees at the company. It’s clear that each person at PagerDuty brings something unique and special to the table.
The Mobile team and me at one of the social events during CKO. (I’m in the back row on the left.)
At the beginning of my internship, I shied away from asking for help because I wanted to avoid “bugging” the other developers. However, as my term went on, I quickly realized how eager and excited people were to help and how beneficial it could be to pair up to solve a problem.
In previous internships, I had only done Android development. So when I was assigned my first iOS task, I was nervous as I had never worked on an iOS app or had any experience with the Swift programming language. The task was related to live updating—a new feature in our apps that dynamically updates content in real time. The foundation of this feature was already in the app, making this a fairly simple task that didn’t require too much code, but I didn’t really know where to start.
When I reached out for help, I was amazed at the support I received: I paired up with a full-time senior iOS engineer on my team, and we worked through the solution together. Along the way, we stopped and discussed the intricacies of Swift and the fundamentals of the iOS framework, including best practices, common paradigms, and design decisions that were made in the PagerDuty app.
In addition, there was a lot of useful mentorship I received on-the-fly. Our mobile apps harness some powerful libraries and technologies that have steep learning curves. Yet my team members were always happy to pause what they were working on to give me a hand. They took the time to explain in detail why something was the way it was and were always open to having a discussion around how something could be improved or optimized.
Along those same lines, I didn’t think that I’d be in a position to “call the shots” as an intern—but I was wrong. After being at the company for a little over a month, I partnered with a full-time Android engineer to draft a proposal on how we should re-architect our Android application to improve its testability and scalability. As a team, we decided on which architecture we were going to use, but not how we were going to use it for our app. I was responsible for writing up the technical details of how we’d integrate the architecture into our app. It was a lot of responsibility but I was up for the challenge. Following a thorough review by the other developers, the proposal ultimately got approved and now serves as the standard for our app.
The process of carrying out the proposal fully will take a long time. But we’ve laid down the foundation for the new architecture and all the new features that will be implemented with it. It feels awesome to know I played a major role in revolutionizing the future of the PagerDuty Android app.
Relatively speaking, the Mobile team is still small in comparison to other teams at PagerDuty. And as a small team, we had a lot of autonomy—it was up to us, for example, to figure out something as simple as the format of a pull request all the way to which code architecture our app should use. We decided when to release our apps and how often we should release them. The team takes this process very seriously—they distribute new versions of the apps internally to PagerDuty employees before releasing to the public to ensure the highest-quality app is delivered to users. I paired up several times with a senior engineer on the team to release the mobile apps to users. This experience gave me insight into the process of shipping an app to a massive user base, and I learned how to monitor a release to ensure everything went smoothly.
PagerDuty has a lot of cool projects in the pipeline and none of them are off-limits. When I initially joined the company, I had expressed the desire to do iOS development and/or backend development. Not only was I given the opportunity to sink my teeth into both, but right off the bat, I got to work on meaningful projects that would be shipped to our users—a prime example being the aforementioned live updating feature.
Another really useful opportunity to learn something new was during the Mobile team’s weekly co-working sessions, where team members would work on something valuable to their personal development. It was a really useful chance to explore something new and have the support of the senior developers on the team whenever I had any questions. I used this time to expand my technical knowledge. I learned more about Swift and even developed a small iOS application to learn more about the iOS framework.
I also learned about Agile methodologies, which really improved my workflow. When I joined the Mobile team, they were employing the Scrum Agile methodology. Essentially, this meant the team would plan to complete chunks of work in fixed increments of time known as sprints. For our team, each sprint was two weeks long. At the end of each sprint, our team would get together (in what we called a retrospective) to discuss the sprint—what went well, what didn’t go so well, and what actions could be taken to improve our process.
During these exercises, I learned how to identify and fix bottlenecks and how to coordinate work effectively with other developers. Compared to when I first started at the company, I definitely noticed my throughput had increased substantially while still completing high-quality work. Another thing: Something that PagerDuty takes very seriously is that everyone’s opinions matter, and retrospectives were an opportunity for each team member to provide feedback on how the team could improve as a whole and everyone’s suggestions were taken into consideration.
Overall, my experience interning at PagerDuty was amazing. It’s bittersweet knowing that my internship is over and that I’m back at school. I feel lucky to have met so many awesome people and established so many long-lasting relationships. I can confidently say that the skill set I’ve acquired over the course of my internship will allow me to succeed in future engineering endeavours. My time at PagerDuty and on the Mobile team is an experience that I’ll never forget.
If you’re interested in what it’s like to work at PagerDuty, consider applying on the careers page.