Less noise, more data. Get the biggest data report on software developer careers in South Africa.

Dev Report mobile

Redefining GitHub Projects: Creating my ultimate productivity toolkit

22 June 2023, by Clifford Ouma

I have used a lot of productivity tools to try and help my developer workflow. But most tools are either ineffective or expensive to use. So I decided to use GitHub's project management features, such as GitHub Projects, issues, and milestones, to track my plans and goals. Here is how I did it.

OfferZen_Redefining-GitHub-Projects-Creating-my-ultimate-productivity-toolkit_inner-article

Why I gave GitHub project management tools a try

The first time I interacted with GitHub's project management features was when I was moving into the world of open source. I had joined a friend in building AfriSource, an open-source community that aims to give more visibility and support to the creative and innovative work that was being done at hackathons and expos. Since most of the projects were software-based, we figured the best place to keep it was at the home of software: GitHub. The problem was that we needed an inexpensive tool to help us create order and stay accountable. Around the same time, I was also a student and planning my career and future goals, meaning that I also needed a way to organise my tasks, keep track of my progress and celebrate my achievements. This was when GitHub's project management features were mentioned to me.

When I learned about GitHub Projects, something intrigued me about it - I realised that it could be the perfect solution for me. It was free, flexible, and fully customisable. I could create boards for different aspects of my life, add cards for each task or goal, and drag and drop them as I completed them. I could also invite friends to join my boards and help me stay accountable.

Seeing as it was a free tool, I told myself, 'Why not try this one out? What could be the harm?' Little did I know I would find it extremely helpful in improving my productivity.

Leveraging GitHub Issues, Milestones, and Projects

After testing out GitHub's project management tools and gearing them toward improving my productivity, I realised that I needed three specific tools to be as productive as possible: GitHub issues, milestones, and Projects. By leveraging all three tools, I designed an effective system for myself that has boosted my workflow by organising my tasks, tracking my progress, and staying motivated throughout the process.

To understand how my system works, let me break it down into the three different project management features that I leverage.

#1 GitHub Issues

GitHub issues is a feature available to any GitHub repository and allows developers and users to report bugs, ask questions, or request features. In my context, I used issues as task items. I created an issue for every task that I needed to do. I provided a brief title and any extra details about the task in the body. The body also allowed task lists which I leveraged to break down big tasks into minor steps, making it easier to track progress and complete the task in manageable chunks. After completing a task item, I would close the issue, signifying the completion of the task. Party time!

Clifford-Ouma-GitHub-Screenshot-1

A screenshot of a GitHub issue with subtasks in the body and labels, projects and milestones associated with it on the right pane.

Labels, assignees and pinning make managing issues easier

The labels feature helped me arrange my tasks into labels depending on their type - whether they were related to work, school, or even normal chores. This made it easier to search and filter tasks.

As for the assignee feature, I used it to designate responsibility for issues that involved others, signifying who was responsible for the issue. This feature was especially helpful for me when working with accountability buddies and in teams. I could easily assign issues to myself and any other person if need be.

Pinning issues was of great help. I can pin a maximum of three issues, which helped me to pin the most important task items (issues) for the week. This involved those of higher priority for me and those tied to upcoming deadlines.

GitHub issues was very beneficial to the productivity system as it provided a way to create task items, assign labels to them for easy identification and grouping, and with the assign feature, I could easily have a collaborative productivity system for more accountability.

Clifford-Ouma-GitHub-Screenshot-2

A screenshot of the issues tab. A pinned issue at the top and a list of other issues with their labels.

#2 GitHub Milestones

Now issues can get messy at times, especially when you have many of them. And sometimes, you might have a bunch of issues that are focused on a common goal. That is where GitHub milestones comes in. With milestones, you are able to create a collection of issues that lead to a common goal/outcome and track the progress. With every issue closed, the progress of the milestone increases.

I created the milestones from the milestones button in the issues tab. From there, I just select 'create milestone', then give it a title, due date (optional), and description. Then when creating any issues, I would include that they are part of that milestone.

Clifford-Ouma-GitHub-Screenshot-3

A screenshot of a created milestone, its title, description and progress (issues opened and those closed)

Milestones helped me track my progress and celebrate any notable wins. Whenever I would reach 100% on a milestone, I always celebrated the moment.

GitHub milestones is beneficial to the system as it:

  • gives more order to the task items,
  • groups tasks related to a common goal,
  • has the option of adding due dates for goals with deadlines, and
  • helps me celebrate wins whenever I achieve any milestone.

All this has provids me with more motivation to keep winning.

#3 GitHub Projects

GitHub Projects is the fabric that helps all the other project management features make a great productivity tapestry. It leverages the use of both GitHub issues and milestones, making the most out of both of them.

GitHub Projects is used to make the tracking and management of issues and milestones easy. It provides loads of features like views and layout.

GitHub Projects can be created from the repository level. By going to the repository's projects tab, you can either link it to an existing project or create a new project for that repository. You can then select how you want to view the project: whether a Kanban board, a table, or even a roadmap - you can also use the common GitHub Project templates provided there. No matter the view you choose, you can later change to any other view to see your project from different angles.

