Department : Engineering
Reports to : Lead Engineer, Puppet Core
Location : US Timezones
Summary of Role
Puppet Labs is looking for a great, passionate developer to work on our core open source projects for system automation. You can help out a growing company and team tackle the thorny problems of managing heterogeneous clusters of systems using elegant and reliable code. As part of a larger team, you'll help review and merge pull requests, mentor contributors, cultivate new developers within the community, and interact regularly with our user community.
If you want to be directly involved with open source software used on millions of systems every day, and work with one of the most widely deployed ruby code bases, then this is the job for you!
This role involves digging into the depths of various operating systems and packaging systems. We often deal with Solaris, various flavors of Linux, Windows, and just about anything under the sun that runs software. Much of what we do is in Ruby, but we also interact with Clojure, Python, Bash, and will sometimes find ourselves in C. Qualifications You dream in code. Not kafka-esque nightmares, but amazing worlds of unicorns, rainbows, and Lamport timestamps. You guide the rest of the world to your dream world by showing us the data and explaining how to get there. You have a passion for building open source communities. You're willing to mentor those with less development experience, love "teaching people to fish", and can communicate with users professionally and effectively. You cultivate a sense of "good taste" for a project and use it to make technical decisions, justify trade-offs, accept or reject patches, and decide whether to ship now or ship later. You are fluent in a high-level programming language and enjoy curling up at night with a good listing. You believe that the only way to go fast is to go well and regularly consider performance and portability issues, refactor mercilessly, and generally care about the details of the craft. You are familiar with Distributed Version Control, issue trackers, mailing lists, IRC and the other common tools among open-source users and developers.
To get this position you'll need to show us what you can do! Can you write clean, maintainable, tested code that encodes your understanding of the problem domain so that others can understand it too? If you think you can, then send it in along with your resume. We'd love to see how you think code should be written. There are a few different ways you can accomplish this:
Open one or more pull requests against Puppet Labs projects
Show us some code you've written
Complete a programming exercise Submit a Pull Request
The absolute best way to show us what you can do is to submit fixes/changes to one of the open source projects we develop at Puppet Labs. You can find all of our publicly available source code on our Github page: https://github.com/puppetlabs . While we've got a ton of content there, the main projects are:
Download our code, find something that you think could be fixed, then send us a pull request! If you need some ideas on what to go after, you can look at our bug tracker at http://projects.puppetlabs.com/ .
When you submit your application, please include links to any of the pull requests you've filed so we can take a look! Portfolio
The next best option is to point us at some code you've written that you think shows off what you can do. This could be some open source code you've written in the past, random projects you've been hacking on your own, code from previous jobs you're allowed to share with us, code you discuss on your blog, or basically anything else that affords us the ability to see some actual code you've written.
When you submit your application, please include links to the code you'd like us to take a look at so we can check it out! Programming Exercise
Write a program that will help automate code reviews of pull requests to our GitHub repositories. We are command line people, so this should be a command line application, but you can write it in whatever language and using whatever libraries you think are best. Show us the way that you think software should be written. The minimum that we expect is that it will work.
Using the GitHub api (documented at https://api.github.com/ ) write a program that will scan the currently open pull requests for a specified project and reports whether or not the open pull request contain "interesting items", which will be explained below. Bonus points if the report also contains which "interesting item(s)" showed up and where.
The Interesting Items:
Does not contain changes to any files in the "spec/" directory
Any added or deleted lines contain the follow words (not as substrings of larger words):
Any change to the files
> review puppetlabs/puppet
https://github.com/puppetlabs/puppet/pull/16663 - Interesting
https://github.com/puppetlabs/puppet/pull/16600 - Not Interesting
https://github.com/puppetlabs/puppet/pull/16598 - Not Interesting
When you submit your application, please include a link to a Github repository with your solution, or a link to an archive we can download that has your code in it.
Working for Puppet Labs
Based in Portland, Oregon, Puppet Labs creates IT automation software which enables system administrators to deliver the operational agility and efficiency of cloud computing at enterprise-class service levels, scaling from handfuls of nodes on-premise to tens of thousands in the cloud. Puppet powers thousands of companies, including Twitter, Yelp, eBay, Zynga, JP Morgan Chase, Bank of America, Google, Disney, Citrix, Oracle, and Viacom. Our investors include Kleiner Perkins Caufield & Byers, True Ventures, Radar Partners, Emerson St. Partners, VMware, Google Ventures, and Cisco.
Everyone who works at Puppet Labs has a direct impact on the company. The work environment is relaxed yet results-driven, encouraging creativity and collaboration. The list of interesting and difficult challenges will always be larger than the time to tackle them, and the community culture fosters continuous improvement. Puppet employees embody our values, displaying curiosity, self-motivation, adaptability, and a passion for what Puppet is all about.
Puppet Labs employs staff in areas including Development, Professional Services, Operations Engineering, Solutions, Marketing, Sales, Finance, HR, and Administration. We offer awesome benefits and perks to our employees, including health insurance, flexible spending accounts, 401(k), paid time off, stock options, casual dress code, flexible work hours, free snacks & drinks, in-office bike rack, a dog-friendly work environment and much more.
Based in Portland, Oregon, Puppet Labs creates IT automation software which enables system administrators to deliver the operational agility...