Desired Skills and Experience
- Writing production-quality, tested code.
- Understanding the code base for your components in depth.
- Understand architecture and deployment framework for robust operation.
- Producing technical designs and documentation at varying levels of granularity.
- Collaborating with our quality assurance and technical operations teams to provide outstanding customer service.
- Resisting the accrual of “technical debt” in our systems.
- Participating in code reviews and helping the team to be effective and agile.
- Staying educated on technical developments and tools.
- BS in Computer Science, Computer Engineering or related technical field.
- 4+ years of relevant work experience, including programming experience and strong devops experience.
- Experience as part of a team doing state-of-the art, object-oriented software development including continuous integration, test-driven-development, automated unit and integration testing.
- Experience with SQL, noSQL, and distributed databases and caching.
- Experience administering distributed queues such as Kafka or RabbitMQ.
- Experience with cloud computing infrastructure such as OpenStack or AWS.
- Knowledge of micro services architecture and container orchestration frameworks such as Docker, Nomad, Kubernetes, or Mesos.
- Experience with configuration management tools such as Puppet, Chef
- In depth knowledge of UNIX/Linux: facility with command-line utilities; familiarity with system administration tools and concepts.
- Experience identifying performance issues on Linux machines CPU, memory, disk
- Linux networking expertise, such as investigating network traffic, port forwarding, tuning OS parameters
- Experience with centralized logging systems, metrics, and tooling frameworks such as Splunk, Prometheus, and Grafana.
- Experience with versioning tools. GIT a plus.
- Experience with administering Jenkins a plus.
- Experience with Agile development methodologies and practices.
- Strong initiative: must be able to take high-level requirements, ask questions and get clarifications, decompose into deliverable components, design and implement solution to meet functional, performance, and quality acceptance criteria.
- Excellent communication: must be a good listener, willing to ask questions, and able to clearly communicate ideas with team members and external groups.