Senior Java Developer
Job description
Responsibilities:
- Be part of week-based sprints executing on the backlog in lockstep with developers as part of an Agile team.
- Work as an independent contributor collaborating with a team of developers and test engineers.
- Collaborate with product management, support, and engineering teams in order to establish priorities.
- Mentoring and code reviewing for a remote team, setting best practices and policies, writing specs, wiki pages, knowledge base articles, and other internal documentation.
- Work closely with the support team, and communicate with customer sysadmins, DBAs, and developers for troubleshooting.
- Provide technology recommendations and strategy to support the business requirements.
- Collaborate with product management, support, and engineering teams in order to establish priorities, understand requirements, formulate test plans, and execute them accordingly.
- Ability to work on urgent issues.
Qualifications:
- 7+ years of experience in Java development.
- Solid understanding of object-oriented programming (OOP) concepts.
- Solid foundation in Java Core and J2EE development fundamentals including best practices and design patterns.
- Experience in Spring-MVC/Spring-Boot framework.
- Experience in Java REST web service.
- Database design fundamentals and knowledge in JPA.
- Experience in analysis, design, and developing business requirements.
- Experience with TDD, code testability standards, JUnit/Mockito.
- Experience developing backend components, services, or APIs in Java or a similar language.
- Strong skills writing high-performance, multi-threaded, efficient, and maintainable software code.
- Experience crafting and implementing highly scalable and performant microservices-based applications.
- Familiarity with HTTP, REST, HTML, JSON, and similar web-based development technologies, and with building complex multi-tier parallel distributed systems that communicate via them (such as the backend of complex websites).
- Knowledge of SQL and experience working with online data stores (one of MySQL, PostgreSQL, Oracle, MS SQL Server).
- Experience with building, maintaining, and scaling large scale distributed systems.
- Ability to identify trade-offs between various implementations and make decisions about which solution would be best for a given situation.