About the Role
Overview:
As a Senior Software Engineer, you will be responsible for leading the development of our Java-based applications using Spring microservices architecture. You will work closely with cross-functional teams to design, implement, and deploy scalable and reliable software systems. Experience with graph databases such as Neo4j is highly desirable but not mandatory.
Key Responsibilities:
Design and Development:
Design and develop high-quality Java applications using Spring Boot and Spring Cloud frameworks.
Implement microservices architecture to ensure scalability, reliability, and maintainability of the system.
Write clean, efficient, well-documented code that adheres to best practices.
Technical Leadership:
Lead junior engineers in coding best practices, design patterns, and problem-solving techniques.
Participate in code reviews to ensure high standards of quality and adherence to coding guidelines.
Mentor team members on advanced Java concepts and Spring ecosystem.
Graph Database Integration (Preferred):
Integrate graph databases like NeptuneDB into existing applications to enhance data modeling and querying capabilities.
Optimize graph database queries for performance and scalability.
Collaborate with data architects to design efficient data models using graph databases.
Testing & Deployment:
Develop comprehensive unit tests, integration tests, and end-to-end tests for the applications.
Collaborate with DevOps teams to ensure smooth deployment of applications using CI/CD pipelines (AWS Code Pipelines/Jenkins/GitLab CI/CD).
Implement monitoring tools to track application performance and health.
Collaboration & Communication:
Work closely with product managers to understand requirements and provide technical feedback.
Communicate technical information effectively to both technical and non-technical stakeholders.
Participate in agile ceremonies such as sprint planning, daily stand-ups, retrospectives etc.
Troubleshooting & Optimization:
Troubleshoot complex issues in production environments using tools like log analysis or profiling tools.
Optimize application performance by identifying bottlenecks and implementing improvements.
Qualifications:
Education: Bachelor’s degree in Computer Science or related field; advanced degree preferred but not required.
Experience:
Minimum of 6 years of experience in software development with a focus on Java programming language.
Proven experience in developing microservices-based applications using Spring Boot and Spring Cloud.
Experience with graph databases like Neo4j is highly desirable but not mandatory.
Technical Skills:
In-depth knowledge of Java programming language including Java 8 features.
Strong understanding of Spring ecosystem including Spring Boot, Spring Cloud, Spring Data JPA etc.
Experience with microservices architecture patterns such as service discovery (Eureka), circuit breakers (Hystrix), API gateways (Zuul).
Familiarity with containerization technologies like Docker/Kubernetes is beneficial.
Knowledge of graph databases such as Neptune Gremlin query language is preferred.
Proficiency in using AWS code pipelines CI/CD is preferred.
Soft Skills:
Strong problem-solving skills with attention to detail.
Excellent communication skills both written and verbal.
Ability to work independently as well as part of a team.
Continuous learner who stays updated with latest trends in software development technologies.
What We Offer:
Competitive salary package
Professional development opportunities
Access to cutting-edge technologies
Collaborative work environment