Overview
As a Principal Engineer and Software Architect, you will play a crucial role in designing and overseeing the implementation of complex software systems. You will collaborate with engineering teams, stakeholders, and business leaders to ensure the delivery of high-quality software solutions that meet both technical and business requirements. You will look at existing software for opportunities to redesign and refactor to simplify code, improve performance and increase reusability.
Responsibilities
- System Design & Architecture: Lead the design and development of scalable, reliable, and secure software architectures. Translate business requirements into technical solutions that align with company goals and industry best practices.
- Technical Leadership: Provide technical guidance and mentorship to engineering teams, ensuring adherence to architecture standards and best practices. Lead code reviews, technical discussions, and decision-making processes. Create task lists that breakdown new features to enable work to be distributed across engineers and tracked.
- Collaboration: Work closely with analysts, engineers, and other stakeholders to understand system requirements, constraints, and objectives. Ensure the architecture supports future growth and flexibility.
- Technology Selection: Evaluate and recommend appropriate technologies, frameworks, and tools for software development, ensuring that the system is innovative and cost-effective.
- Quality Assurance: Ensure software designs and implementations follow best practices, coding standards, and appropriate testing methodologies. Guarantee high performance, security, and scalability of the architecture.
- Documentation & Communication: Create clear, comprehensive, and maintainable documentation for system architectures, workflows, and technical specifications. Communicate effectively with non-technical stakeholders to ensure understanding of architectural decisions.
- Continuous Improvement: Stay updated on emerging technologies and industry trends to keep our systems modern and ahead of the competition. Drive innovation and continuous improvement in software architecture and development processes.
Qualifications
- Degree in Computer Science, Software Engineering, or a related field.
- Many years of experience in software development to an advanced standard likely at a Principal Engineer level.
- Proven experience in designing and developing complex systems, preferably with exposure to a Software as a Service deployment model.
- Proficiency in modern programming languages and frameworks like TypeScript, JavaScript, NodeJS, Angular and Swift.
- Experience using the Swift Vapor framework for server side API development would be particularly advantageous.
- Strong understanding of software architecture principles, patterns, and design methodologies.
- Experience with cloud platforms (Azure, AWS, GCP) and microservices architecture.
- Knowledge of databases, both relational (SQL) and NoSQL.
- Familiarity with DevOps practices and tools (CI/CD, containerization with Docker, Kubernetes).
- Understanding of Agile methodologies and best practices.
- Experience with distributed systems, high-availability designs, and performance optimization.