NGINX / F5 | Solutions Engineer | Remote, USA & Canada NGINX Community and Alliances Team
Do you love all things DevOps and are you tired of carrying a (metaphorical) pager? Come join our team and design infrastructure the way you think it should be done.
In this team, we are responsible for establishing relationships and building solutions with NGINX’s largest strategic alliances, broad ecosystem of module partners, and open source partners. The team is involved in projects that expand the reach, relevance, and interoperability of the NGINX products.
We are a small, dynamic team of dedicated Solution Engineers/Architects, Alliance Managers, and Open Source Community Managers and Evangelists. Our culture is built on teamwork, self-discipline, ownership, and humility. In this team, we have the chance to work on strategic products that have the potential to change the trajectory of the whole company.
We are passionate about promoting all things open source, both externally and inside the company!
In this role, you will be designing, implementing, and creating reproducible deployments of software systems and infrastructure published as open source references. As such, in this role you will have the freedom (and responsibility) to integrate production-ready practices and focus on the utility of projects as they are used by people trying to build applications but not able to make sense of the complexities common in modern applications. Generally, timelines are flexible, there is no need to carry a pager, and there is creative freedom to work within a project’s mission.
Typically, Solution Engineers have a history of working with at least three programming languages. They can offer an informed opinion regarding the trade-offs between static, dynamic and functional programming language features. They understand the principles of modular application architecture. Ideally, they understand algorithmic performance and can explain computational complexity. Moreover, they understand the real-world performance characteristics such as locking, Amdahl's law, and all the dirty things that happen when you run a program on hardware in the physical universe.
In addition to working on software systems, Solutions Engineers will be designing the infrastructure upon which the software runs. The team takes the approach of treating infrastructure as code and gives care to provide examples of working software and the infrastructure in which it is run. An understanding of the trade-offs between bare-metal, hardware virtualization, and containers is needed, and a Solutions Engineer can explain how you would create immutable infrastructure using any of the platforms. Conceptually, they understand L2-3 networking technologies and implementations of common L7 protocols, such that they know how compute instances communicate on a network.
Moreover, a Solution Engineer will have an interest in distributed systems, high availability patterns, cloud computing and debugging/tracing in production. They can articulate why one would or would not run Kubernetes depending on a use case, the trade-offs involved in microservices versus monoliths, and the benefits/drawbacks of cloud platforms. A Solutions Engineer will have built with Continuous Integration (CI) and Continuous Deployment (CD) systems in the past, and ideally understand the importance of mean time to repair (MTTR) and mean time to failure (MTTF).
An ideal candidate will have lived the pain of managing production systems and developed a pragmatic attitude towards shaping systems to be less fragile. This role will be an opportunity for them to share this experience with the wider community through work on reference architectures.