Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add project design content #59

Merged
merged 20 commits into from
May 31, 2024
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
identity and expression, level of experience, education, socioeconomic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

Expand Down
9 changes: 6 additions & 3 deletions docs/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ parts:
chapters:
- file: projects/index
sections:
- file: projects/project-design.md
- file: projects/project-implementation.md
- file: projects/project-overview
- file: projects/project-before
- file: projects/project-during
- file: projects/project-after
- file: projects/project-github
- caption: Technology
chapters:
- file: technology/index
Expand All @@ -29,7 +32,7 @@ parts:
chapters:
- file: culture/index
sections:
- file: culture/psychological-safety.md
- file: culture/psychological-safety
- caption: Reference
chapters:
- file: bibliography
Expand Down
1 change: 1 addition & 0 deletions docs/images/project-icon-3.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/images/project-icon-4.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/project-progress.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/project-taskboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/project-template.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/project-timeline.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/projects-montage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/projects/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ Mentorship at a hackathon should be more than just occasional support. It should

Evidence that minimal guidance and lack of structure does not lead to positive project outcomes {cite:p}`kirschner_why_2006`.

## What to expect as a project lead
## What to expect as a project lead
7 changes: 7 additions & 0 deletions docs/projects/project-after.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# After the hackweek

We aspire to keep projects going after the hackweek! This is an optional (yet ideal) outcome of hackweek project work.

* Project leads/helpers will transition to longer-term engagement via mentorship role (optional/with support)
* Additional people join a growing **Community of Practice** (for example, centered on a community software library)
* Software, research results are packaged and shared/published
54 changes: 54 additions & 0 deletions docs/projects/project-before.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Before the hackweek

## Project Leaders Kick-off Meeting

The purpose for the kickoff meeting is for organizers and project leads to meet and discuss what projects are being created for the hackweek. Typically, each hackweek has about 10 projects that are offered. Most will begin development during the kick-off meeting, but it’s possible that the organizers might identify missing projects in need of development that could have wider-ranging benefits to the research community, such as a database or community library.

Goals/Outcomes:
* Identify projects and discuss scope and possible content
* Identify project lead and co-leads
* Identify gaps in project portfolio and decide if will solicit additional leads
* Discuss timeline, milestones, check-ins, and individualized project development support

## Project Development & Support

After the initial meeting, project leads will work on defining their project and creating a GitHub repository from the project template. This includes defining the project tasks and outlining the anticipated skills that participants will apply in the project. This information will be posted to the website for participants to review before the hackweek

Think about the following as you begin to formulate your project idea:
* What problem do you want to solve or explore with your project?
* What would you like you and your team to learn from the project work?
* What tools or datasets might your team use?
* What mini-tutorials/demos could be useful to some/all team members?

Hackweek event organizers will reach out to each project lead team to schedule a project check-in meeting. Feedback from previous hackweeks indicated that check-ins would help project development on track avoiding scrambling to bring all the pieces together the week or night before that hackweek. A check-in offers an additional thought partner with someone that has experience with previous hackweeks to talk through design decisions such as scope, tasks, skills needed/nice to have. It is best if you first try to document some of your initial project ideas (such as creating a first draft of a project README document) prior to this meeting.


## Project Facilitation Training

Project Facilitation Training will be held a few weeks before the hackweek. The first part of this meeting project leads will give a brief overview of how they are organizing their projects and the mini-tutorials team members might need to work on the project. This time will give projects lead an opportunity to learn from each other and identify any overlapping tutorial needs that might be creatively co-organized.

During the second half, hackweek organizers will present information on how to effectively facilitate a group project with a diverse team, with varying skills, skill-levels, and learning desires. The goal of this training is to chat about some of the common scenarios that project leads might encounter and offer suggestions, so that leads can feel better equipped and more relaxed to work with what shows up.


## Project Development Milestones:

1. **Project Leaders Kick-off Meeting**
2. [Create a project repository from the template](project-github.md) before your first check-in meeting
- Begin filling out basic project information in the README file:
- *Title* and *Introduction*
- Add your name to the list of *Collaborators*
- Describe the *Problem*
- Provide an initial description of *Data and Methods*
- Outline *Project goals and tasks*
3. **Project Development & Support**: Schedule and hold your first check-in meeting with hackweek organizers
4. Continue project development with feedback from your check-in meeting(s):
- Update project information in the README file before next meeting
- Begin preparing other content required for your project (e.g. write sample code and Jupyter notebooks, organize and clean datasets, provide additional reading and learning resources for background information)
5. **Project Facilitation Training**
6. Continue project development with feedback from the Project Facilitation Training:
- Update or change project information in the README file
- Ensure that project materials such as sample code, documentation, and data files are accessible (e.g. sample code and environment file in your project repository on GitHub, data files uploaded to an AWS S3 bucket)
- Prepare any mini-tutorials needed or that will be co-developed with other leads
- Share project information with interested participants to recruit team members
7. **Hackweek**: Form your project team and get to work!

3 changes: 0 additions & 3 deletions docs/projects/project-design.md

This file was deleted.

69 changes: 69 additions & 0 deletions docs/projects/project-during.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# During the hackweek

During the hackweek, participants will spend time with tutorials and with project work. The following is a suggested outline for daily check-in meetings. On the final day of the event, teams will want to set aside some time to gather material that they would like to share with the entire group to showcase what they worked on.

## Day 1 of the hackweek: Getting started

