Skip to content

Ways of Working

NOTE

This represents the target state for Phase 3 of the WoW proposal.

Teams

RoleAppybarasAppricots
Senior BEPhil
Mid BEGadiza
Senior RNEugene
Mid / Senior RNPeter
QADave
QAJoel
DesignerSimon
PMEmilyEmily
Captain / LeadSamanthaSamantha

Contacts

SituationContact
Bug in productionBug ranger (see rota below)
Feature requestsPM
Access/permissionsApp Lead
Build/CI issuesApp Lead
Design questionsTeam designer
External contributions to app codeApp Lead

Communication Channels

ChannelPurpose
#appybarasAppybaras daily discussion
#appricotsAppricots daily discussion (TBC)
#app-engineeringCross-team tech discussion, RFCs, announcements (TBC)
#incidentsProduction issues
#customer-appReleases and updates to customer app
#engineer-appReleases and updates to engineer app
#appyblokesApp devs chat (currently private)

Meetings

MeetingCadencePurpose
Stand upTuesdaysSync stand up; async on other days
PlanningOnce per sprintSprint planning
Sprint check-inOnce per sprintMid-sprint progress check
RetroMonthlyWhat's working, what's not
Architecture syncAs neededCross-team tech decisions — new patterns, shared code RFCs, tech debt prioritisation

Bug Ranger Rota

Not yet active

Bug ranger rota has not been set up yet.

Weekly rotation — 1 BE dev and 1 app dev per week, alternating between teams. Handoff happens Monday morning, aligned with release day.

Responsibilities:

TaskFrequency
First responder for incidentsAs they arise
Check SentryDaily
Triage/fix small issuesAs they arise
Security package updates (npm audit)Weekly check
Dependency bumpsAs needed
Handoff notesEnd of week

Escalation path:

  1. Ranger triages
  2. If in ranger's team domain — fix it
  3. If in other team domain — assign ticket, ping team in Slack
  4. If critical — pull in App Lead or both seniors

Project Management

Definition of Done

  • [ ] Code reviewed and approved by another dev
  • [ ] Tests reviewed by QA
  • [ ] QA manual testing passes
  • [ ] E2E tests pass (into develop only — not required for tickets into a feature branch)
  • [ ] Documentation updated (if applicable)
  • [ ] Accepted by relevant stakeholders
  • [ ] Merged into develop

Jira Workflow

Ready for Development

   In Progress        ← Dev working

 Ready for Review     ← Dev done, PR open

  Ready for QA        ← Code review passed

     In QA            ← QA testing (see note below)

   Acceptance         ← QA passed, stakeholder review

 Ready to Merge       ← Accepted, waiting for merge

  Ready for Live      ← Merged, in next release

What "In QA" means depends on the target branch

  • Into a feature branch: manual testing only. E2e tests are written at the end of the epic.
  • Into develop: manual testing + e2e tests must pass before merge.

Who moves tickets

FromToWho
Ready for DevIn ProgressDev
In ProgressReady for ReviewDev / jira automation on PR open
Ready for ReviewReady for QADev (PR approved)
Ready for QAIn QAQA
In QAAcceptanceQA (testing passed)
AcceptanceReady to MergeStakeholder(s)
Ready to MergeReady for LiveDev (after merge)

Branch Strategy

Naming Convention

Use the dev branch suggestion from Jira, or name it manually starting with the ticket number. The branch must start with the ticket ID so PR builds get posted to the correct ticket.

Format: ABC-123-short-description

Rules:

  • Must start with Jira ticket ID (for auto-linking and PR build comments)
  • PRs targeting a feature branch must have the FEATURE_BRANCH label

Cross-Team Code Reviews

PRs touching src/design-system/ require a reviewer from the other team.

Release Schedule

NOTE

This covers app releases only — the mono has its own release process. We should aim to align BE and FE changes where possible to avoid mismatches.

Fortnightly releases:

  • Thursday — put in review on app stores (Friday allowed if there's run-over)
  • Monday — release to users

Release captain alternates between teams each release so everyone knows the process. Both teams agree on phased vs immediate rollout and release notes before each release.

Store Release

StepOwnerAutomation
Announce intention to release + warn about freezing merge queueRelease captainManual
Freeze merge queueApp Lead / QAManual
Run e2e suite / review last night e2eQAManual
Bump version and tag commitRelease captainManual
Wait for prod + prod-e2e buildsRelease captainAutomated
Run prod-e2e tests and verifyQAManual
Release notesPMManual
Submit to storesRelease captainManual
Merge develop into mainRelease captainManual
Resume merge queueApp Lead / QAManual

NOTE

When actually released, inform the relevant app channel

OTA Release

StepOwnerAutomation
Alert app lead asapApp leadManual
Announce intention to releaseDev doing the fixManual
Fix merged to mainDevManual
Run e2e tests on mainQAManual
Tag commit with OTA version (which automatically releases)Dev doing the fixAutomated
Notify app teams + relevant app channelDev doing the fixManual