DEV Community

Cover image for New year, new planning habits: using GitHub Projects to track your goals
peckjon for GitHub

Posted on

New year, new planning habits: using GitHub Projects to track your goals

At the beginning of every year, I do the same thing: resolve to get myself fitter, learn a new language, and build out that awesome new side project. And at the end of every year, I do the same thing: look back on my unfinished goals, and regret my failures. This year will be different. It's time to break the cycle, to build out specific and actionable plans, to itemize and track my progress… in other words, to do proper project management. And since my team lives in GitHub every day, I thought I'd use the opportunity to see if I can use GitHub Projects (the tool we use for all our planning and tracking) for my own self improvement, to manage my new year's resolutions!

Getting started is always the most difficult part of any project, and while I could build out my project from scratch, I have the option of starting from a template instead. There are two kinds of templates to choose from:

  • Organization-level templates can be created by any org member with the right level of access. These are great for standardizing our project management practices, can be created from scratch or converted into a template from an existing project, can have preconfigured views, workflows, custom fields, and more.
  • Built-in templates, provided directly by GitHub, are a good starting point for generic projects. In this case, I don't need something that'll fit a specific organizational standard, and this is more of an ongoing planning project than a specific feature release, so I'm going to pick GitHub's "Team Planning" template and get started!

Screenshot: selecting the "team planning" template in GitHub Projects

Even though this isn't a typical team-oriented project, it's clear that there are a lot of views and options that will be useful. But before I start exploring all the possibilities, I'll start by adding a few items to the project. Some of my new year's resolutions are conceptual, like "eat better" or "practice speaking Spanish", and they don't connect to any existing code or repositories. That's fine – GitHub Projects allow me to rapidly hand-enter any text and immediately turn it into an item!

Screenshot: the backlog view of a GitHub Project named "peckjon's new self"

However, some of my resolutions are related to existing repositories that I'm already working on. For these, I have a few options. I can type '#' while adding an item to get a list of repositories I'm connected to, pick one, then select any issue or pull request to add.

Screenshot: adding an item to the backlog by selecting an issue from an existing repository

For ongoing projects, though, this will get tedious; I don't want to manually add every Issue in my repository. Fortunately, GitHub Projects has a concept of Workflows: flexible and graphically-configurable automation which can react to changes in items, related repositories, pull requests, and more. Among other options, this means I can easily configure a workflow to notice whenever an issue is created in my repository, and immediately add it to the project.

Screenshot: setting up a workflow to automatically add new issues from a repository to the project

Now that I have a few items, I can start thinking about how I want to visualize my work. A Project can have as many different views as I want, each represented by a tab at the top. And each tab can have a different layout, "Board", "Table", or "Roadmap". The template I used has examples of each, the first being my Backlog, shown as a simple Kanban board. I'd like a little more granularity though, so I'll click the '+' to add another column.

Screenshot: adding a new column to a view

I could go a lot further with this, filtering items by type or label, adding swimlanes, or even changing what field is used to define the columns. But for now, I'll simply drag a few items into my new "Up Next" column, then take a look at another view: "Team Capacity". This is a great example of using a Table layout to summarize information. By summing the effort estimates I've placed on each work item, then slicing the view by Assignee, I quickly see who might be overburdened and who has capacity for more tasks. In fact… there may be something I can offload to free up a bit of my own time! I bet my friend @geektrainer has a decent salad recipe he's willing to share, so I'll click on that item and assign that to him. My view immediately updates to show the rebalanced tasks.

Screenshot: a table summarizing the workload on each team member in the project

This is great, but it's also just a single point-in-time. I know from experience that taking on all my resolutions at the same time will be a disaster (ask me sometime about the emotional load of taking on a new job while going keto during dry January)! Instead, I want to plan out my tasks over the next few months. For that, I'll use Iterations, which allow me to create and assign named date ranges. I prefer thematically-named two-week sprints, so I'll use "Attitude" for Jan 1-14, "Balance" starting Jan 15, "Commitment" for the next, and so on. Clicking on the Roadmap tab, I can now easily visualize what I'll be working on this quarter.

Screenshot: project roadmap view with items on a timeline

There are lots of ways I could keep improving this Project! I might want to…

  • add a new view (perhaps a "Triage" table to help me see new tasks that have just come in, then assign priority and effort estimates)
  • create some new custom fields containing text, numbers, or a list of options (e.g. a "focus area" with options "social", "emotional", "physical")
  • add column limits so I'm not overwhelmed with too many items at once
  • create custom filters so each of my collaborators has a personalized view

But for now, I want to help ensure I stay on track, and one of the best ways to do so is to make my efforts publicly visible. By inviting a few friends to my project, I can take advantage of a great new feature: status updates. First, in my project's settings, I'll click into "manage access" and invite @scubaninja – she's great at motivating me to get work done!

Screenshot: inviting a collaborator into the project

While collaborators can always choose to get notifications about individual issues if they desire, I want to go beyond this with regular, handwritten summaries. I'll treat this a bit like a newsletter or point-in-time update on the project. While there's no set format for updates, I can use rich formatting and generally will want to include:

  • high level details about how the project is currently going
  • any relevant KPIs/metrics
  • details on any recent successes or misses
  • celebration of contributors' work (using '@' mentions)
  • potential risks or upcoming challenges

Screenshot: adding a status update to the project

This exercise has been great for kicking off my own personal goals, but I'm even more excited to see how teams everywhere will use GitHub to initiate, standardize, maintain, and iterate on their collaborative projects. Whether you're just beginning, migrating from another project planning platform, or investigating our newest features, I urge you to try creating and using organizational templates, adding a project to your existing repositories, and customizing your existing projects to include new views and custom fields. With the power of GitHub Projects at your fingertips, you'll be crushing it in no time. Get started today!

Top comments (3)

ricardogesteves profile image
Ricardo Esteves

Nice, great article!

mrlinxed profile image
Mr. Linxed

Great article. It's good to remember you can use GitHub for more than just programming projects.

It's now about what tools you use, but how you use the tools that you do use.

anmolbaranwal profile image
Anmol Baranwal

This actually showcases that you're planning things ahead and using it.
Unfortunately, in most of the cases people are not going to do this extra hard work.

I've used it -> It's pretty awesome!