Revolutionize Your Teamwork: How GitLab Can Take Your Project Management to the Next Level

Deyuna Rusmiland
9 min readMar 19, 2023

--

As a developer, you must be familiar with GitHub or GitLab. Both web-based repositories help manage code and share local file changes with a remote repository (upgrad.com). But, more often or probably always use GitHub than GitLab because, based on the GitHub website, more than 100 million people use it to discover, fork, and contribute to over 300 million projects. From that, I'm not surprised if you use GitHub as your repository.

Then, here I am trying to influence you to use GitLab especially if you want your project management to the next level. I will explain how GitLab can improve the management of a group project's efficiency with a walkthrough of my experience when using GitLab in the PPL (Computer Science, University of Indonesia course) final project.

Without further ado, let's jump to it! 🚀

✨ Multiple Repositories

In GitLab, a project can have multiple repositories associated with it. This is useful when you want to split your codebase into various repositories, such as when you have different parts of your project that are developed independently.

For example, my class has multiple group projects such as aspiring.it (my team), Cenmo, Foresight, etc. So, my class creates multiple subgroups in GitLab. Then, my group creates various projects such as frontend, functionality, and mono repo.

Using subgroups or nested projects in GitLab allows you to manage access more effectively if you want to split your codebase into smaller, more manageable parts. By splitting projects, you can improve your team's collaboration.

Image 2. multiple subgroups
Image 3. multiple projects

Such a good feature from GitLab, don't you think? But, if you think the advantage of using GitLab is only this, you must be corrected! Let's dive into project management in GitLab. 👀

✨ Project Management

#1: Epics

In Agile, an epic is s a collection of user stories that describe a larger user flow, typically consisting of multiple features.

Image 4. Epics in GitLab's Sidebar

My team uses the Agile method to work in a group. From that, the Epics feature in GitLab is useful when working on a team, especially when implementing the Agile method.

In GitLab, Epics is a high-level project management feature that allows you to organize related issues and sub-issues into a single group.

Here is an example. My team has nine epics such as authentication, settings, community, weekly challenge, subscription, public page, etc. From that epics, we divided into issues into each epic. Authentication has registration, login, and logout issue; the public page has a landing page and feeds.

Image 5. Child issues and epics

With epic, we can create a larger group of features and add related issues or sub-issue to the epic. We can track our progress using various metrics such as time spent, estimated time remaining, and percentage complete.

Image 6. Roadmap

Notice how much I write "issues" in Epics a lot? Guess one of you is thinking about what issues are and how issues can improve team management. So, let's read the next sub-part of Project Management; Issues. 📖

#2: Issues

Use issues to collaborate on ideas, solve problems, and plan work. Share and discuss proposals with your team and with outside collaborators.

Image 7. Issues in GitLab's Sidebar

If epics are the container for related issues, then issues are a unit of work that needs to be completed as part of a project. It can be a small feature, task, bug, design, or related work item that requires action.

Image 8. Work item

From the image above, we create issues. Two of them are Frontend Create Post and Backend Create Post. This is how we implement issues; we split large features into small tasks. This is efficient because each team member can focus on an issue assigned to them.

I will give you a walkthrough of one of the aspiring.it issues, Landing Page.

Image 9. Landing Page's Issue

This page contains the following:

  • Title

The title of this issue is Landing Page.

  • Description

You can fill in any description of the issues as long as your team agrees. My team filled the description with the Definition of Done to design, backend, frontend, and Acceptance Criteria. Then, if we did all the criteria in the checkbox, we just checked the checkbox.

  • Assignee

Fill the assignee section with who this task assignee is for. Landing Page is my responsibility in this case, so the assignee is me.

  • Epic

The landing page is related to the Public Pages epic; therefore, I put Public Pages as this epic.

  • Labels
Image 10. Labels

Labels help the reviewer know what status this issue has. For example, when aspiring.it landing page is still in the design phase on Figma, I click Design as labels. In this case, Landing Page is passed in the review phase and already on the main branch, so the labels are Done.

  • Milestone

