Position: Senior Java Software Engineer
Company: Svitla Systems
Experience required: 5y
Category: Java
English level: upper
Published: 2022-08-01T00:00:00+03:00

**Requirements:**
- 4+ years of commercial software development experience in the Java ecosystem.
- Experience in running and supporting software in production (dev-ops approach).
- Problem-solving, analysis, and computational skills. You are comfortable designing systems and reasoning about them. When tackling problems, you take a thorough and logical approach to solving them and you retain ownership through to resolution.
- Designing and developing systems for high availability and scalability.
- Experience working within an e-commerce or at-scale business where security, availability and reliability are valued.
- Depth of professional software engineering experience and best practices for the full software development life cycle, including coding standards, code reviews, source control management, build processes, testing, and operations.

**Skills:**
- Java: Advanced
- SQL databases: Advanced
- Distributed systems architecture: Advanced
- Knowledge of design patterns and engineering best practices: Advanced
- Testing (e.g. Unit Tests, E2E Tests): Advanced
- Java web framework (Spring / Spring boot or equivalent): Regular
- Functional approach: Regular
- Networking – architecture, protocols, and security: Regular
- CI/CD tooling (Jenkins or equivalent): Regular
- Docker and Kubernetes: Basic
- Cloud platform (Microsoft Azure or equivalent): Basic
- Written & spoken English: Upper Intermediate (B2)
- Python: nice to have

**Key responsibilities and measures:**
- Adopt best practices in software engineering: design, testing, version control, documentation, build, deployment, monitoring, and operations.
- Build flexible systems choosing simple, straightforward solutions over more complex ones.
- Contribute and review code, preserving high quality and best industry practices.
- Represent the team project within wider technical discussions across different stakeholder groups and be effective in doing so by constantly broadening your understanding of our technology landscape.
- Take ownership of the delivery of specific outcomes.
- Contribute to the definition of features for services owned by your team.
- Collaborate closely with other teams in the area.
- Continuously improve yourself and your team by suggesting and helping implement new engineering processes and practices.
- Mentor less experienced developers.
- Contribute to building and nurturing an effective, high-performant team that consistently delivers quality software whilst balancing time frames and needs.