# Senior Java Developer - Job Description
## Position Overview
We are seeking an experienced Senior Java Developer to join our dynamic development team. The ideal candidate will be responsible for designing, developing, and maintaining high-quality Java applications while mentoring junior developers and contributing to technical architecture decisions.
## Key Responsibilities
### Technical Development
- Design and develop scalable, high-performance Java applications using Spring Framework
- Write clean, maintainable, and well-documented code following best practices
- Implement RESTful APIs and microservices architecture
- Develop database schemas and optimize database queries
- Integrate third-party APIs and services
- Implement unit tests, integration tests, and automated testing strategies
- Perform code reviews and ensure code quality standards
### Architecture & Design
- Participate in system architecture design and technical decision-making
- Design and implement scalable solutions for complex business requirements
- Evaluate and recommend new technologies and frameworks
- Create technical specifications and design documents
- Ensure application security best practices are followed
### Team Leadership
- Mentor junior developers and provide technical guidance
- Collaborate with cross-functional teams including Product, QA, and DevOps
- Participate in agile development processes (Scrum/Kanban)
- Lead technical discussions and knowledge sharing sessions
- Assist in project planning and estimation
### Quality Assurance
- Implement and maintain CI/CD pipelines
- Perform debugging and troubleshooting of production issues
- Monitor application performance and implement optimizations
- Ensure code coverage and quality metrics are met
- Participate in production deployments and releases
## Required Qualifications
### Education
- Bachelor's degree in Computer Science, Software Engineering, or related field
- Master's degree preferred but not required
### Experience
- 5+ years of professional Java development experience
- 3+ years of experience with Spring Framework (Spring Boot, Spring MVC, Spring Security)
- Experience with microservices architecture and distributed systems
- Proven track record of delivering complex software projects
### Technical Skills
Core Technologies
- **Java 8 Advanced knowledge of Java programming language
- **Spring Framework**: Spring Boot, Spring MVC, Spring Security, Spring Data JPA
- **Database**: SQL (MySQL, PostgreSQL, Oracle), NoSQL (MongoDB, Redis)
- **Build Tools**: Maven, Gradle
- **Version Control**: Git, GitLab/GitHub
Additional Technologies
- **Web Technologies**: HTML, CSS, JavaScript, jQuery, Angular/React (nice to have)
- **Testing**: JUnit, Mockito, TestNG, Selenium
- **DevOps**: Docker, Kubernetes, Jenkins, AWS/Azure/GCP
- **Message Queues**: RabbitMQ, Apache Kafka
- **Monitoring**: ELK Stack, Prometheus, Grafana
Methodologies & Practices
- Agile/Scrum development methodologies
- Test-Driven Development (TDD)
- Continuous Integration/Continuous Deployment (CI/CD)
- Code review processes
- Performance optimization techniques
## Preferred Qualifications
### Technical Experience
- Experience with cloud platforms (AWS, Azure, GCP)
- Knowledge of containerization and orchestration (Docker, Kubernetes)
- Experience with event-driven architecture
- Familiarity with GraphQL
- Experience with GraphQL APIs
- Knowledge of security best practices (OWASP)
### Soft Skills
- Strong problem-solving and analytical skills
- Excellent communication and collaboration abilities
- Leadership and mentoring capabilities
- Ability to work in a fast-paced, dynamic environment
- Strong attention to detail and quality
- Proactive and self-motivated approach
## Responsibilities by Level
### Senior Level (5-7 years)
- Lead development of complex features and modules
- Mentor junior developers
- Participate in architectural decisions
- Optimize application performance
- Implement best practices and coding standards
### Lead Level (7+ years)
- Drive technical strategy and architecture
- Lead development teams
- Make high-level technical decisions
- Represent technical team in stakeholder meetings
- Define and implement development processes