Java Software Engineer (Home based)
Our client is recruiting for a Java Software Engineer to join our team on a permanent full-time basis. The post holder will be predominantly home-based, but the role may require occasional travel anywhere within the UK, and at times you may need to stay away from home.
The Java Software Engineer will be working on an exciting mix of customer-facing delivery work streams and innovative open-source projects, as well as supporting our mathematicians and data scientists in cutting-edge artificial intelligence-related research and development, and technical pre-sales activities. Specifically, the Java Software Engineer will be responsible for:Responsibilities
- Designing, building, testing and deploying Spring-based Java services including repository-style data access layers, RESTful web services, data modelling and processing pipelines, and real-time event-driven applications.
- Working closely with data scientists and artificial intelligence researchers to support the development of network-based modelling and analysis services using the Java-based Apache TinkerPop distributed graph computing framework.
- Working closely with technical architects, data architects, security architects, application architects, technical leads and product owners to translate relevant logical and physical designs to testable agile delivery tasks, and providing feedback on and contributing towards relevant design artifacts.
- Working closely with platform engineers to provision, support and optimise the performance of managed cloud computing services such as storage, SQL and NoSQL database, streaming, search, API management, serverless compute and CI/CD services.
- Assisting with internal technical pre-sales activities, including creating rapid prototypes for demos and providing content for blog articles, presentations and written responses to RFPs and other sales opportunities.
- Developing open-source software projects maintained or supported by our client in collaboration with our partners and members of the open source community.
- Proposing and championing innovative ideas for digital solutions that deliver positive social impact, and then designing and building rapid prototypes to prove your hypotheses.
- Person Profile
We encourage applications from software engineers with 2 years' experience or more in developing Spring-based Java applications, who are passionate about open-source software projects and open computing, who have excellent communication and collaboration skills, and who are comfortable working in a client-facing consultative capacity as part of genuinely multidisciplinary agile delivery teams.
If you have slightly less than 2 years' experience or have not applied some of the essential skills listed below in section 4. Skills and Experience in a professional capacity (for example, perhaps you have professional experience using Spring Boot but have only dabbled with the development of RESTful web services through personal projects and self-directed learning), as long as you are eager to learn, passionate about applying computing to solve real-world problems, and enjoy blue sky thinking with the goal of proposing and championing innovative ideas for prototypes that deliver positive social impact, then we would love for you to apply.
As a small but growing start-up organisation who strive to always put people first, enthusiasm, passion, dedication, collaboration, creativity and innovation, compassion and respect for colleagues, and a willingness to learn and grow with the company are all values that are infinitely more important to us than deep levels of expertise across a range of technologies. The latter can always be taught and gained through project delivery, and we will invest in the successful candidate to cover any gaps in their knowledge.
- Skills and Experience
Essential skills and experience (at least eight of the following, ideally in a professional capacity but experience gained through personal projects and self-directed learning will also be considered):
- Experience of developing Java-based services and applications using Java 11 or onwards.
- Experience of developing Java-based services and applications using the Spring Boot framework.
- Experience of developing JPA-based data access layers and implementing JPA-based repositories using Spring Data JPA.
- Experience of developing REST APIs using the Spring Framework.
- Experience of Test-Driven Development in Java using JUnit and Mockito.
- Experience of using Apache Maven for Java project build automation.
- Experience of developing queries against relational data stores using SQL (or via repository-style data access layers).
- Experience of using Git and Git-based services such as GitHub, GitLab, BitBucket or cloud platform managed equivalents such as AWS CodeCommit.
- Understanding of coding best-practices, design patterns and secure-by-default programming.
- Experience of working with platform engineers, test engineers, data engineers and other software engineers to provision, support, optimise and troubleshoot on-premise and/or cloud-based managed compute and storage services.
Nice-to-have skills and experience:
- Experience of Elasticsearch, including using the Elasticsearch REST API, the Elasticsearch Java API Client and/or Spring Data Elasticsearch.
- Knowledge of other programming languages for functional or object-oriented programming (in addition to Java), such as Python (preferred), C++, Golang and/or Scala.
- Experience of deploying Java-based services and applications to one or more cloud computing platforms, such as AWS or Microsoft Azure.
- Experience of developing authentication and authorization services for Java applications using the Spring Security framework.
- Experience of provisioning and using CI/CD tooling to analyse, build, test and deploy your code.
- Experience of working with technical architects, data architects, security architects and/or application architects to assess and provide feedback on logical and physical design artifacts.
- An interest in machine learning, artificial intelligence, graph theory/network analysis and/or distributed graph computing frameworks.
- Salary and Benefits
We offer the following salary and employee benefits for this role:
- Base salary between £32,000.00 - £35,000.00 per annum.
- Salary exchange contributory pension scheme with 3% employer contribution and 5% employee contribution.
- 25 days of holiday every calendar year.
- Non-contributory private medical insurance.
- Non-contributory private dental insurance.
- Discretionary company bonus based on company and individual performance.
- Dedicated funding for R&D proposals that aim to build solutions to combat either climate change or economic inequality.