Executive recruitment company Monroe Consulting Group Philippines is recruiting on behalf of software development company.
Job Summary
Our respected client is seeking a Mid/Senior Level Java Spring Boot developer of the highest professional for the job of Java Spring Boot Engineer.
The Java Spring Boot Engineer is expected to assume the responsibility of a programmer and consultant whose responsibilities involve the implementation of and assisting/advising on the software development process.
Key job responsibilities:
Software Development
- Initiates open discussions with the clients to get a better understanding of their needs.
- Assists in designing software to ensure that the most suitable solutions are built to meet the client's needs and business value.
- Works with clients to resolve issues and impediments by providing appropriate solutions and recommendations.
- Collaborates with teammates and other stakeholders to get the best output of the software.
- Implements best practices in software development such as testing, self-documenting code, and other practices necessary for delivering a sustainable and working software.
- Evaluates and constantly improves implementation of software practices.
Client Management
- Adapts to the clients' environment and culture by following the dress code and working hours.
- Understands, handles, and manages clients' expectation; and
- Encourages clients towards the implementation of best practices into their software engineering.
Key job requirements:
- Java
- Spring Framework, including:
- Spring Boot (strongly preferred)
- Spring Data JPA (with knowledge of underlying JPA strongly preferred)
- Spring Cloud
- Spring Security
- Data Modeling and Normalization
- Data Schema Migration, including:
- Liquibase
- Flyway
- SQL
- HTML/CSS and enough JS to make you dangerous :)
- Git
- Docker
- AWS
- Kubernetes
- Agile Development (Scrum, XP)
Some key things we look for are:
- Test-driven development (TDD), or at least strong unit testing skills.
- Strong working knowledge of OOP.
- Strong working knowledge of databases, data modeling, JPA and SQL.
You should:
- Be conversant with OOP principles and design methods, such as encapsulation, inheritance, polymorphism, and abstraction.
- Write clean code that is easy for others to understand.
- Be familiar with common data structures in the Collection API and know when it is appropriate to use each one.
- Have a working knowledge of concurrent programming (locks, synchronized methods, thread-safe code).
- Be comfortable using try-with-resources and have a good understanding of streams and buffering.
- Be competent writing SQL statements, using modern join techniques. Working knowledge of commit/rollback is highly regarded.
- Understand the basic principles of data modeling, including normalization. Ideally you can read/write ER diagrams.
- Know how to use Spring Boot starters and common application configuration properties, and ideally be able to use test slices (eg. WebMvcTest, DataJpaTest), and know how to override/exclude auto-configuration.
- Consistently write unit tests that follow FIRST principles, and ideally be a TDD practitioner. You should at least be able to write tests that start a Spring application context, and wire Spring-managed beans into tests. Extra points for knowing how to write a test with Transactional. Extra points for knowing how to use Mockito and MockBean.
- Know how to use RowMapper, ResultSetExtractor, and RowCallbackHandler with JdbcTemplate. Extra points for working knowledge of Transactional.
- Work with Maven or Gradle, including setting up project dependencies, and build from CLI.
- Handle DB schema migrations using Liquibase.
- Be comfortable working with basic containerised delivery, using Docker (both local and remote).
- Be extremely comfortable working with a Linux shell (Bash, Zsh).
- Very highly regarded (though not essential, as we train our people in these skills):
- AWS
- Kubernetes
- Spring Cloud
- Spring WebMVC
- Spring WebFlux
- Architectural Design Patterns (GoF, Enterprise Architecture)