We primarily follow Agile methodologies for the flexibility it offers, we make some adjustments to accommodate major milestones/bug fixes when needed.
We have detailed tickets outlining use cases and stories, followed by the sub tasks required to complete the work. Tickets are moved from the backlog into typically four-weeks development sprints. This planning is done often by the Technical Project Manager and reviewed on a fortnightly basis with the rest of the team.
We use labels for ticket “types” to identify new feature, bugs, frontend/backend/devops and general tasks. There is a four-step workflow for all tickets:
Backlog: where all the ideas go which have not been clearly defined (and approved by the product manager)
To Do: ready for development - ticket should have enough information for anyone to start working on it.
In Progress: assigned to someone and currently being worked on
Ready to QA: all requirements have been met and is ready for testing.
Resolved: code has been merged
Blocked: tickets have this label if the assigned developer needs further help or clarification.
If a ticket is blocked, the ticket must include as much information as possible to explain why. The project manager must also be notified when a ticket is blocked. Developers are in charge of maintaining the correct status of the tickets and moving them into the applicable stages.
All pull requests must be reviewed by at least one other person before getting merged. Feedback from code review must be acted upon where necessary. To QA another person's work, we currently have to run the code on our laptops - this is a temporary solution as we’re aware it’s a very unreliable way of testing code. In the near future, we would like to have a deployed testing environment. We deploy to live after every merge and hide behind a feature-flag until we are ready to fully launch a feature.
When we are stuck, we can ask for help from other members of the team. In situations where we can’t figure it out together, we seek out external help.
We mostly communicate via the whatsapp group chat. We value communication as it's the only way we can make sure we are keeping each other aware and accountable about changes on the project. Our motto is "Let us know and we will figure out a way around it".
We are flexible in the way we work. Members of the team decide when they want to work. We have a meeting before the start of each sprint (most likely remotely) to discuss our upcoming work. Developers voluntarily assign themselves to tickets and complete them in their own time. Developers can only have one ticket in "In progress" at a time. We require individuals to let us know when they would be unavailable to work on the project in a particular sprint or for a long period of time. If you have started a ticket but is unable to finish it during a sprint, let us know and we can unassign you.