Puppet Labs Internships: Doing Work that Matters
As the new year begins, it’s once again time to start thinking about summer interns. The Puppet Labs internship program has evolved over the last couple years, but has always has a focus on having interns do Real Work™.
While we certainly have interns outside of engineering, my focus has been the engineering interns. My goal for our interns has been dual-purpose: to teach the skills necessary to become a software developer by providing meaningful work.
Traditional computer science programs do an outstanding job of teaching algorithm analysis, data structures, compilers, operating system theory and implementation, and automata theory. But on the whole, they do a poor job of instilling other essential skills required of a modern software developer: automated testing, version control, pair programming, release planning, etc. If our interns’ experiences at university are anything like mine were, “You should do testing” and “You should use version control” are the extent of discussion on these topics; therefore these are the skills we target during an internship.
We don’t expect the intern candidates to have prior version control experience. Frankly, the version control workflow for your personal or school project (if you have one at all) is quite different from that of a team with several developers and multiple releases, let alone a decently large open source project. So we dedicate time at the beginning of the internship to branching, reviewing, merging and rebasing, culminating in real contributions to at least one of the Puppet Labs repositories. Yes, interns submit real contributions, and usually by the end of the second day (the first day is filled with HR onboarding). Working on those contributions spurs conversation about and development of automated tests: unit tests, integration tests, acceptance tests, oh my!
The specifics of the Real Work™ depends on the intern, the mentor, and the needs of the engineering team. But the goal is always the same: to create something valuable to the company that the interns can point to later and say, “I did that.” Plus, since much of the work is open source, they can follow up with “and here are the commits to prove it.”
Puppet Labs also strongly encourages engineering interns to present what they’ve worked on both inside and outside the company, including presenting multiple years at PuppetConf, and next month in the Testing and Automation track at FOSDEM.
- Former intern Brian Cain’s work with Puppet, Jenkins and Gatling garnered him a speaking spot at FOSDEM.
- Melissa Stone’s intern experience at Puppet Labs taught her how different professional software development work is from academic work — and led to a full-time position with us.
- Puppet Labs is filled with smart people who really enjoy working together. Take a look at our open positions — there may be one that’s just right for you.