Sr. Java DeveloperNew York, New York, United StatesJob SummaryThe 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.Requirements8 - 12 Years of Relevant ExperienceCore:Develop and maintain knowledge of Client domain and related financial markets and use this knowledge to challenge, refine and focus product directionMaintain and extend knowledge of and skills in relevant technologies including those developed within Client and by third partiesAdopt prevailing Client development process and practises including pairing and rotationHelp ensure the team remains motivated by promoting a positive attitude and sense of funStrive to achieve annual performance review goals as agreedMaintain and extend the automated test suite to maximise the coverage and value of testing while balancing use of available time and resourcesDesign, develop and test software components to exacting technical and performance standards while actively avoiding and where possible reducing technical debtApply greater experience to guide team decision making and accelerate problem solvingAct as an example to colleagues in terms of technology skills and process adherenceProvide mentoring to team members and other colleagues on technology or process mattersMeasure, investigate and optimise software and technical performance in both normal operation and in the case of degraded serviceProvide constructive feedback on colleagues and probationersParticipate equitably in development team shared responsibilities and rotas including recruitment, production support, providing developer support for releases and out of hours on-call supportMainstream: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 teamPromote a culture of uncompromising high standards for delivery where shortcuts are avoided and team members recognise it as normal to do the right thingEngage in Client technical PR e.g. occasional blogging or external talksProvide any relevant feedback whether positive or negative directly to team members as early as possibleWork with Business Analysts and Business Stakeholders to help identify, define and elaborate functional and non-functional requirements for epics and user storiesWork with Business Analysts to iteratively design solutions and formulate risk aware approaches for their deliveryContribute to innovation, maintenance and extension of Client processes, tools and technologiesOnce More Advanced Into The Role:Develop and maintain an in-depth understanding of the domain, architecture and a significant subset of the codebaseDevelop, maintain and share in depth technology expertise in one or more areasProvide leadership and management input on technology strategy and risk managementDrive innovation in technology, tools or processesInstigate and progress relevant improvement initiativesPlay an active part in influencing the formulation and adoption of processes and best practisesEstablish and maintain a technology reputation beyond Client by regular blogging and/or regular external talks at prominent eventsParticipate in and contribute to Client open source initiativesIdentify, diagnose and resolve software defects and production issues providing fixes or workarounds as necessary and mitigating or remediating any associated impactMeasure, investigate and optimise software and technical performance in both normal operation and in the case of degraded serviceParticipate equitably in development team shared responsibilities and rotas including recruitment, production support, providing developer support for releases and out of hours on-call supportContribute to the on-going improvement of the overall system design and architectureDevelop and maintain a broad understanding of the codebase that is also deep in some areasDevelop and share subject matter expertise in one or more technology, tooling or business domain areasPlay a part in recruitment including some line management responsibilities from time to timeOur Tech StackBackend: distributed, event-driven core Java (90% of the code base), MySQLFrontend: Javascript, Vue.jsData analytics: Python & Jupyter notebooks, Parquet, DockerBlockchain integrations: Bitcoin (& Litecoin, Bitcoin Cash), Ethereum and XRP (Ripple)Testing: JUnit, Mockito, JMH, JCStress, Jenkins, Selenium, many in-house tools...OS: Linux (CentOS)Or refer someone