Best Practices

Best Practices

The requirement sections identified “best practices” that you are expected to follow. Here are expanded details:

Project Practices






Practices related to communication, and tracking the project at a high-level.

Project tracking

Lecture tag You must create a GitLab project on the UW GitLab server, where you will store all of your project assets, including source code. Source code must be regularly committed to this repository.

Issue tracking

Lecture tag You must log all project tasks and the details of your work as issues in GitLab. Each project deliverable should be tracked as a `milestone` in GitLab. You should define the following milestones in your project:
  • Proposal - tasks towards Proposal goals
  • Sprint 1 - tasks towards Demo 1 goals
  • Sprint 2 - tasks towards Demo 2 goals
  • Sprint 3 - tasks towards Demo 3 goals
  • Sprint 4 - tasks towards Demo 4 goals
  • Release - tasks towards your software release

Issues must be logged for all work attempted in this course. Issues should be assigned and managed by team members during each sprint. See the Project > Sprints page for further details on assigning work.

Team members are responsible for updating issues with the details of the work that they have done, and closing issues when the task is complete.

Team meetings

Lecture tag You and your team will regroup at least twice per week and keep minutes of these meetings. You must take `team meeting minutes` when you meet. These can be brief, but should document any decisions that the team makes. The meeting minutes should be stored in a single wiki page, and have this format:
ℹ️

Example Meeting Minutes

Meeting Minutes: 2025-09-04

This is our first meeting, at the end of the Wed class!

  • Roles: Jamie will be our TL. Amber wants to lead the backend development and I’ll handle front-end. Tim will do integration and documentation.
  • We brainstormed project ideas. Leaning towards something exercise related.

Meeting Minutes: 2025-09-06

Second meeting, in Fri afternoon lab.

  • We’re going to lean into cycling: an app for tracking bike trails, and tracking particular rides that we’ve done.
  • Investigate how to do social functions. Can we have users setup accounts and share their rides with one another? Needs map functionality. Amber did something with Google Maps in another project that’s similar.

Development Practices






Practices to improve the quality, flexibility and usefulness of your code.

Layered architecture

Lecture tag You are expected to implement an architecture that was presented in-class, one of: MVVM, MVI or Clean. Note that MVC is not sufficient for full marks! See the instructor if this is unclear.

Pair programming

Lecture tag Team members will collaborate on difficult design and implementation issues. This will be discussed in-class; see slides.

TDD & testing

Lecture tag You must practice Test-Driven Development, and write comprehensive unit tests to follow your source code. You should be producing unit tests at each phase of your project (do NOT attempt to write them all at the end). This will be discussed in-class; see slides.

Code comments

No-Lecture tag When writing code, you should add strategic code comments to explain the purpose of your code (not "what it does", but "why is it done this way"). This does not need to be exhaustive, but it's a good practice for complex and/or critical code.

Git & feature branches

Lecture tag You are expected to regularly commit your code to git. It's a good practice to write your code incrementally: 1. Write a unit test for the code you are going to write. This helps define your interfaces. 2. Write code to achieve what you wanted, which also makes your test pass. 3. Add more tests to cover a reasonable number of inputs. 4. Commit to git! 5. Iterate.

For large features, you should be using Git feature branches and merging code back to main after each feature is complete.

⚠️
Do NOT squash commits or rebase in this course. We need to see your complete commit history to assign a participation grade!

Your Git commit history should reflect the work that you did during the sprint, and a TA should easily be able to see what commit belongs to which issue. A good practice is to put your issue number in the commit message to make it easy to find later!

Journalling

No-Lecture tag Each person on the team also needs to maintain a `development journal`: a wiki page with entries describing what you did in each sprint.
  • You should have one section per week e.g., Week 10.
  • There should be entries for every time you work on the project. I would expect multiple entries per week.
  • Entries should include a date, and a brief description of what you worked on.
ℹ️

Example Development Journal

Week 05

06-Oct-2025. The team met, and we decided to prioritize the Settings screen for the next demo. I defined the settings file format (JSON) and mocked up a basic screen to show the team.

08-Oct-2025. After feedback, I revisited my Settings screen and refined the entries (adding a theme, outines/shading to the text fields).

09-Oct-2025. We met and worked on merging changes before the demo tomorrow. Jane and I paired up on the merge and it went quickly.