We're cultivating a unique and robust culture, and building a different type of company that’s focused not only on the bottom line, but also the happiness and personal growth of our customers and team along the journey.
DevOps Engineer Role
The Infrastructure team at Buffer is a small team of 4 entrusted with the responsibility of ensuring our product engineering teams can deliver a high-quality, reliable and secure service to our customers. This starts from the lowest level of deploying and maintaining our Kubernetes cluster(s) to building custom tooling for other engineers to automate workflows of development and deployment.
At Buffer Engineering, we embrace self-service DevOps. This means, that the Infrastructure team is not an “Ops team,” but a team always aiming to provide the tooling, monitoring, safeguards and automation to let our product engineering teams deliver software quickly and confidently. This is an engineering team which empowers other engineering teams.
As a team, we care about maintenance and security. We help ensure that dependencies, database versions and language environments are upgraded at a healthy and sustainable cadence. We believe any great product should be build on a solid foundation.
Who You'll Work With
In this role you’ll report to Colin, the Engineering Manager of the Infrastructure team. Day to day you’ll work closely with and be supported by your colleagues covering areas such as Site Reliability, Security & Compliance as well as our Kubernetes platform. More widely, this role will involve considerable collaboration and consultation with product engineers and product engineering managers to identify opportunities and find pain points in our current workflows.
What You'll Do
The mission of the Infrastructure team is to enable product teams to be successful. Ultimately, you’ll make the lives of our product engineers easier. You’ll help us to deliver a high quality product into the hands of our valued customers multiple times a day by helping engineers automate the process of building and shipping code from local development environments to testing to continuous deployment pipelines.
On a given day you might spend some time working with a product engineer to help prepare a new micro-service for deployment to our cluster, working through our production readiness checklist and ensuring the service is ready, while noting any ambiguities or inconsistencies in the process. Later you might continue adding some additional capabilities to our deployment pipeline to support some new workflows specific to python applications. You might finish the day by putting some final touches to a new tool you’ve been creating to help engineers identify services which are approaching scaling limits so we can perform any necessary work before it’s too late.
We strive to have a healthy mix of smaller, reactive tasks mixed in with more proactive longer term projects. Communication and education are key aspects of this role, and you will likely spend time creating written documentation or recording screencasts about our tools as well as actively seeking feedback via interviews or surveys.
Our Current Tech Stack
Here are some of the tools we currently use, and that you’ll be expected to work with, debug, or otherwise support. We’re always open to using something new if it’s a better tool for the job!
- Infrastructure: Kubernetes, Docker, AWS, Cloudflare
- Pipelines: Helm, Github Actions, Jenkins, Travis CI
- Scripting: Node.js, Python, Bash, Shell scripting, Infra-as-code (e.g. Terraform)
Helpful Skills and Experience
More important than specific technical skills, we are looking for someone who is eager to solve problems and do the work to identify those problems and then work collaboratively and creatively to solve them. We have existing CI/CD pipelines and local developer environment tooling and are always looking for ways to remove pain points and be more efficient, allowing product engineers to craft software with the confidence that it will work when it is deployed to production.
That said, we expect that the successful candidate will satisfy most of the following:
- An ability to work with underspecified and changing requirements and do the work necessary to uncover assumptions and find appropriate solutions.
- The confidence to work independently and to find a way forward when obstacles appear.
- A deep interest in delivering intuitive and reliable well-documented tools.
- Track record supporting and enabling engineering teams with developer tools (cli tools, designing and maintaining CI/CD pipelines, scripting and automation).
- Proficiency in debugging/troubleshooting complex systems and a strong growth mindset to learn and figure out unknowns.
- A track record in exercising good judgement around build-or-buy decisions for developer tooling (i.e. when to build a custom solution vs buying one off-the-shelf) is helpful, but not required.
- While we prioritize skill and interest over number of years of experience, successful applicants typically have least 3 years experience as an engineer working with cloud services & platforms. Experience working on SaaS solutions a bonus.