高级Java开发工程师
Sr. Java Developer
职位概述:
软件开发团队负责为客户交易所设计和构建软件产品。开发团队在受监管行业的条件下,尽可能以集体的DevOps方式运作。开发人员还负责生产支持,以及在开发和修复错误时采用测试优先的方法,同时管理并维护构建和自动化测试环境。该职位将需要在团队中承担领导职责,主导商业和内部项目,带领小型开发团队,并履行编写新软件、维护我们的流程、性能和测试标准的核心职责。
要求:
8-12年相关经验
核心职责:
- 开发并维护对客户领域及相关金融市场的知识,并利用这些知识来挑战、优化和聚焦产品方向
- 维护并扩展与相关技术相关的知识和技能,包括客户内部开发的技术和第三方技术
- 采用客户现行的开发流程和实践,包括结对编程和轮岗
- 通过倡导积极的态度和乐趣感来保持团队的士气
- 努力实现年度绩效评估目标
- 维护并扩展自动化测试套件,以最大化测试覆盖率和价值,同时平衡可用时间和资源的使用
- 设计、开发和测试符合高标准技术和性能的软件组件,同时主动避免并尽可能减少技术债务
- 运用更丰富的经验指导团队决策并加速问题解决
- 在技术能力和流程遵守方面为同事树立榜样
- 为团队成员和其他同事在技术或流程问题上提供指导
- 测量、调查并优化软件和技术性能,包括正常运行和服务降级情况下的表现
- 对同事和试用期员工提供建设性反馈
- 平等参与开发团队的共享责任和排班,包括招聘、生产支持、为发布提供开发支持以及夜间值班支持
主流职责:
- 通过午餐分享、内部网络等方式与同事积极分享知识和技能
- 识别、上报并尽可能缓解可能影响交付或团队的潜在风险
- 推动一种文化
查看英文原文
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)
Originally posted on Himalayas