About two years ago, when I was first searching for a software engineering internship, I remember asking myself, “What do I want to get out of this new experience? What would an ideal internship be?” It really boiled down to three main asks:
- I wanted to be treated and challenged like an engineer, not “just an intern”.
- I wanted to learn and grow, both as an engineer, and as a young professional.
- I wanted to know the work I was doing had an impact on an actual end user.
I’m now entering my third internship with Procore, making it my fifth software engineering internship. Procore has exceeded all of my asks by providing a phenomenal internship experience.
Being Treated as an Engineer
Far too often I’ve heard stories of fellow classmates taking internships where their sole task was writing tests. I, on the other hand, wanted to be thrown into the deep end. I wanted to be presented with challenges that would be difficult, but would make me better. I wanted my voice and my ideas to be heard at meetings. Procore delivered on all my wants.
As an engineering intern, you’re placed on a squad which has other engineers, a product manager, a QA engineer, and sometimes a UX Designer. From day one you’re treated as an engineer. You’re paired with a mentor, so by no means are you ever alone, but the tasks you complete are regular tickets that any other engineer on the squad would take on. The squad you’re on is excited to both see you learn, and to get a fresh perspective, so your input is incredibly valuable.
Procore is a very large application, serving millions of users. Therefore, the solutions to the challenges engineers face carry tremendous impact on our users. To put the scale (and opportunity) in perspective, some of the work I’ve done during my internship includes:
- Writing migrations on database tables that have > 500 Million records
- Updating the UI on tools seen by > 100k users a day
- Maintaining and upgrading the email infrastructure Procore uses to send > 100k emails a day
Learning & Professional Growth
An internship in it of itself is an opportunity to learn by doing. While just doing an internship provides this great learning opportunity, Procore takes learning and development to the next level. On the professional end, Procore offers leadership, time management, & many other workshops. I was fortunate enough to take the all-day Time Management for Extraordinary Productivity workshop. Procore even provides courses for personal development, such as the financial wellness course I took.
On the engineering side of things, Procore has a program where engineers teach others how to code, called the Dev Academy. It’s like an internal dev bootcamp. We have many Dev Academies hosted each month, and I’ve taken courses on Ruby Testing Fundamentals, Kubernetes, Ruby Performance, and many Refactoring Workshops. While we have this formal course setting, we also offer more casual Lunch and Learn sessions. These range in content from learning about how the product team makes some of its decisions, how squads operate day-to-day, and then some more technical talks. I was even fortunate enough to give my own Lunch and Learn about State Management in React.
Impact of Work
When writing software, a common question many engineers ask themselves is, “What impact did I have?”. While many companies track and measure their success, metrics aren’t all that easy to digest. Seeing a query load time get cut in half is certainly satisfying, but in terms of impact, how does the end user feel about that?
One of the unique opportunities at Procore is their emphasis on gaining empathy for our users. Both as an intern, and as a full-time employee, the first week at Procore is a week long orientation. During this orientation, we’re brought through a “Construction Bootcamp”, where we learn the ins and outs of construction. We simulate processes such as bidding, and get to understand just how complicated and stressful construction can be.
Starting off the internship with this understanding of Construction is great, and certainly creates the right mindset for what kind of problems you’ll solve as an engineer. Procore takes it even one step further. On almost any given month, Procore partners with construction firms in the area, and hosts jobsite visits. On these jobsite visits, you get to go and see how the software you built is being used. You see first hand what kind of challenges the men and women of construction face, and even better, you see that impact of the software you wrote and how its solving these daily challenges.
While I’ve gotten the fortunate opportunity of getting a variety of internship experiences with multiple different companies, I’m so happy to return to Procore for the third time. Reflecting on my first two internships at Procore I look back at some of the great opportunities, learnings, and achievements, and I truly feel that all my asks of an internship were answered. I’ve been able to grow as an engineer because I’ve been treated like one. On the personal development side, I’ve learned so much, and have gained skills I’ll use throughout my career. Most importantly, I’ve been able to gain a deeper understanding of the construction process and have seen a direct impact on how my work improves it. Being able to come back to such a great environment and know that the men and women of construction have had their lives improved by my work is such a great feeling.