How to Use Github to Manage Projects
There is a pervasive thread in the industry when it comes to choosing the right tools for the job. Working in multiple companies, you slowly realize everyone is looking for “the best” while missing the bare necessities of what they need.
For example, a small startup might end up hiring a high powered project manager, because they want to move to AGILE when in reality their size and makeup could be better suited with a self-managing team.
There is constant background noise in the industry when it comes to adopting the latest trends in management, content creation, or technical skills, and it’s not always what’s best for your company.
A different way to go about this, for instance, could be minimizing the number of tools a project uses, thus centralizing information and not forcing developers to create 15 different accounts, one for each repository, site, and project management tool.
I’ve been toying with the Github project management tool for this reason. It doesn’t do everything, which is the best thing about it.
Twenty years ago, most people used Microsoft Office for all their word processing needs. I remember the first time Microsoft unveiled the Office “ribbon” UI and did away with any semblance of simplicity the writing process was supposed to be about. On smaller laptops, which were quite popular back in the day, the ribbon took about one-third of the available real estate. It was a messy attack on the senses, but most importantly it showcased the amount of options Word had that nobody was using.
I see the same thing happening with a variety of tools today, to a lesser extent (nothing seems to be as viciously bloated as Microsoft Office was).
So given that we were already using Github in one of our projects, I decided to run a little experiment to see if we could eliminate the “project management” tool and centralize both the version control system and the project management system in one site.
It turned out to be simple.
Setting Up a Project
What you need to do is go to the Projects tab of your repository and click on Create Project. This will begin the setup process.
On the next screen, we’re presented with some templates that we can choose. More on these later.
The key to the Github project management system is that it includes triggers that automatically move tasks around. So for example, you could set up a trigger where whenever someone creates a pull request, it automatically adds it as a task and puts it in the appropriate column (“New” maybe?). Likewise, a pull request that is set to “Needs Approval” could be used as a trigger to move it to a column marked “In Review”.
The templates presented on the creation screen are nothing more than a quick way to set up both: the columns and their corresponding triggers.
For this article, I’ll select the “None” template. What this does is that it allows me to customize every aspect of my project without sacrificing functionality.
The next screen has a blank board with no columns or tasks. You can create new categories for your tasks in here. The trick is to pay attention to the Presets box when you do. By choosing a preset, you unlock the customizable trigger behaviors.
For example, the To Do preset includes triggers for newly created issues and pull requests to be moved into this new column the moment they’re created.
Rinse and repeat for as many columns as you need. In my experience, the fewer columns, the better, as it avoids having to hunt down tasks when taking a bird’s eye view of the whole project.
Once your project is set up, actions linked to triggers automatically move issues between columns. If set up correctly, there won’t be a need for much manual interaction.
One of the cool things about having projects linked to your repositories is that you can create as many as you need. From a conceptual standpoint, this allows us to split our larger project into smaller chunks, or “features,” that would then go to become Github “Projects” inside the repository.
When creating tasks or pull requests, you can link them to a project, and they will cause the project tracker to show how much work is left at a glance.
All in all the Github project management system does its job, and it does it well. It might not be a superpowered Kanban board, but going back to the Word analogy: is that really what you need for your project?