---
format:
    revealjs:
        theme: simple
        chalkboard: true
        auto-stretch: false
---

## Project Management Tools

Keith VanderLinden<br>
Calvin University

::: {.notes}
- Lab 3 & Project 1 focus on project management tools for people and processes.
- Lab 3
    - The labs are for individual practice lab work and are graded individually.
    - E.g.: <https://github.com/CalvinData/data562>
    - They do their (individual) lab work in their own repo that's:
        - personal/private.
        - named: `https://github.com/`*YOUR_GITHUB_ID*`/data562`
- Project 1
    - The projects are for team project work and are graded by team (i.e., a shared score with "deltas").
    - E.g.: <https://github.com/CalvinData/data562-slo>
    - They do their (team) project work in their team's repo that's:
        - public.
        - named whatever they choose (they'll submit their repo URL in Moodle for project 1).
:::

## Tools

- MS Teams
- GitHub
    - Projects
    - Issues
- Clockify
- GitHub Flow

::: {.notes}
- *MS Teams* (for all individual and team communication)
    - Asynchronous: Chat
    - Synchronous: Video
    - Grading: I'll be looking for some (any!) evidence of activity here.
- *Projects* (cf. Kanban) (N.b., The project lives outside the repo.)
    - Demo: <https://github.com/CalvinData/data562-slo>
        - Agile, e.g.: todo-doing-done; sprints; ...
        - Lean, e.g.: visible tasks; limited column height; ...
    - Create GitHub Project *tasks* for all tasks, code or otherwise, e.g.:
        - Code: notebooks; scripts (any artifact committed/pushed to GitHub)
        - Non-code: configure project board; meeting time (all other project work)
    - Manage them through time on the project board, in an agile manner.
- *Issues* (N.b., the issues live in the repo.)
    - Demo: <https://github.com/CalvinData/data562-slo>
    - Issues are GitHub's standard way of managing work, so create corresponding issues for all project code tasks.
    - Create them by first creating the project task and then converting that task into an issue.
- *Clockify* (only for team time tracking)
    - Demo: <https://clockify.me/> (`data562`)
    - Log time for all project-related tasks.
        - Show the clockify time-tracker and dashboard.
    - Clockify integration directly supports GitHub issues only, so:
        - Use Clockify's GitHub integration to log time for task/issues.
        - Use the browser extension icon (on the top right) to log time for non-issue/tasks.
    - Grading
        - I'll check the team project dashboard.
        - Each team member should be logging ~5 hours/week (0.4 * 12 : 40% project; 4*3 hours per week; rounded up due to lack of teamwork in weeks 1-2).
- *GitHub Flow* (i.e.: branches; PRs; merges)
    - Demo (of GitFlow, actually): <https://github.com/senior-knights/course-schedulizer>
    - Grading
        - Pull requests (list)
        - Insights, including:
            - Pulse
            - Contributors
            - Network - Slide the graph all the way to the right to see example for lab 3.

References

- Perhaps a better source of tutorial material? <https://docs.github.com/en>
- Should we distinguish billable vs non-billable time, e.g., team vs class time? <https://clockify.me/help/getting-started/tracking-billable-time>
:::

