Way of Working

A Guide to Our Collaborative Process

This document outlines the development methodology, communication channels, and collaborative practices for our project. The aim is to agree on shared methods of working to improve collaboration efficiency.

The key topics covered are: - Two-Week Sprint Cycle - Communication Channels - Knowledge Management


Two-Week Sprint Cycle

The project follows an agile development framework centered around two-week sprints. The team works backwards from high-level objectives, breaking them into manageable tasks while allowing flexibility to adapt to issues as they arise.

Sprint Phases

1. Sprint Planning

At the beginning (or end) of each two-week cycle, the team reviews the project backlog and selects tasks for the upcoming sprint. The goal is to ensure: - A realistic workload - Clear and well-defined objectives

2. Development

During the sprint, development proceeds according to the communication and coding guidelines defined in later sections.

3. Sprint Review

At the end of each sprint, the team conducts the following activities:

a. Review
Each developer presents a brief demo of their work and records any feedback from the client or team members.

b. Retrospective
The team reflects on: - What worked well - What could be improved - Any obstacles encountered

c. Backlog Update
Completed items are signed off, and new tasks are added based on sprint outcomes.

Project Backlog

The sprint process relies on a Project Backlog, currently maintained on the Clickup platform.

Each backlog item should include: - A brief description - Priority level (High / Medium / Low) - Estimated effort

Each backlog item must, most critically, be written in a testable manner - i.e. it should be easily understandable whether a task is complete OR not. Simple binary

If a backlog item contains within it too many aspects to keep it reasonably simple, create additional subtask that decouple the responsibilities. The benefit of the subtasks is exactly that they become more easily testable, and division of tasks more paletable.


Communication Channels

The team uses multiple communication channels to keep discussions organized and easy to reference.


Discord: Development Hub

Discord serves as the primary development communication platform.

1. Formal Discussions Log

All technical and design discussions should be logged in a dedicated Discussions channel to create a searchable decision history. This also applies to development issues where feedback from the team is needed.

Each discussion should follow this structure:

  • Discussion Topic
    Brief description of the topic
    Example: Issue A – User Authentication Problem

  • Topic Description
    Clear scope of the issue
    Example: As part of feature X, we must implement user authentication. I am encountering problem Y.

  • Discussion Messages
    Messages exchanged between team members

  • Decision Summary
    A final post summarizing the agreed outcome of the discussion

2. Information Hub

The main Discord channel contains links to essential project resources, including: - GitHub repository - OneDrive - Other relevant tools

WhatsApp: Social and Personal Coordination

WhatsApp is reserved for informal and logistical communication, including: - Checking in on team well-being - Coordinating meetings - Non-technical discussions

Communication with the Client

  • Client communication occurs at the start of each sprint cycle
  • During the first sprint, objectives are communicated via email to:
    j.pintado@student.tue.nl
  • For subsequent sprints, emails should include:
  • Progress update from the previous sprint
  • Objectives for the upcoming sprint

Email subject format:

Sprint Cycle # Update

(where # is the sprint number)

Monthly Updates

  • Updates on other events (e.g., TU/e contest) are sent on the first day of each month
  • Updates should include current progress and reflections

Meetings

Full-team meetings occur: - At the beginning of the year - Before the Midterm Presentation - Before Demo Day

Additional questions or requests where the client can help may be handled via WhatsApp.


Knowledge Management

This section describes how the team captures and maintains knowledge throughout the project.

1. DocTree

The DocTree is the definitive version of all the documentation kept for this project. Guides, decisions, design, project descriptions - these types of documents can all be found inside the DocTree.

_TODO: Guide to adding new documents, guide on writing docs.

2. Cloud OneDrive

The shared OneDrive stores all non-code project assets.

Contents include: - Project Foundations – project descriptions, user personas, and long-term vision documents - Past Context – reports and materials from previous years - Research and Research Briefs – sources and research materials - Design and Architecture – detailed architecture and design documents - Organizational Documents – project backlog and sprint planning files

3. GitHub Repository

All code is managed through a shared GitHub repository using a structured workflow.

a. Feature Branch Workflow

New features must be developed on a branch created from the main development branch Branches should follow the naming convention: feature-x-branch
Example: user-login-branch

b. Merge Requests

Once a feature is complete and tested locally, a merge request is opened. Each merge request must include: - A clear description of the changes - Relevant context for reviewers

c. Meaningful Commit Messages

Clear and descriptive commit messages are mandatory.

For significant feature work, commit messages should follow this structure:

[Task or Feature Name]

Feature Description: I implemented the user registration endpoint by creating a new service and repository in the auth module.

Next Steps: To complete the user login feature, I still need to implement token generation.

d. Archive Old Branch

Once a merge request with a feature is passed, archive the old branch to keep the repository clean.