DevOps Engineer
The IHMC Robotics group is looking to fill a DevOps position. The ideal candidate is somebody who is excited about bringing our lab up to speed on how to best use modern solutions for making our software development and release process super repeatable, reliable, and painless. This is a full-time position. We are huge proponents of strong software engineering practices, leveraging the philosophies of test-driven development, continuous delivery/integration, agile programming, repeatable deployments, and many others that make managing diverse teams and complex software easier. Specifically, the DevOps engineer we’re looking for is awesome at:
• Automation. Of everything. An obsession with making every aspect of the development and deployment pipeline painless, testable, repeatable, and reliable is a must-have.
• Provisioning and configuration management using tools like Puppet, Chef, Ansible, Salt, etc. The tool of choice is open to discussion, but being comfortable with a provisioning oriented workflow is a must.
• Automated Continuous Integration and Continuous Delivery. As a Java shop, we use Gradle as our build system. We are just now beginning to migrate to a full continuous delivery workflow; our builds are becoming more automated with regards to artifact generation, artifact hosting, and integration with tools like Docker. The ideal candidate would be willing to grow a system like this in to something with high reliability so it can be a cornerstone of our open source software workflow. Being test-obsessed is desired, both for making sure our CI stack is doing its job and making sure that your infrastructure automation is just as well tested.
• Management and installation of tools. Experience with the tools of the trade for self-hosting DevOps stacks is a must, as a lot of our infrastructure is in house rather than in the cloud. Experience with administering a wide variety of off-the-shelf tools is a win.
• Grade-A support and communication skills. Being able to clarify and troubleshoot with the developers that consume the end-products of your pipeline is a must, both as somebody interfacing with the developers in the lab and with the users of the open-source software.
• Tool Development. Maybe the right tool for the job doesn’t exist, and you’re not afraid to roll up your sleeves and put something together yourself if it’ll meet the needs of the team.
You would be supporting a team that develops software almost completely in Java, and across three major operating systems (Windows, OS X, and Ubuntu). We do occasionally have native components, so when it comes to build management being able to orchestrate and automate across all three OS’s is required. Our existing stack is centered around Atlassian products: Crowd, Bamboo, Confluence, JIRA, FishEye + Crucible, Stash. We host our code internally on Stash, but we are also an open-source shop so coordinating automation between the local repositories and our cloud-hosted open source code is also part of the job. Some examples of other technology we use are Docker, Artifactory, Gradle, Apache, and nginx. This list will change and possibly grow under your guidance. We are open to adding more tools and are open to engineers with additional experience not mentioned if it aids in the job. We are open-source friendly and are open to engineers developing tools in-house for public consumption.
To Apply: Email to robotjobs@ihmc.us the following:
- Your resume
- An example of a system or tools previously worked on. This can include a written description of such a system, a link to a publicly available project (e.g. GitHub, Bitbucket, personal website), or something like a blog post that you wrote for your previous company’s engineering blog.
- A one page essay describing an interesting/challenging/fun element of infrastructure you were able to improve/automate during previous DevOps work, either on a personal project or at another job.
**Application is considered incomplete until all three items are submitted.**