< TRAININGS & BOOTCAMPS />
Careers
We're looking for talented individuals who would like to thrive in a culture of learning, collaboration, and productivity.
O&B seeks to enhance the culture of learning throughout the organization through various employee programs. We bring knowledge sharing to our people using different avenues and expose them to growth opportunities.
[ CUSTOM SOFTWARE SOLUTIONS ]
Spring Boot (Java) Consultant/Senior Consultant (Work From Home)
Earn from 100,000.00 - 200,000.00 PHP monthly (based on experience)
O&B is growing! There has never been a better time to be in software consulting, and never a better time to work at O&B!
This role is “more senior than senior engineer”. What we mean by that is we expect you to be able to play a more active role as a consultant to our projects and clients. Consulting means using your knowledge and skills to proactively advise on the best technical solutions to business problems. Which also means being good at understanding business problems, and using effective communication to check your understanding, and propose solutions in a way that business people can understand.
O&B is a merit-based organization: we care more about what you can do than how many years experience you have.
Relevant skills include:
- Java
- English
- 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:
- Take pride in your English communication skills, and feel very comfortable discussing software and business requirements with native English speakers, especially those from “Western” countries such as UK, Australia, NZ, and the USA.
- Be intimately familiar with OOP principles and design methods, such as encapsulation, inheritance, polymorphism, and abstraction. You should have a good grasp of the fundamental Gang of Four Design Patterns, and how to implement them.
- Write clean, self-documenting code that is easy for others to understand.
- Be expert with all common data structures in the Collection API, and know when it is appropriate to use each one. You should always consider sorting/ordering requirements and efficiency when choosing a data structure.
- Have a working knowledge of concurrent programming (locks, synchronized methods, thread-safe code). You should be confident writing thread-safe code, and able to identify common scenarios involving starvation, livelock and deadlock, and know how to avoid them. You should consider what data structures are appropriate to each situation from a concurrency perspective. Bonus points for working knowledge of Completable Future<> with thenApply, thenCompose and other methods.
- Be comfortable using try-with-resources, and have a good understanding of streams and buffering. Ideally you should have working knowledge of deeper concerns such as encoding, and be able to spot code that is likely to cause a memory leak.
- Be competent writing SQL statements, using modern join techniques. You must absolutely have working knowledge of commit/rollback practices, ideally at the underlying JDBC level (eg. autocommit mode = false). You should know how to define database objects using CREATE, ALTER and DROP. Ideally you should know how to use correlated queries and modern SQL commands like LATERAL, CTE and windowing functions. You should be able to write stored procedures, and know when it’s best to use them. Bonus points if you can debug database-related issues such as slow query response, and can apply appropriate optimisation techniques to resolve such issues.
- Actively use data modeling techniques such as normalization to create data models based on business context and requirements. You should be able to read/write ER and UML diagrams to visualize data models, and better communicate with business stakeholders. You should be able to convert logical models into physical models. Bonus points if you can fine-tune a model by spotting inappropriate keys and db relationships, and indeed split a large model into logical groups/subject areas.
- Be able to map basic POJOs and more complex entities in JPA, using embeddable, inheritance, and mapped superclasses. You should know when and how to use projections to avoid retrieving unused data. You should be able to map database column types that are not supported in standard JPA (eg. JSON). Bonus points if you know how to use native SQL to use features not available in JQL (eg. windowing functions), and indeed when not to use JPA at all.
- Know how to use RowMapper, ResultSetExtractor, and RowCallbackHandler with JdbcTemplate. You should be able to explain the relationship between JdbcTemplate and thread safety. You should have strong working knowledge of the Transactional annotation and PlatformTransactionManager. Bonus points if you can use Spring’s TransactionTemplate as a programmatic alternative to declarative transactions.
- Know how to use Spring Boot starters and common application configuration properties, and be able to use test slices (eg. WebMvcTest, DataJpaTest). You should know how to override/exclude auto-configuration, and when it is appropriate. You should be able to create custom auto-configuration via META-INF/spring.factories, and Conditional annotations. You should have working knowledge of how config settings on the main method’s application class can affect test slices. Bonus points if you know how to configure Actuator for production-ready features like application performance monitoring, and how to create custom Actuator endpoints.
- 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. You should know how to write a test with Transactional, and how to use Mockito (BDD style) and MockBean. You should be able to use fluent-style assertions like those provided by AssertJ. You should be able to use framework support for unit testing; eg. ContextConfiguration, MockBean, DataJpaTest. Bonus points if you can integrate tests with Spring Rest Docs.
- Know how to create a custom UserDetailsService using Spring Security, and use the testing support provided (eg. WithMockUser annotation). Bonus points if you can configure Spring Security for OpenID Connect (OIDC), OAuth, and/or JWT, and how to configure WebClient or RestTemplate for token propagation (esp. for downstream services).
- Work with Maven or Gradle, including setting up project dependencies, and build from CLI.
- Handle DB schema migrations using Liquibase. Ideally you should know how to use XML or SQL formatted changelogs, and be able to generate changelogs without always relying on the diff command. You should create schema migration changes that coincide with changes to the code (eg. JPA entities), and actively test schema migration changes as you make them.
- Be comfortable working with containerised delivery, using Docker (both local and remote). Ideally you should have working knowledge of Docker Compose, and have some experience applying configuration management techniques.
- Be extremely comfortable working with a Linux shell (Bash, Zsh).
- Be extremely comfortable working with Git, especially from CLI. You should be very conversant with branching and merging. Ideally you should have working knowledge of using git rebase. Bonus points if you know how to use git submodules, and/or linear history.
- Ideally be comfortable working with Kubernetes, especially if you can configure, tune and set up new K8s environments.
Very highly regarded (though not essential, as we train our people in these skills):
- AWS
- Kubernetes
- Spring Cloud
- Spring WebMVC
- Spring WebFlux
- Patterns of Enterprise Architecture
BENEFITS:
- 15 days Vacation Leave (VL) per year
- 15 days Sick Leave (SL) per year
- 5 days Emergency Leave (EL) per year
- HMO (1 dependent)
- Cash conversion of unused VL
- Utility Allowance: P1,500/month
- Flu Vaccine Subsidy: P800/year
- Access to award-winning O&B University training courses: Java, Spring Boot, Agile, Enterprise Database Best Practices, Spring Cloud & Microservices, Test Automation, and more!
Apply today!
- Step 1: Click the Easy Apply button (you will need to upload your current CV)
- Step 2: Complete a skills self-assessment (online)... this helps us understand your current level in detail.
- Step 3: Complete an online technical test (multiple choice + some coding)... usually only takes 45-60 minutes to finish.
- Step 4: Technical Interview
- Step 5: Cultural Fit Interview
- Step 6: Job Offer!
We take pride in our reputation as the best Java engineers in the Philippines.
Join the O&B kapamilya, and surround yourself with smart, passionate developers just like you!
We can't wait to meet you!