TEAM ROLES

Purpose

The Software Engineer is responsible for designing, building, testing, and maintaining high-quality software solutions that meet business objectives. The role works collaboratively within an agile squad, partnering with Product Owners, Engineering Leads, and cross-functional stakeholders to deliver incremental value in iterative cycles.

The Software Engineer is accountable for the quality, testability, and maintainability of the code they produce, and is expected to uphold and actively promote engineering best practices — including clean code principles, atomic commits, comprehensive automated testing, and rigorous peer review.

This role is central to the squad's ability to deliver reliably and continuously improve. Software Engineers participate actively in all agile ceremonies, contribute to technical documentation and knowledge sharing, and bring a continuous improvement mindset to both their individual practice and the team's ways of working.

Responsibilities

Delivery & Collaboration
  • Collaborate with product owners, stakeholders, and cross-functional team members to refine user stories, identify and create technical subtasks for stories, and deliver high-quality software solutions aligned with business objectives.
  • Actively participate in all Agile ceremonies (sprint planning, daily stand-ups, sprint reviews, and retrospectives). Embrace Agile principles to deliver incremental value in iterative cycles and adapt effectively to changing priorities.
  • Regularly demo your work (no matter how small or incremental) during sprint reviews, team sessions, or show-and-tell meetings to validate progress against acceptance criteria, spark constructive discussion, surface potential gaps, and gather timely feedback from stakeholders and the team.
Code Quality & Engineering Standards
  • Write clean, maintainable, and testable code that is easily understood by other team members, while establishing and promoting best practices relevant to your technical specialism.
  • Make atomic commits with clear, descriptive commit messages that convey the intent and scope of each change. Follow Semantic Commit guidelines to ensure readable history and better collaboration.
Testing, Quality Assurance & Defect Resolution
  • Write comprehensive unit tests and actively participate in Continuous Integration (CI) processes to ensure high code quality, early issue detection, and smooth automated build and deployment pipelines.
  • Perform thorough code reviews for peers and incorporate feedback constructively to improve code quality, maintainability, and adherence to team standards.
  • Identify, troubleshoot, debug, and resolve defects or performance issues efficiently across development, staging, and production environments.
Documentation & Knowledge Management
  • Contribute to technical documentation, including clear code comments, architecture diagrams, API docs, and knowledge base articles to support team knowledge sharing and long-term maintainability.
Continuous Improvement
  • Proactively identify opportunities for process improvements, automation, and technical debt reduction.
  • Stay up to date with industry best practices, emerging technologies, and advancements in software engineering to continuously improve personal and team capabilities.

Decisions

In this role I take decisions on:

  • Technical implementation approach for assigned work items within sprint scope
  • Code quality and adherence to team coding standards and best practices
  • Content and accuracy of technical documentation, code comments, and knowledge base contributions
  • When to escalate technical blockers, ambiguities, or dependencies to the Engineering Lead
Together with
  • Engineering Lead — on technical approach, architectural decisions, and escalated blockers
  • Product Owner — on understanding and refining user story requirements and acceptance criteria
  • Fellow Engineers — on code quality standards, peer review feedback, and shared best practices

Recurring tasks

In this role I take care of:

  • Daily stand-up participation
  • Sprint planning and backlog refinement contribution
  • Sprint review demos of completed work
  • Sprint retrospective participation
  • Active management of personal sprint backlog items
  • Code review of peer pull requests
  • Unit test writing and CI pipeline monitoring
  • Technical documentation and knowledge base maintenance (ongoing)

Key Relationships

Internal
  • Engineering Lead (line manager and technical authority)
  • Fellow Software Engineers
  • Product Owner (user story requirements and acceptance criteria)
  • Scrum Master (agile ceremonies and impediment removal)
  • Support Team (escalation for production defects and incidents)
External
  • Platform vendors and third-party API providers (where relevant to technical implementation)

Approach to decision-making

My approach to decision-making is grounded in delivering quality software that meets both business and technical standards. When making technical implementation decisions, I favour approaches that are clean, testable, and maintainable over those that trade quality for short-term speed.

For decisions that affect team standards, shared architecture, or involve significant unknowns, I consult with the Engineering Lead and fellow engineers rather than acting unilaterally. I escalate blockers or ambiguities early — raising them in the daily stand-up or directly with the Engineering Lead — rather than carrying uncertainty through a sprint.

I treat agile ceremonies as opportunities to surface progress honestly, raise impediments early, and contribute to team learning. Demo culture matters: showing work — however incremental — builds trust, surfaces gaps early, and creates better outcomes for the team and business.