Project description
Our client, a large international commodity trading company, is expanding its internal software development team and is looking for programmers to join the team working on a new generation risk management and position keeping, and trading management systems.
We are looking for mature software engineers with in-depth experience of writing performance orientated and highly reliable software, who love and understand technology and also understand or are willing to understand the trading business. We expect the joiners to work on a fairly wide range of tasks: from purely business functionality to its underlying technological foundations; we also expect them to come up with well thought-out, simple, robust, testable, and elegant solutions.
Responsibilities
- Design, develop, test, and maintain high-quality, scalable, and secure Java-based applications.
Developing project deliverables at high quality through the entire software lifecycle according to given specifications and quality standards
Participate in architectural design and technical decision-making processes.
Implement RESTful APIs, microservices, and enterprise-level solutions.
Conduct code reviews to maintain code quality and share knowledge within the team.
Implement and maintain automated testing (unit, integration, and performance tests).
Ensure compliance with security standards and best practices.
Identifying and resolving issues and defects, including multithreading, concurrency, and performance troubleshooting.
Estimating, developing and solving complex engineering problems
Describing defects found to technical and business people
Actively participating in release planning
Interacts with production support teams
Performing all necessary actions on the supervisor's reference
Other responsibilities related with employee's specialization & competencies delegated by Direct Manager
SKILLS
Must have
- - Ability and willingness to acquire bits of business knowledge and to map software solutions they work on to business problems. Newcomers do not need to be readily proficient in commodity trading but must be willing to learn the relevant business context
- Ability and willingness to actively contribute to system quality: re-think and re-work problematic parts, work on automated tests, observability, development ergonomics, etc.
- Ability to program in real-world general-purpose programming languages (Scala, Java). We use Scala but it is okay to have little experience with it
- Ability to follow common development practices: version control, code reviews, etc.
- Understanding of basic data structures and algorithms along with their performance characteristics
- Having a working understanding of databases and common network protocols
- Having a sensible idea of how JVM works
- Being able to do common tasks in Linux command line
Nice to have
- We would generally expect the candidate to be educated to at least degree level (or equivalent) in either Computer Science or another hard science or engineering discipline
- Team members should be able to communicate in passable English