Senior Software Architect - Java
Spartan Technologies · Atlanta, GA · 13 mo ago
Information TechnologyFull-time
What You’ll Do
- Collaborate with fellow software architects, as well as software engineers, to establish common development patterns and practices, unit testing practices, frameworks, tech stack approaches, and maximize component reuse.
- Be involved in strategic decision-making that spans multiple components or products.
- Use your communication and soft skills to collaborate with senior business and technology leaders to represent the software architecture team in a variety of discovery and implementation efforts.
- Use your technical skills in Azure cloud, API design, asynchronous event driven architecture, and GitOps, to drive the organization’s technology landscape forward and position us for a future of exponential growth.
Responsibilities
- Serve as solution owner of all technology implementations in your respective product areas.
- Assist in the mentorship and growth of software engineers.
- Build proof-of-concept work/code snippets/examples to demonstrate usability of new technology features.
- Analyze application specifications and technology approaches to ensure business requirements are met and are scalable for future product releases.
- Work with Scrum team and management to recommend future application solutions.
- Produce and maintain conceptual design documents and detailed specifications for large-scale projects and contribute to our architectural center of excellence.
- This includes high-level design flows, sequence diagrams, interface diagrams, API specifications, and JSON message schemas for interoperability between systems.
- Demonstrate fluency in technical aspects of a suite of specialized products and business applications.
- Collaborate with engineers and testers to ensure appropriate front-end and back-end unit and automated testing exists for your respective product areas.
- Collaborate with teams to diagnose and resolve complex defects identified through testing.
- Define and evangelize modern best practices to improve maintainability, reliability, and performance of the engineered solutions.
- Serve as a technical voice of IT to the broader Company's organization, when necessary.
What You’ll Need To Succeed
- Experience working in a Scrum / Agile environment (preferred).
- Experience with one or more NoSQL databases like Cassandra, MongoDB (preferred).
- Experience and skills with RDBMS (PostgreSQL, MySQL, SQL Server) concepts, logical and physical design, and administration.
- Experience and understanding of n-tier technical architectures (web servers, application servers, database servers) in a high performance and highly available deployment.
- Experience with backend technologies like Java, Spring / Spring Boot frameworks, REST, and API design.
- Experience with frontend technologies like React and/or Angular (preferred).
- Experience working with API gateway products, such as Apigee, Kong, Azure APIM, and Zuplo (preferred).
- Experience using ESBs and message brokers such as Solace, Camel, RabbitMQ, ActiveMQ, Kafka (Kafka experience preferred).
- Experience with high availability, fault-tolerance, load balancing and disaster recovery designs and techniques.
- Experience with application and integration architecture design concepts and techniques.
- Strong decision-making skills, and an understanding of where projects fit into the overall architecture strategy.
- Knowledge of microservices architecture and domain driven design.
- Strong knowledge of GitOps concepts, DevOps methodologies, CI/CD pipelines (Bitbucket and/or Azure DevOps Pipelines preferred) and utilizing declarative Infrastructure-as-Code techniques (Terraform experience is preferred).
- Experience with containerized deployment technologies (Docker), Kubernetes, and Containers-as-a-Service, such as Azure Container Apps (preferred).
- Proven ability to interact effectively with people in all levels of the organization (cross-functional, vendor resources, and executive management).
- Strong organization skills with the ability to work on multiple projects and/or assignments simultaneously.