Git and GitHub provide developers with many ways to share their work, like pushing to branches, forking repositories, and opening issues and pull requests. But with so many ways to use these tools, it can be difficult for students and other new developers to learn how to use them effectively.
Luckily, GitHub has features that can help instructors with productive planning and discussion, like issue and pull request templates, labels, project boards, and saved replies. Not only can instructors use these tools to give feedback, but they can also help students learn important communication and project planning skills.
When creating a repository for your students to work from, you’ll probably include starter code, tests, or a README file with assignment details. But did you know you can also include templates for common issues students may need in order to create a new feature or write a useful bug report?
Issue templates provide context, such as guidance or starter text, when creating a new issue. An issue template can give students hints about what to write, often with “fill in the blank” text, a checklist, or common questions to answer. Instead of starting with the blank canvas of an empty issue, students can use the guidelines you provide.
Issue templates are Markdown files that are stored in the repository’s
.github/ISSUE_TEMPLATE directory. Because they’re part of the repository like any other file tracked by Git, they persist across forks and are included when you use them as an assignment repository in GitHub Classroom. Later, when your students create issues in the repository, they can start with any template options:
Similarly, pull request templates can guide students to describe the changes in their pull request while ensuring they’ve included all the required information.
Equipped with issue and pull request templates, students can get organized in a few different ways:
- They begin by creating issues for major components of their assignment.
- For group assignments, they might assign issues to specific students.
- For larger or long-running projects, students might even copy a project board to help them plan out the work.
As groups continue to work, they might open pull requests using templates in their repository to structure their writing. Then, other student members of the project team may join the discussion or review comments, while providing peer feedback. When the students agree on changes, they can merge the pull request and move on to the next task on their project board.
When students finish or reach a milestone it’s the teacher’s turn to evaluate the work. Instructors can take advantage of the same tools as their students to highlight accomplishments and encourage improvements.
For example, if students have submitted, reviewed, and merged a pull request, an instructor can provide follow-up comments or line-by-line code review. Instructors can do the same with issue comments to give students feedback on multiple levels—from assessment of design choices to team workflow and communication.
Instructors can also follow the software development process by giving feedback in the form of new issues or pull requests. For example, an instructor might discover a bug in their students’ work and file an issue describing the problem. When teachers model real-world development scenarios, like opening and triaging issues while sharing feedback with students, everyone wins.
If all that sounds like a lot of writing, you’re probably right! But you can save time by using GitHub’s saved replies. If you find yourself making similar comments on students’ work, you can save text that you can reuse it in issues and pull requests. You can even use saved replies when starting an issue or pull request, which is a handy shortcut when the repository you’re working with doesn’t have templates.
Even with the support of GitHub’s communications tools, there are still many ways to give students feedback on their work. If you’re already using issues or pull requests to share feedback, tell us about your experience in the GitHub Education Community.