Skip to content

Process Optimization & Efficiency

Chloe edited this page May 12, 2024 · 4 revisions

Process Optimization & Efficiency

We strive to refine and optimize our development processes as much as we can. This section will outline the methodologies, tools, and practices we employ to enhance productivity and have a better workflow.

Agile Practices

We adopted a more flexible, non-traditional Agile approach, focusing on flexibility and continuous improvement within the team:

  • Weekly Meetings: Due to heavy time constraints, and difficulty finding time slots, we settled on holding a single, focused two-hour weekly meeting instead of daily stand-ups. This allowed everyone to participate without making it a burden on their schedule. These meetings serve to update, synchronize efforts, plan for the upcoming week, and discuss any immediate issues we are facing.
  • Feature-Driven Tasks: We structure our work around building features which worked well enough considering our time constraints, interests, and the module commitments.
  • Pair Programming: We encourage pair programming when it is feasible, since it helps to share knowledge and make the development process faster, especially when dealing with complex issues or bugs.
  • Task Flexibility: Tasks are assigned with a consideration of individual interest, availability, and capacity, allowing team members to contribute effectively without causing burdens to their academic obligations.
  • Handling Changes: When new information or unexpected situations arise, we discuss these developments in depth during our meetings or via Slack to decide on the best course of action. This helps us change or adjust our plans quickly to accommodate new insights or requirements.

Tooling

  • Integrated Development Environment (IDE): Team members are free to choose their preferred IDEs, with most opting for Visual Studio Code.
  • Version Control: GitHub serves as our version control, where we also do code reviews and collaborate.
  • Automation through Workflow Scripts: We use GitHub Actions for automating repetitive tasks such as testing and linting.

Feedback Loops

  • Weekly Review Sessions: At the start of each weekly meeting, we go from teammate to teammate, where each team member shares their progress over the past week. This session acts like a small stand-up meeting, where everyone can share insights into their task, accomplishments, and challenges.
  • Pull Requests (PRs): PR reviews are integral and mandatory to our workflow, which allow feedback and collaborative decision making while making code changes.

Documentation

  • Distributed Responsibilities: Documentation tasks are shared among team members, as to not overwhelm a single person. There are specific individuals responsible for user guides, collaboration practices, and technical documentation.
  • Documented Repository: All documentation is hosted on GitHub, so it is always accessible and maintained alongside our codebase.

Team Interaction and Coordination

  • Slack: Our primary communication tool is Slack, with a dedicated channel for the project.
  • Weekly Meetings: Regular scheduled meetings allow all team members to be kept up-to-date with the ongoing development progress and have support for their individual tasks.
  • Collaborative Meetups: Outside of our scheduled meetings, team members frequently gather to work on tasks, even those not directly shared. These meetups helped create a collaborative environment, where ideas could be shared freely, problems solved together, and support is readily available.

Challenges and Solutions

  • Handling Open PRs: As this is still an ongoing issue, we are exploring different strategies, including review rotations and other incentives for participation.
  • Branch Management: As with PRs, we are working to streamline our branch management by setting clear policies for branch creation and deletion, reducing clutter and ensuring our repository remains clean and efficient.
Clone this wiki locally