B.S. in Computer Science, Computer Engineering, or a related technical field, or equivalent professional work experience. 5+ years proven experience developing software in a professional capacity. Longer experience preferred. 2+ years proven experience with Java, including proficiency in concurrency, memory management, and performance optimization techniques. Proficiency in OOP principles, data structures, algorithms, and software design patterns (e.g.
GoF), with a proven focus on implementing testable, maintainable, and extensible backend code. Experience building production applications with the Spring ecosystem (e.g. Spring Boot, Spring MVC, Spring Security, Spring Data, Spring Cloud, etc.), including proficiency in dependency injection, auto-configuration, reactive programming with WebFlux, and designing microservices using Spring-based patterns. Experience in API design and implementation, including proficiency in RESTful API principles, gRPC, GraphQL, contract-first design (e.g.
OpenAPI/Swagger, Protobuf, etc.), API versioning strategies, gateway patterns, rate limiting, and designing APIs for backward compatibility and long-term evolution. Experience with message-driven and event-driven architectures, including proficiency in messaging systems (e.g. Kafka, RabbitMQ, ActiveMQ, etc.), event sourcing, CQRS patterns, and designing reliable asynchronous communication between distributed services. Experience using relational (e.g.
Oracle, Postgres, MySQL, etc.) and NoSQL (e.g. Cassandra, MongoDB, etc.) databases, including proficiency in schema design, query optimization, performance tuning (e.g. execution plan analysis, indexing strategy, and query rewriting).