Be part of a weeks 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 & 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
Requirements:
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
DB design fundamentals and knowledge in JPA
Experience in analysis, design, develop 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.
You can identify trade-offs to various implementations and can make decisions about which solution would be best for a given situation.