Senior Software Engineer
We are hiring an elite Senior Software Engineer to build and scale our
core data processing and application infrastructure. This role demands
deep, hands-on expertise in the Java ecosystem and distributed computing
with Apache Spark. You will be responsible for the architecture, design,
and implementation of mission-critical systems that process massive
datasets, requiring a mastery of concurrency, JVM internals, and modern
cloud-native patterns.
Core Tech Stack:
-
Languages & Runtimes:
Java (8+), SQL, JVM
-
Frameworks & Libraries:
Spring (Boot, Data, Security, Batch, Integration), Apache Spark
(RDD, Spark SQL, DataFrames/DataSets)
-
Big Data Ecosystem:
Hadoop, Hive, Impala, Spark Tuning & Optimization
-
Databases:
Relational (e.g., PostgreSQL, Oracle), NoSQL (MongoDB, Graph DB)
-
Messaging & Middleware:
JMS, Solace
-
Containerization & Orchestration:
Docker, Kubernetes, OpenShift
-
Build & CI/CD:
Maven, Gradle, Jenkins, Git
-
Code Quality & Security:
SonarQube, TDD (JUnit/Mockito), Secure Coding Practices
Key Responsibilities:
-
Architect & Build: Design and construct high-throughput, low-latency
data processing pipelines using Apache Spark and the Spring ecosystem.
-
Performance Engineering: Dive deep into JVM internals, garbage
collection tuning, and Spark job optimization to maximize performance
and resource efficiency.
-
Distributed Systems Design: Implement scalable, resilient, and
transactional architectures leveraging container orchestration
(Kubernetes/OpenShift) and distributed data stores.
-
Code & Design Excellence: Champion and enforce best practices in
software engineering, including SOLID principles, advanced design
patterns, Domain-Driven Design (DDD), and Test-Driven Development
(TDD).
-
Database Mastery: Engineer and optimize data models for both
relational and NoSQL databases, ensuring data integrity, performance,
and scalability.
-
CI/CD Automation: Own and enhance CI/CD pipelines for automated build,
test, and deployment of Java applications and Spark jobs in a
containerized environment.
-
Technical Leadership: Lead design and code reviews, mentor junior
engineers, and drive the adoption of new technologies and
architectural patterns across the team.
Required Technical Qualifications:
-
Core Java & JVM: Expert-level proficiency in Java, including the
Collections Framework, Lambdas, and the Java Concurrency API.
Demonstrable experience tuning the JVM and troubleshooting memory/GC
issues.
-
Apache Spark: Proven, hands-on experience developing, deploying, and
tuning complex Spark applications for large-scale data transformation
and analysis.
-
Spring Ecosystem: Extensive, practical experience with the Spring
Framework, particularly Spring Boot, Spring Data, and Spring Batch in
a production environment.
-
Data Structures & Algorithms: Deep understanding of fundamental data
structures and algorithms, with a focus on their application in
distributed computing and performance-critical systems.
-
Containerization & Cloud-Native: Hands-on experience with Docker for
building images and Kubernetes/OpenShift for deploying and managing
distributed applications.
-
Database Engineering: Strong command of SQL and relational database
design, including transaction management and indexing. Experience with
at least one production NoSQL database (MongoDB, Graph DB, etc.).
-
Architectural Design: Practical application of OOP, SOLID, and DDD
principles to build maintainable and scalable systems. You write tests
first (TDD) and believe in robust, automated testing.
This job description is intended to convey information essential to
understanding the scope of the Senior Software Engineer position and
it is not intended to be exhaustive. Additional responsibilities may
be assigned as necessary.