Design and author robust platform components within a large-scale system.
Assist the Team Lead in requirements-gathering & analysis as well as solution research & design.
Produce code that is clean, scalable, modular, secure, well-structured, and testable.
Build (and help maintain) reusable components & libraries.
Influence application architecture and development processes.
Collaborate with other Developers throughout the entire SDLC.
Effectively communicate within the technical team as well as with stakeholders.
Adhere to industry best practices & standards for Agile/Scrum frameworks; this includes (but is not limited to) daily stand-ups, grooming, planning, retrospectives, sprint reviews, demos, and analytics via systems (JIRA) administration to directly support initiatives set by Product Management and the Organization at large.
Other duties may be assigned, as needed.
Basic & Preferred Qualifications:
Bachelor's degree in a technical field of study (e.g.: Computer Science, Software Engineering, etc.).
5+ years of professional experience in Software Engineering, Applications Development, Web Development, and/or Computer Programming.
Advanced expertise with Java OOP technology (e.g. Core Java, J2SE, J2EE, JEE, JSE, etc.); deep experience with writing enterprise-class Java components utilizing the Spring framework is strongly preferred.
Production experience with Microservices architectures using Spring Boot.
Experience with at least one Object-Relational Mapping [ORM] tool; experience with Hibernate is a plus.
Experience using, designing and building REST/Web Service API's.
Experience with API management and security (e.g.: OAuth, JWT to secure API's, etc.).
Experience with at least one RDBMS (e.g.: MySQL, PostgreSQL, RDS, Oracle, etc.).
Experience with at least one document-oriented DB (e.g.: MongoDB, CouchDB, etc.).
Experience with ESB and/or Message Queuing (e.g.: Apache Kafka, RabbitMQ, SQS, etc.).
Hands-on experience with Maven/Gradle projects.
Knowledge of containerization environments and infrastructure (e.g.: Docker, Kubernetes, etc.).
Familiarity with the full software development lifecycle with Agile methodologies in team environments; experience working with a "failing fast" approach is a plus1