Clifford-Ouma-GitHub-Screenshot-4

A screenshot of a GitHub Project with the Kanban Board view.

For my productivity system, I created a project for the repository and used the board view as it suited me better. The most important features in GitHub Projects were views, fields, and workflows.

Views make it easier to visualise my project

As mentioned above, views are meant to make visualising GitHub Projects easier. Essentially they are just a window into seeing your project from different ways. The three available views are:

  • Board view: This uses a Kanban-style board that groups tasks in terms of their statuses. For example, todo, in progress, and done, etc. You can always change the status fields and customise them to whatever you want.
  • Table view: The table view arranges the task items into a list, with each task in a row and the columns showing different fields for the task. For example, its status, assignee, labels, etc.
  • Roadmap view: The roadmap view is specifically useful for projects as it arranges the view as a roadmap with dates and highlights tasks at their specific times/dates. In my system, I did not use the roadmap view.

Clifford-Ouma-GitHub-Screenshot-5

A screenshot of a GitHub Project in table view.

Fields allow you to see different aspects of a task

In GitHub Projects, you can set fields to show you different elements of a task, including its status, labels, milestones, assignees, etc. They can be customised and have their visibility toggled on and off, allowing you to see only what you want. This helps prevent clutter and gives you an even better view. You can also add new fields, including dates and iterations, if tasks are being done in sprints.

For me, the status field was invaluable as I could easily visualise my tasks to be done, what I am currently handling, and whatever I have accomplished already. This meant I could have a glimpse at the state of things and make any necessary adjustments.

Workflows make it easier to streamline tasks

Workflows provided a way to automate some repetitive tasks when working with GitHub Projects using GitHub actions. This helps me save time and energy for task details that could be automated. In the workflows tab of GitHub Projects, you can see the default workflows available, and you can modify them and utilise them in your productivity system.

Clifford-Ouma-GitHub-Screenshot-6

A screenshot of the workflows tab in GitHub Project. It shows a workflow for when an item is added to the project, its status is set to todo.

The one I mostly used was that of setting the status of a task item when it is opened and when it is closed. Whenever I open an issue/task item, it automatically sets the status of the item to todo, and when I complete a task item, it sets the status of the item to done. This saves me the time and effort of having to drag the item to its respective status on the Kanban board or setting the right status on the table view.

GitHub Projects for my productivity system was the icing on the cake. It was what held everything together and gave me an easier time managing and tracking any progress in the system. I liked its flexibility in how I could set it up and manage things, as well as its automation for some repetitive tasks, hence saving me some time.

The benefits of using this kind of system

Being a technology enthusiast, a developer, and a productivity freak, exploring GitHub for productivity was amazing. It gave me the thrill of using it, and here are some amazing benefits which I'd like to share:

  • It was best when used collaboratively. I found it very useful in building accountability partner productivity systems. With GitHub's ability to add collaborators to projects and repositories, I could easily add people to the repo, and we'd create our goals as issues and then track each other's progress in a transparent manner. Everyone could see each other's goals and also see each other's progress through GitHub's email notifications. I had no problem working seamlessly with other individuals to push each other to achieve our goals.
  • It is customisable. Using GitHub for productivity, I could adjust how I set things up and utilise the system to its fullest potential.
  • It has very few limitations as to how many people I could work with or the number of labels, task items, and milestones that could be created. This let me work free of restrictions and create a system that worked best for me.
  • It's great for devs. I found using this system proves both exciting and great for developers and those who are familiar with GitHub. This made the system exciting and thrilling to use alone or in an accountability team with fellow GitHub users.

The challenges I encountered with the system

This wouldn't be complete if I didn't highlight some of the challenges I faced with this system. Some of the challenges faced here included:

  • Organised collaboration. When working with multiple people, let's say in an accountability system, finding the right rhythm to how you work can be a bit of a challenge. One would have to put in place templates and provide information to help everyone understand how to best use the system.
  • Setup time. It takes a bit longer to build and customise the details to best suit you. Setting up things like issue templates and workflows takes effort in the beginning, but in the long run, they do save you time and improve how you efficiently use the system going forward.
  • GitHub phobia. When having an accountability system with people who are not developers or familiar with GitHub, there might be some phobia or fear that using it is too complex, which is not the case. Nevertheless, I found it difficult to convince them to collaborate using this system. But setting up issue templates and issue forms was the best way to make things easier for them. Then they could see how useful the system could be.

Despite these challenges, I'd still advise anyone with a knack for trying different ways to get productive to try this out. I have a template repository which is linked to a template project. You can go duplicate it and use it to try out this system and share your thoughts about it.


Clifford Ouma is an Open-Source Community Manager and front-end web developer. He loves to connect with people who share his passion for coding, learning, and community building. When he’s not on his computer, Clifford likes to cook and travel.

Read More

OfferZen_Want-to-Step-Up-Your-Writing-Game_Source-Banner

Recent posts

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.