- Develop high quality software which meets requirements, promote re-use of software components and facilitates ease of support.
- Stay current with technology and form best practices.
- Gain good understanding of design patterns.
- Practice Agile development and become familiar with Continuous Improvement, Six Sigma Lean principles, and the Scaled Agile Framework.
- Learn to analyse, design and implement software mechanisms to improve code stability, performance, and reusability. Participate in code review sessions.
- Create high quality documentation, where necessary, for example functional specifications and unit test specifications.
- Practice TDD/BDD, conduct unit tests, track problems, and implement changes to ensure adherence to test plan for functional and non-functional requirements.
- Bachelor's Degree in Computer Science or related field
- 2+ years' experience in software design and development
- Some experience with the preferred technology stack (all or part of it):
o Microservice-oriented Java development
o Spring Framework, including Spring Boot
o Database Management Systems (NoSQL preferred), JPA, Hibernate
o Test Driven Development or Behaviour Driven Development (e.g. JUnit, JBehave, Cucumber)
- RESTful web services
- Great written and verbal communication skills
- Excellent teamwork and collaboration skills.
- Knowledge of software technologies:
o Java EE expertise, including servlet and JSP
o Cloud environments (Google Cloud Platform, AWS and Azure)
o Build and Deployment Pipeline technologies: Jenkins, Maven, Gradle, Chef, Docker, Nexus
- Experience of operating in an Agile development environment, familiarity with Agile principles and practices and support tools used in a development environment: