Senior Java Developer

General Description
We are looking for Java Developers to join our Product Team to implement
new functionality and improve the current learning platform for the future.
You will work with the Product / Technology Team to develop and maintain
cutting-edge applications for our online learning platform. As a Senior Java
Developer, you will analyze, design, develop, and integrate products according
to stakeholder needs.
Duties and Responsibilities
- Research, design, code, document and test new programs.
- Develop implementation of complex, multi-tier distributed software
applications;
- Interpret the business requirements, usability feedback results, and
functional specifications to make technical recommendations;
- Analyze software requirements to determine the feasibility of design
within time and cost constraints;
- Work with the Architect, Project Manager, and Product Technical Lead
within the organization to implement agreed-upon designs;
- Collaborate with internal partners on technical issues;
- Analyze and provide recommendations;
- Work with senior leaders to establish strategies, projects, plans, and
project budgets.
- Anticipating risks of any task. Propose solutions and mitigation plans
except in cases of great complexity.
- Keep current on the issues inherent in their work and transmit their
knowledge proactively.


- To have advanced knowledge of all the tools and concepts related to
the project.
- To be responsible for product definition, and offer added-value ideas.
- To assist in the enforcement of development deadlines and schedules
under Agile Methodologies.
- To develop ensuring strong functionality and optimization; follow
coding standard protocols.
- To create and implement automated unit test scripts.
Requirements
- 6+ years of professional experience developing and maintaining
complex Java/J2EE web applications in a dynamic and fast-paced
environment. (JDK 9 is required)
- 3+ years developing using Spring frameworks (Spring 5, SpringBoot)
and Hibernate.
- Experience in distributed multi-tier systems and client-server
architectures is required.
- Experience with Hibernate; Creating entities; Using annotations for
mapping; defining a one-to-one, one-to-many, and many-to-many
relationship.
- RDBMS experience with databases like Postgres, MySQL, etc.
- Experience with developing RESTful microservices.
- JSON experience while using JSON as your encoding protocol; Turning
JSON data into Java Objects; Experience using the Jackson JSON library
(https://github.com/FasterXML/jackson) or other JSON library; and
converting data between various encoding protocols, JSON -> XML
- Experience with Maven to create multi-module projects; Working with a
corporate artifact repository; customizing pom files, adding plugins,
moving dependencies and plugins between pom files; and experience
maintaining local settings.xml file.
- Knowledge of Jenkins to create jobs; Parameterized jobs; and triggering
one build job from another.
- Unit Testing Experience with JUnit,
- JMS knowledge related to point-to-point (queue) v. pub-sub (topic) in
JMS;
- Fluency in English Language


Additional Attributes
- Problem-solving skills.
- Independent, ability to work on your own without a lot of help or
supervision.
- Good work ethic.
- Strong sense of responsibility.
- Willing to learn.
Good to have
- Experience with SpringBoot and Liquibase.
- Experience in working with Javascript frameworks (Backbone and
Angular/React) for front-end applications.
- Experience with AWS services.
- Experience with GraphQL.