Position: Senior Java Engineer
Company: PandaDoc
Category: Java
Experience required: 5y
English level: intermediate

**In this role, you will:**

 - Collaborate with other Platform teams (DevOps, SecOps, Performance testing and QA automation). At PandaDoc we aim to have cross-team initiatives and connect engineers across the company to have better solutions based on their experience
 - Build and enhance frameworks and tools we use to build, test, configure, and ship PandaDoc (micro)services to our staging and production environments
 - Design, improve and integrate core systems and services, like logging, distributed tracing, monitoring, and alerting
 - Standardize and unify PandaDoc (micro)services in a way how they communicate, which frameworks they use, define their testability, etc.
 - Build and enhance Kubernetes deployments, automate various deployment processes, help product teams to build CI/CD processes
 - Be a change agent by recommending and introducing best practices for all PandaDoc engineers
 - Be an innovation advocate for the technical growth of PandaDoc
 - Share knowledge by writing documentation, making presentations and workshops

**Our Stack:**

 - Service-oriented architecture but be prepared to deal with legacy code as well and monolithic services based on Django framework
- Two main stacks: Java and Python
- Java services based on Spring Boot with custom extensions, Java 11 and Gradle as a build tool
 - Python services are mostly written using AsyncIO frameworks and libraries, but we also have Django-based services with Celery workers under the hood
Amazon Web Services
 - Main cross-service communication transports are NATS, Kafka, and RabbitMQ
 - Prometheus stack for monitoring and alerting
 - Jaeger for distributed tracing

**About you:**

 - At least 5+ years of development experience with Java
 - Experience with any relational databases (SQL queries, migrations, optimization)
 - Solid experience with message queues (e.g. RabbitMQ, Kafka)
 - Good understanding of the development cycle from requirements analysis and deployment to application monitoring
 - Hands-on experience in developing internal tools and packages
 - Hands-on experience in developing a service-oriented architecture
 - Hands-on experience with CI/CD
 - Good to have experience with Amazon Web Services and Kubernetes
 - Good to have experience with Prometheus and Grafana (designing dashboards and writing alerts)
 - Good to have open source contributions experience
 - Good to have basic knowledge of Go
 - Communicate effectively in English, both orally and in writing