- Role Purpose
- Build and maintain robust, highly available, secure, testable systems.
- Become a valuable member of a small, highly-skilled, multi-disciplinary, agile team.
- Deliver business value in a fast-paced, continuously evolving environment.
- Contribute to all phases of the product lifecycle, from helping define requirements through to design, build, test, release & support.
- Help highlight & promote how technical solutions can drive the business forward.
- Main Accountabilities
- Build and maintain the business’ websites and systems to the highest possible standard
- Work collaboratively as part of an agile team to deliver business value
- Contribute to the team goals beyond developing the systems (for example, taking on additional responsibilities)
- Help design, build & maintain the underlying technical infrastructure that supports the business’ systems
- Support & mentor your colleagues
- Use your full experience to help shape the future of the business and the products developed
- Knowledge & Expertise
- Technical
- Strong experience developing Java 11+ webapps
- Experience of Spring libraries, e.g. Core, Security
- Knowledge of relational databases & SQL operations.
- Knowledge of NoSQL databases (e.g. MongoDB)
- Experience in designing RESTful APIs and integrating with various other API protocols
- Strong experience with web libraries & frameworks, particularly TypeScript & Angular (2+)
- Experience with setup and management of Continuous Integration tools such as Jenkins, Maven, Node, NPM, Webkit, Gulp, Grunt etc. for creating automated build systems and task runners
- Experience working with Linux servers, including basic shell commands.
- Experience with one or more cloud infrastructure providers, especially AWS
- Experience working with various modern web servers such as Apache2 or NginX
- Experience writing testable code with a high degree of automated test coverage, preferably using test-driven development
- Solid experience using common Object-Oriented design patterns
- Knowledge of the importance of secure coding practices
- Able to write clear and accurate technical documentation for internal use.
- Experience with Git or other similar SCM
- Professional
- Ability to identify and analyse user requirements
- Ability to break-down tasks and estimate levels of effort
- Good delegation and time management skills
- Able to communicate clearly to a wide range of technical and non-technical stakeholders
- Ability to deliver and receive constructive feedback through code reviews & by other means
Problem Solving
- Able to identify and analyse problems systematically.
- Familiar with debugging, prototyping and other techniques to help identify root causes of problems.
- Comfortable working outside their current realm of experience, using new tools & techniques to solve complex problems.
- Can analyse, present, and justify recommendations, backed by research and sound reasoning.
Experience, qualifications and other requirements specific to the role
- 5+ years of work experience developing Java software and web applications
Nice to have:
- Experience in design and implementation of microservices architectures
- Experience in Cloud and containerisation technology as well as Serverless, preferably in the AWS environment
- Comfortable taking on tasks in languages and systems outside their area of expertise (for example, Python, infrastructure-as-code, etc)