A milestone is a way to track progress on a specific group of issues or merge requests that share a common goal or theme in GitLab. In this case, Landing Page is one of the sprint 1 goals.

  • Weight

Weight or user points is used to determine how much effort is required to complete a product backlog item or any other piece of work in GitLab and Agile method. The weight can be used to estimate the amount of work required for each task or issue and helps with planning, prioritizing, and scheduling work.

📄 Issue Board

Image 11. Issue board

Based on GitLab docs, the issue board is a software project management tool used to plan, organize, and visualize a workflow for a feature or product release. Issue boards help you to visualize and manage your entire process in GitLab. You can add your labels, such as the common ones "To Do," "In Progress," "Review," and "Done", and then create the corresponding list for your current issue. Then, you can drag the issue card from one label to another.

The issue board provides an easy and quick way to visualize the status of all issues. This will improve team focus on their tasks because they know what needs to be done next.

#3: Merge Request

A merge request (MR) is a request from someone to merge in code from one branch to another (assembla.com).

Image 12. Merge request

You must be familiar with Merge Request and know how important it is when you are in the collaborative workflow. So, GitLab obviously has Merge Request features as one of the key features.

In GitLab, you can create a Merge Request in a seamless and easy way. Here is an example of how I create a merge request in my team:

  1. Create a new branch
    Before creating a merge request, you have to create a new branch that contains the change you want to merge.
  2. Commit your change
    All change is followed by a commit message. In aspiring.it, we use format <type>: <subject>. There is 4 type in this case, such as test (add test for the feature we create), feat (add feature), chore (add implementations that are not related to functionality), and refactor (refactor production code, make improvements to previously created code)
  3. Click New Merge Request
    Once you commit your change to your branch, you create a new merge request to the desired target branch. In my team's case, we often create merge requests when want to combine my branch with the main branch.
  4. Add a description and fill you want to fill in.
Image 12. Landing Page’s Merge request

Merge Requests play a vital role in improving collaboration in a team. They allow team members to review and discuss code changes before they are merged into the desired branch. Benefits of using Merge Requests such as Code Review, Collaboration, Transparency (because showing the changes made and the comment that contain feedback provided by team members), and version control (teams can keep track of changes made to their codebase and roll back changes if necessary.)

For example, I review my team’s front end on the comment and my team responds to my thread. The merge request feature is helpful because I can see any change and get feedback about my tasks from other people in the aspiring.it team.

Image 12. comments in a merge request

Did you notice that I mention version control? In the next part, I will discuss version control! 💡

✨ Version Control

Version control, also known as source control, is the practice of tracking and managing changes to software code (atlassian.com).

Version control is a vital part of managing code in team projects. For example, developers regularly create and modify source code, usually organized in a folder. Different developers may be working on other parts of the code simultaneously, which can result in conflicts and compatibility issues. Version control addresses these issues by tracking changes made by each team member and identifying conflicts. Testing and development are carried out in parallel until a new version is ready, ensuring that any introduced bugs are resolved.

Another example is branching, which allows each member to work in different parts of the codebase without interfering with each other. Also, we can see the history that keeps track of changes, making it easy to track down the bug and revert changes if necessary.

Conclusion

In conclusion, GitLab is an excellent tool for team collaboration and project management, offering features such as multiple repositories, Epics, Issues, Merge Requests, and Version Control. By splitting projects into smaller, more manageable parts, organizing related issues, and tracking progress through various metrics, GitLab helps teams work more efficiently and effectively.

Additionally, GitLab’s Version Control system helps developers track and manage changes to software code, which is essential in preventing conflicts and compatibility issues in team projects. Using GitLab can significantly improve software development projects’ teamwork, communication, and productivity.

Then, what do you think? Do you still doubt using GitLab as your repository and project management tool? 🤗

And that's a wrap, Thank you! 💖

I will appreciate your feedback 💬 & clap 👏.

If you want to collaborate, don't hesitate to contact me at deyunarusmiland@gmail.com or through Linkedin

--

--

Deyuna Rusmiland

UI/UX designers for over a year and counting. Has an insatiable appetite for growth & constantly seeking new perspectives every day