Lead Backend Engineer

Upwork
Summary
Join Upwork's Hybrid Workforce Solutions Team as a Senior/Lead Software Engineer and contribute to the design and development of high-performance, robust systems. Collaborate with cross-functional teams to deliver high-quality solutions, utilizing Java or Kotlin for backend development. Architect and optimize backend systems, implement security measures, and enhance the codebase. This contract position offers the potential for renewal and requires experience with Java or Kotlin, REST/GraphQL, unit testing, relational and non-relational databases, and AWS. You will work with large, distributed teams and contribute to a project requiring approximately 40 hours per week, coordinating with the team during core hours (8:00 am to 11:00 pm Pacific Time).
Requirements
- Solid software development experience using Java or Kotlin
- Extensive knowledge of REST and/or GraphQL
- Experience in writing well-structured, easily maintainable unit tests (such as JUnit, Mockito, etc)
- Experience with relational and non-relational databases
- Consistent track record of collaborating with large, distributed teams of engineers over documentation, code and reviews
- A desire to learn new technologies and continually develop your professional skills
- Comfortable working with AWS
- Experience building / supporting high load web applications and solving scalability issues
Responsibilities
- Collaborate with cross-functional teams to understand requirements and deliver high-quality solutions
- Design, develop, test, and maintain scalable and robust server-side logic, databases, and APIs according to project requirements
- Utilize programming languages such as Java or Kotlin for backend development
- Architect and optimize backend systems for performance, scalability, and reliability
- Implement security measures to protect backend systems and data
- Contribute to the enhancement of our codebase by improving quality and documentation and reducing technical debt
- Stay updated on current and emerging technologies
- Utilize collaborative tools such as Gmail, Slack, Confluence, Jira, and various others for efficient communication, documentation, and project management
- Participate in code reviews and design reviews
- Provide technical guidance and support to junior developers
- Document code and technical specifications for future reference
- Analyze system performance and respond to incidents within specified deadlines and provide services during on call rotations to address system issues
- Provide services in the Scrum process, including sprint planning, daily stand-ups, and retrospective meetings, to contribute to project progress and team coordination
- Participate in project-critical meetings and provide regular status updates on deliverables
- Manage your time independently and effectively to achieve project deliverables, which may require an estimated 40 hours of project-related effort per week
- Coordinate with the team during core hours (8:00 am to 11:00 pm Pacific Time) to enhance project collaboration
- Some roles or urgent matters may require availability until 12:00 pm Pacific Time on occasion