We facilitate a project team formation session on the first day of the hackweek. During this time we will finalize project goals and objectives. Hackweek organizers and facilitators will help each team set reasonable goals and develop a roadmap for task completion. The checklist below can be used for the first team meeting to focus on team introductions, reviewing the project scope, and identifying tasks.

* Team introductions:
* Introduce yourself and what interests you about this project
* What are your unique learning goals?
* How do you work best? What level of group interaction works for you?
* What skills and background are you most excited to share with the team?
* When are you available for team check-in meetings or group work sessions?
* This is also a good time to review the event code of conduct and discuss as a team:
* How is the team going to communicate?
* How is the team going to discuss ideas and make decisions?
* How are tasks going to be assigned?
* Identify connections between each participant's personal goals and the specific project tasks
* List the tasks that will need to be done (starting with any that the project leader may have already identified)
* All team members are encouraged to contribute here. All ideas and perspectives are needed.
* Identify any clusters of common tasks or tasks that must be completed sequentially
* Team members volunteer for tasks that match their personal goals and interests, identify opportunities for working in pairs or small groups
* Identify if any tasks require skills or knowledge that the current team does not yet have (the project team helper may be able to connect you with someone to provide those skills or knowledge)

```{image} ../images/project-taskboard.png
:alt: example of identifying tasks and organizing them into clusters
:class: bg-primary mb-1
:width: 800px
:align: center
```

* Set up team organization infrastructure on Slack and GitHub (see [Organizing your project on GitHub](project-github.md))
* Project work begins!
* As progress is made, project outputs (code, notebooks, figures, documentation, etc.) are recorded in the team's GitHub repository (a good place for team members to get started is by making their own folder under the *contributors* directory)
* All team members check back in at the end of the day, review progress towards tasks, anything preventing progress, and planned next steps
* Project leaders may also want to share with the whole hackweek group: How the project is coming along, what are the objectives and tasks identified by the team today, and what other skills might your team need to be successful?

## Days 1 - 5: Project work

A "stand up" meeting model may be useful for your team to check in at the beginning and end of each day of the hackweek. During these short meetings, each team member is given a minute or so to briefly share 1) progress they have made on their tasks, 2) anything preventing progress, and 3) what they plan on working on next.

* Begin each day with a team meeting to discuss:
* Progress made on the previous day
* Anything preventing progress
* Tasks for this day
* Check back in at the end of the day:
* Progress made today
* Anything preventing progress
* Planned next steps for tomorrow

Organizing this information on a four-column chart (ideas, in progress, need help, done) with sticky notes (or a virtual chart) may be useful, such as the example below.

```{image} ../images/project-progress.png
:alt: example of using sticky notes to keep track of project progress
:class: bg-primary mb-1
:width: 800px
:align: center
```

## Day 5: Sharing results

* Begin the day with a team meeting to discuss:
* Progress made on the previous day
* Anything preventing progress
* Tasks for this day
* Decide what time to stop work and organize material to present
* Organize material to present (push changes to repository, update README, etc.)
* Each team will have about 15 minutes to present all the things you did and learned during the week, recognize and celebrate individual contributions to the group effort, what challenges arose, what might be worth trying next
46 changes: 46 additions & 0 deletions docs/projects/project-github.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Organizing your project on GitHub

We encourage all teams to use GitHub to coordinate sharing of ideas, data and code. Additional tools may also be provided by the hackweek organizers, such as a Slack workspace for communication (hackweek organizers can set up a Slack channel for your project team).

## Project Name

Before getting started, you'll need a name for your project. A team exploring snow surface temperatures used the name "hot-pow", and one looking at ice-ocean interactions was called "floes-are-swell". Keep it short and memorable, and most of all, have fun!

## Use our GitHub Project Template

We have created a GitHub template that is pre-populated with directories and a README layout the we find works well with most teams.

We encourage all teams to create a new GitHub repository within the hackweek organization, even if it is just to point to an already-existing repository or package your team is contributing to for their project.

* Go to: [https://github.com/uwhackweek/sample_project_repository](https://github.com/uwhackweek/sample_project_repository)

* Click the green "Use this template" button on right side of page:

![new-repo-screenshot](../images/project-template.png)

* Choose "Create a new repository"
* Name your repository using a short name.
* We recommend choosing "Public" so other participants can follow progress
* Add a "topic" to your repository details (click on the gear icon next to the "About" section on your repository page) to help others find your work (e.g. `uw-hackweek-snowex2024`)

Visit the [GitHub documentation](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template#creating-a-repository-from-a-template) for more details on creating a repository from a template.

## Create a new GitHub team within the hackweek organization
GitHub teams provide a convenient way for you to set permissions on your project repository for groups of people, rather than having to do this for each individual on your team.

1. Go to the "Teams" tab near the top of the GitHub hackweek organization page
1. Click green “New team” button
1. Use your short project name for "Team name"
1. Set the team to visibility "Visible"
1. Click on the "Create Team" button
1. Add all team members by clicking the “Members” tab and the green “Add a member” button

## Add the project team to your project repo

1. Go to the new repository you just created
1. Click “Settings” tab in upper right corner
1. Select “Manage access” on left side of page
1. Add your team name under the "Manage access" section
1. Select “write” to enable all team members to make commits

Visit the [GitHub documentation](https://docs.github.com/en/organizations/organizing-members-into-teams/creating-a-team) for more details on creating a team.
3 changes: 0 additions & 3 deletions docs/projects/project-implementation.md

This file was deleted.

Loading
Loading