Ramping Up: One Intern's Journey into Backup & Restoration
Written by Matthew Krantz (Dartmouth, '16)
The moment I first arrived at Delphix, I knew I was in for an amazing three months. I felt at home in the office before I even sat down at my desk. People went out of their way to say hello, show me around, and offer me bits of Delphix wisdom and advice. By the time I got online for the daily standup meeting, I felt like I already knew most of my fellow engineers.
From there, I hit the ground running. Paul, one of my mentors, helped introduce me to the Delphix codebase through a series of increasingly difficult bugs. After a few technical deep dives and a broad overview of the Delphix engine, I began to modify existing methods and write my own code. By the end of day one I had pushed to trunk.
Several bugs (and a week or two) later, I was ready to start on my real internship project. I was presented with three potential projects, each more interesting than the last. What struck me most was that all of the projects were end to end--no matter which one I ended up choosing, I would get to engage in full-stack development and take ownership of my work.
With the help of my manager, Michael, I narrowed down options based on my interests and ultimately settled on a single choice. For my internship project, I chose to implement restoration datasets on the Delphix engine. Though the phrase may sound abstract, the underlying idea is incredibly cool. Users link their data into Delphix from production, but the only way Delphix currently exposes that data is through provisioning.
Provisioning mutates production data so that it is consumable by non-production environments. While this is great for most end users, it's bad for those who want to recover their data exactly as they've linked it in. Restoration datasets allow users to access unmutated copies of their data for use on production machines. With these unmutated copies, Delphix administrators can easily restore production data in order to combat corruptions or administrative mistakes (e.g. accidentally deleting a configuration file).
I quickly integrated with the AppData team, an awesome group of engineers developing infrastructure for cloning applications and other non-database files. I met my project mentor, Jordan, and with Jordan's help I worked through some challenging feature-related bugs. Once I understood the ins and outs of how my team clones data, Jordan and I began to discuss a project implementation. For the next two months I worked tirelessly to integrate restoration datasets into the Delphix app stack. I grew more and more comfortable with my team's codebase, and I developed a good sense for when to recycle existing code paths and when to build my own.
In classic Delphix fashion, I never hesitated to take a risk or explore. I spent hours poring over debug logs and examining edge cases, but I knew that Jordan was there to help me if I ever got really stuck. As the project came together, I gained more confidence in my design choices and prepared technical presentations for AppData team members.
Eventually, other engineers began to ask me questions about working with my feature and issues I'd run into. I spent my last two weeks at Delphix wrapping up restoration datasets. I presented the implementation of my project to the entire engineering team, went over how to test the new feature with QA, and updated external documentation to reflect my changes.
Looking back, it's incredible to think how much of the product I was able to impact as a Delphix intern. I introduced a significant object model change, persisted new objects in MDS, and touched code ranging from the web services API to the GUI. By the end of my time at Delphix, I felt like a full-fledged engineer. EKO (Engineering Kickoff, an event held every ~6 months to kick off the new development cycle) was the perfect way to wrap up my Delphix experience.
Engineers from across the country came to HQ for a week of tech talks, hackathons, and fun, and together we celebrated the release of Delphix 4.2 Fhloston. It was great to see so many people dedicated to tackling today's toughest technical challenges, and I gained a much greater appreciation for the work Delphix does over my last few days.
I came away from Delphix with a serious development project under my belt and a better understanding of the enterprise development cycle. I had the opportunity to work with amazing engineers and mentors, and there truly was never a dull moment. During my three months as a Delphix intern I grew as both a software engineer and a person, and I can't wait to apply the skills I learned at Delphix going forward.