👋I’m Tasia, a Computer Science student at the University of Washington and Pulumi’s very first intern. Read on to learn about some of my thoughts and experiences from these past few months!
I’ve interned at a few different companies before, but for my last internship, there were several things I was looking for:
A start-up. All the companies I worked at previously had at least a couple thousand people, and I wanted to see first-hand the difference in both engineering and culture between larger, more established companies and smaller, newer ones.
A knowledgable engineering team. Although I knew I wanted to work at a start-up, I also wanted access to the knowledge and expertise that usually comes with more senior engineers.
A product I can get behind. There’s a lot of start-ups out there, and not all of them work on things that I think are viable or exciting. Working on something that I can see myself and others using makes getting up for work a little more bearable.
Competitive compensation. Even though I don’t expect smaller companies to be as financially well-off as the other companies I worked for, I still wanted to be paid comparably.
Opportunities to learn something new. The main goal for all of my internships was basically just to learn something new. I don’t really know what I want to do for the rest of my career, but the best way I think to figure that out is to try a bit of everything!
If you haven’t guessed already, Pulumi checks all of these boxes! Although Pulumi was only founded a few years ago, their team is rich with experienced engineers and their product has taken a foothold in companies all over the world. Especially with the release of 2.0 right around the corner, I’m glad I joined at such an exciting time.
Working Across the Company
Pulumi engineering is currently split up into two teams: the Service Team and the Platform Team. The service team primarily works on the Pulumi Console, whereas the platform team primarily works on the Pulumi SDK. Although I’m technically a part of the Service Team, one of the benefits of working as an intern in a small company is the flexibility to work on projects across the whole company.
Within the Service Team, I added support for tags within the Pulumi Console and created new pages to view a member’s specific stack permissions. Within the Platform Team, I added support for both transformations and Docker images in Go. Lastly, in a cross-team effort, I’ve been helping out with updating our code generation tools for Pulumi 2.0. I’m sparing the nitty gritty details here for the sake of time and space, but most of the repos I worked in are open-source, so feel free to check them out!
Simply put, I took on the work of a full-time engineer, only with slightly more flexibility and a lot less experience. Prior to working at Pulumi, I had basically zero knowledge on Angular, cloud providers, and code generation. Now, I’m still nowhere near an expert on any of these, but I feel like I have a stronger grasp on where the software engineering industry is headed, thanks to the support of everyone I worked with!
Things I’ve Learned
Earlier I mentioned that one of my main goals for any internship is to learn. Here are just three key things I’ve learned about myself and software engineering during this one:
Remote life is not the life for me. Due to unforseen circumstances, I spent the last month of my internship in my apartment. I always thought I was a bit of a homebody, but it turns out that staying in one place for more than one day makes me stir crazy, and I’m nowhere near as productive in my room as I think I am. On the upside, Pulumi already had several remote engineers, so all the infrastructure was already in place to continue the actual work side of things fairly smoothly.
Writing tests before writing code is actually a good strategy. I remember learning this in one of my classes and thinking “Yeah that seems like a good idea, but what person would actually do that?”. Apparently, that person would be me. Often times, I would find myself starting to code something without really understanding possible use cases. Making myself write tests beforehand clears that up pretty quickly.
Using “the cloud” is anything but simple. To be completely fair, I already knew this. My previous experience with cloud providers involved reading through multi-page documents just to set everything up, and clicking a handful of buttons on the console without really understanding why. Pulumi hugely streamlines that process, but even still there’s so much that goes into doing a single thing on a cloud. In other words, I have a newfound appreciation for people working on cloud infrastructure and I feel lucky to be entering the industry when resources like Pulumi already exist.
Overall, my time at Pulumi wasn’t quite the chaotic startup experience I was expecting. I came into Pulumi with this idea that start-ups consisted of stressed-out people, working around the clock, and disorganization across the board. My time here at Pulumi, however, was anything but. Looking back, the only major differences I felt while working at Pulumi (both engineering-related and otherwise) compared to my previous companies were the lack of free meals (which as a college student, I’m very partial to) and intern events (which as the only intern, I didn’t expect any of), which I think really speaks to the maturity of their engineering and leadership teams. I’m proud seeing what I’ve accomplished, and excited to see the future of Pulumi!
I’m soon returning to (virtual) classes (thanks, coronavirus!), but feel free to reach out to me via LinkedIn to learn more about me and/or my experiences!