Job Description
Essential:
Experience: 8+ years in software engineering, with deep command of engineering fundamentals; our current stack centres on Node.js, Angular, and React, though breadth across technologies matters more than any single one.
Education: Bachelor's or master’s degree in computer science, Engineering, or a related field.
Cloud fundamentals: Extensive experience with cloud architectures such as AWS, and a first-principles understanding of how distributed systems behave, including consistency, fault tolerance, scalability, and observability.
High agency and the ability to solve technical problems of the highest scope, complexity, and ambiguity from first principles.
Ability to transition to new engineering languages and frameworks.
Familiarity with test-driven development, CI/CD pipelines, and DevOps practices.
Technical Skills:
Comfortable reading, writing, and reviewing code in more than one language, treating languages as interchangeable tools (our stack currently uses JavaScript and TypeScript); depth of engineering judgement matters more than proficiency in any one syntax.
Strong understanding of RESTful APIs, microservices, and the trade-offs of distributed system design.
Experience with version control systems (e.g., Git).
Familiarity with databases (SQL and NoSQL).
Leadership Skills:
Proven ability to lead and mentor a team of engineers, and to establish sound practices for working with AI development tools.
Problem-Solving:
Strong analytical, first-principles problem-solving skills, with a focus on delivering pragmatic, effective solutions.
Communication:
Excellent verbal and written communication skills.
Preferred Experience:
Experience with containerization technologies (Docker, Kubernetes).
Roles and Responsibilities
Architecture and Design:
Lead the architectural design of scalable, resilient, high-performance distributed systems, applying the first principles of cloud-native design (our current stack centres on Node.js and React/Angular).
Establish and document architectural standards, guidelines, and best practices that align with the organization's goals and technical requirements.
Ensure that the architecture is consistent with industry standards and scalable to accommodate future growth.
Development:
Produce clean, maintainable, pragmatic solutions across server-side and client-side applications, whether written by hand or with AI assistance, always owning their design and correctness, regardless of the specific language (today primarily JavaScript/TypeScript on Node.js and Angular).
Create architectural patterns that act as useful abstractions for all developers.
Create technical implementation plans, gain stakeholder approval.
Proactively improve our development processes, including how the team adopts AI engineering tools responsibly.
Proactively research new technologies and lead by example to ensure the product is heading in the right direction.
Maintain and grow deep expertise by keeping pace with advances in the industry, especially AI-assisted engineering, and undertaking approved training where appropriate.
Act as the main driver for the technical product roadmap.
Code Review: Conduct thorough reviews of both human- and AI-generated code to ensure quality, maintainability, and adherence to sound engineering principles.
AWS Integration: Leverage AWS services (such as Lambda, S3, RDS, etc.) for building and deploying cloud-based applications.
Performance and Resilience: Analyze and enhance performance, responsiveness, scalability, and fault tolerance across distributed services.
Continuous Improvement: Stay current with emerging technologies and industry trends to continuously improve development practices and processes.
Team Leadership
Your role in team leadership is vital for fostering a productive, innovative, and collaborative work environment. This encompasses a variety of responsibilities and practices, including:
Coaching: Provide one-on-one coaching to junior and mid-level engineers, helping them enhance their technical skills and navigate challenges in their projects.
Knowledge Sharing: Facilitate knowledge-sharing sessions, workshops, and tech talks that keep the team current on engineering fundamentals, AI-assisted development, and cloud technologies.
Use code review as an opportunity to mentor junior and intermediate developers on best practices.
Support in inducting and training new staff to enable them to be competent and confident in the software development of our products and ensuring they are productive quickly.
Upskill developers as part of their career development.
Conduct training sessions within the development team.
Team Building: Encourage a culture of collaboration and teamwork by promoting open communication and mutual respect among team members.
Conflict Resolution: Address and mediate conflicts within the team promptly and constructively, ensuring a harmonious work environment where everyone feels valued and heard.
Setting Clear Goals: Work with the team to set clear, achievable goals and objectives that align with the overall project and company vision.
Performance Metrics: Establish key performance indicators (KPIs) to measure team progress and individual contributions, providing regular feedback to help team members grow.
Creative Problem Solving: Foster an environment where team members feel encouraged to propose and experiment with new ideas, technologies, and approaches to problem-solving.
Hackathons and Innovation Days: Organize hackathons or innovation days to allow team members to explore new technologies or work on passion projects that can benefit the organization.
Leading by Example: Demonstrate a strong work ethic, professionalism, and commitment to quality, serving as a role model for the team.
Continuous Learning: Show a commitment to personal and professional development by staying updated on industry trends, participating in training, and sharing insights with the team.
Performance Management:
Constructive Feedback: Provide timely and constructive feedback, recognizing achievements and addressing areas that need development.
Collaboration:
Work closely with product managers, UX/UI designers, RTE’s and other stakeholders to gather requirements and deliver solutions that align with business goals.
Assist with technical input to development lead and work with project management team and the test team to monitor release progress.
Assist with Agile best practices.
Work with the DevOps and SRE team’s to ensure we meet our system uptime commitments.
Work with the DevOps team so that we meet SLAs for root cause analysis for incident tickets.
Support the DevOps team to ensure UAT and Production deployments are successful.
Technical debt
By effectively managing technical debt, you will help ensure that your projects remain maintainable and scalable over time, allowing your team to deliver high-quality software solutions while minimizing long-term costs and risks.
Ensure technical debt is effectively captured and documented.
Minimize technical debt during new feature development.
Proactively address technical debt in legacy code.
Lead and create the roadmap to address large technical debt items.
Work with the development lead to communicate the business value of addressing technical debt items.
Create policies that ensure dependencies are always up to date and supported by the publisher.
Monitor the releases of dependencies for security vulnerabilities, out of support notices, breaking changes.
No Referrers Available
There are currently no referrers available for this job. You can still apply, will let you know once there is any referrer available.
