Job Responsibilities:
- Execute creative software solutions, design, development, and technical troubleshooting with the ability to think beyond routine or conventional approaches to build solutions or break down technical problems.
- Develop secure, high-quality production code in Java, and review and debug code written by others to ensure adherence to best practices and performance standards.
- Design and implement algorithmic trading strategies, focusing on optimizing execution and performance in a low-touch trading environment.
- Collaborate with the product team to translate trading strategies into efficient and scalable algorithms.
- Continuously improve and refactor existing codebases to enhance performance, implement comprehensive testing, and ensure the reliability of trading systems.
- Contribute to a team culture of diversity, equity, inclusion, and respect, fostering an environment where innovative ideas and diverse perspectives are valued.
Required Qualifications, Capabilities, and Skills:
- Formal training or certification on software engineering concepts and proficient advanced experience developing in Java.
- Hands-on practical experience delivering system design, application development, testing, and operational stability.
- Advanced in one or more programming language(s).
- Proficiency in automation and continuous delivery methods.
- Proficient in all aspects of the Software Development Life Cycle.
- Experience with algorithmic trading systems and familiarity with trading protocols such as FIX.
- Practical experience with performance optimization and low-touch system design.
- Strong understanding of data structures, algorithms, and multithreading in Java.
- Familiarity with financial markets and trading concepts, particularly in equities and options.
Preferred Qualifications, Capabilities, and Skills:
- Experience in designing and implementing high-performance, low-touch trading systems.
- Ability to troubleshoot complex software issues and optimize application performance and reliability.
- Experience with messaging systems such as AMPS or Kafka, particularly in the context of real-time data streaming and processing.
- Experience with Cucumber for behavior-driven development (BDD) and testing, particularly in Java environments.
- Experience with automation tools and scripting languages (e.g., Python, Shell) to streamline testing and reporting.
- Proficiency in working with Linux operating systems, including scripting and basic administration tasks relevant to trading systems.
- Familiarity with monitoring and logging tools such as Grafana or Splunk for application performance and system health monitoring.