About the job Sr. Java Developer
Job Summary:
The Software Development Team is responsible for designing and building the software products for Client exchange. The Development team operates in as much of a collective devops manner as is possible for a regulated industry. Developers are also responsible for production support and a test first approach to development and bug fixes as well as managing and maintaining the build and automated testing environments. This role will be expected to take on leadership elements within the team leading commercial and internal projects and leading small teams of developers as well as the core responsibilities of writing new software and maintaining our process, performance and testing standards.
Requirements:
8 - 12 Years of Relevant Experience
Core:
- Develop and maintain knowledge of Client domain and related financial markets and use this knowledge to challenge, refine and focus product direction
- Maintain and extend knowledge of and skills in relevant technologies including those developed within Client and by third parties
- Adopt prevailing Client development process and practises including pairing and rotation
- Help ensure the team remains motivated by promoting a positive attitude and sense of fun
- Strive to achieve annual performance review goals as agreed
- Maintain and extend the automated test suite to maximise the coverage and value of testing while balancing use of available time and resources
- Design, develop and test software components to exacting technical and performance
- standards while actively avoiding and where possible reducing technical debt
- Apply greater experience to guide team decision making and accelerate problem solving
- Act as an example to colleagues in terms of technology skills and process adherence
- Provide mentoring to team members and other colleagues on technology or process matters
- Measure, investigate and optimise software and technical performance in both normal operation and in the case of degraded service
- Provide constructive feedback on colleagues and probationers
- Participate equitably in development team shared responsibilities and rotas including recruitment, production support, providing developer support for releases and out of hourson-call support
Mainstream:
- Actively share knowledge and skills with colleagues through brown bags, intranet, etc.
- Identify, escalate and where possible mitigate potential risks that might impact delivery or the team
- Promote a culture of uncompromising high standards for delivery where shortcuts are avoided and team members recognise it as normal to do the right thing
- Engage in Client technical PR e.g. occasional blogging or external talks
- Provide any relevant feedback whether positive or negative directly to team members as early as possible
- Work with Business Analysts and Business Stakeholders to help identify, define and elaborate functional and non-functional requirements for epics and user stories
- Work with Business Analysts to iteratively design solutions and formulate risk aware approaches for their delivery
- Contribute to innovation, maintenance and extension of Client processes, tools and technologies
Once more advanced into the role:
- Develop and maintain an in-depth understanding of the domain, architecture and a significant subset of the codebase
- Develop, maintain and share in depth technology expertise in one or more areas
- Provide leadership and management input on technology strategy and risk management
- Drive innovation in technology, tools or processes
- Instigate and progress relevant improvement initiatives
- Play an active part in influencing the formulation and adoption of processes and best practises
- Establish and maintain a technology reputation beyond Client by regular blogging and/or regular external talks at prominent events
- Participate in and contribute to Client open source initiatives
- Identify, diagnose and resolve software defects and production issues providing fixes or workarounds as necessary and mitigating or remediating any associated impact
- Measure, investigate and optimise software and technical performance in both normal operation and in the case of degraded service
- Participate equitably in development team shared responsibilities and rotas including recruitment, production support, providing developer support for releases and out of hourson-call support
- Contribute to the on-going improvement of the overall system design and architecture
- Develop and maintain a broad understanding of the codebase that is also deep in some areas
- Develop and share subject matter expertise in one or more technology, tooling or business domain areas
- Play a part in recruitment including some line management responsibilities from time to time
Our tech stack:
Backend: distributed, event-driven core Java (90% of the code base), MySQL
Frontend: Javascript, Vue.js
Data analytics: Python & Jupyter notebooks, Parquet, Docker
Blockchain integrations: Bitcoin (& Litecoin, Bitcoin Cash), Ethereum and XRP (Ripple)
Testing: JUnit, Mockito, JMH, JCStress, Jenkins, Selenium, many in-house tools...
OS: Linux (CentOS)