Teamwork Tools: Harnessing The Power of Apps for Development

Ahmad Hanif Adisetya
9 min readFeb 25, 2024
Photo by Austin Distel on Unsplash

In a team software development, each member is pushed to build three senses throughout the process. Those senses are collaboration, coordination, and cooperation. It is not just the job of the team leader to enforce it, but a great effort by the whole team. Sometimes it’s a tough task to seamlessly integrate those three essential elements. One way to do it is by harnessing the power of software development team tools. Choosing and utilizing the right tools can serve as a backbone, empowering the team’s ability to cultivate these key qualities.

There are numerous tools available on the internet that has helped multiple teams in reaching their development goals. Some to mention are Slack, Jira, Trello, Linear, and so much more. Each team has a different approach and preferences, which coherently makes their choices of tools varied. Our team, in building PoltekSSN Tracer Study, chose 2tools as our main helper during development. Those tools are Notion and GitLab.

Flexibility of Notion

Flexibility is paramount in software development, where requirements and goals often shift rapidly due to changing client needs or emerging project challenges. Notion’s versatile platform caters specifically to these dynamic environments, enabling teams to adapt quickly without losing momentum. Its integration capabilities with other tools such as Slack or Jira further streamline workflows, making it a central hub for project coordination

Notion is an all-in-one workspace that can manage your workflow and write down documentation on your current project. Notion can be used for personal uses, or even collaboration with teams. This is perfectly handy for a team of developers that need space to put all of their plans on. By having a single collaborative workspace, all of our team’s needs are correctly and tidily stored. During our Software Development Life Cycle (SDLC), Notion is an integral part since the very beginning. Here are some of Notion’s flexible features that we utilized.

Sprint Tracer

Notion allows us to creatively put our needs in place. This enables teams to put sprint goals neatly on their Notion’s page. It is also highly customizable, allowing teams to update, delete, or add new elements. Currently we used an image based on a template for our team’s sprint tracer. But Notion allows teams to use any feature it has to enhance their sprint tracking.

The “Sprint Tracer” visualizes the timeline and key components of each sprint, including the goals, main features, and performance metrics. This structured view provides a clear roadmap of what has been planned and achieved across different stages of the project. Each sprint, from “Alpha 1.0.0” to “Alpha 4.0.0”, is laid out with specific objectives like building authentication systems and survey components, which directly align with the overarching goals of the development lifecycle. This methodical layout helps the team track progress against set benchmarks and ensure that each sprint contributes effectively to the project’s cumulative development.

Epic

With a variety of features, Notion enables teams to create project’s epic. An epic represents a series of user stories that share a broader strategic objective. By putting it on Notion, teams keep track of the current development progress efficiently. Organizing has been made simple too, with the ability to group based on labels, same business objective, and more.

This screenshot from the “Epic” section in Notion shows how various components of the project are managed and tracked. Each epic, like “Authentication” or “Study Program”, is categorized under different development stages such as Planning, In Progress, and Ready for Review. This organization allows the team to monitor the progress of each epic efficiently, ensuring that all tasks are aligned with the project’s timelines and goals. The visual percentage bars and assignment tags help in quick assessment of progress and workload distribution among team members, facilitating better resource management and priority setting.

Tasks

Notion is also able to create a table like view to display the current tasks. With the ability to create an integrated database, an elements data can be shared with another element.

The “Tasks” interface in our Notion offers a granular view of individual tasks under each epic, categorized by their status such as Open, In Progress, and Done. This detailed task management system enables the team to track specific activities within each epic, enhancing accountability and clarity in execution. For instance, tasks under the “Authentication” epic, like Register, Login, and Logout, are tracked for progress and completion, ensuring that nothing slips through the cracks. This system not only streamlines workflow but also provides clear documentation of all development efforts, essential for project audits and evaluations.

Timeline

Timeline

Notion also has a feature that can create a project timeline. This is proven to be super beneficial during team’s SDLC. The “Sprints” panel shows a timeline view, making it easy for the team to see the duration and overlap of various sprints. This high-level overview aids in planning and adjusting resources according to the project’s phase and needs. For example, the timeline from “Sprint 1” through “Sprint 4” with specified dates helps in anticipating workload and aligning team efforts with upcoming tasks and deadlines. This kind of visualization is crucial for maintaining a balanced workflow and preemptively addressing any scheduling conflicts or resource shortages.

There are so much more that Notion can do. Notion can take notes, embed resources online, integrate, and so much more. Sometimes utilizing one powerful tool isn’t enough. That is why most software development teams also use Git.

The Great GitLab

It is no surprise that software development teams usually use GitLab or GitHub for their work. But did you know, these apps are so much more than just a cloud storage to store project’s codes. There are an astonishing number of features that can help leverage a software development team. Some features were already discussed in the Notion explanation, but it is interchangeable and can be done on GitLab. Several basic features used will be discussed, and more advanced gizmos will be discussed in the future 😉.

Groups

Gitlab Group

In software development, teams need a central hub to connect their repositories. GitLab, with its feature Group, enables teams to create a group for their team.

For our team’s case, the GitLab dashboard provides a centralized view of the Tracer Study project, illustrating the recent activity within the repository. This dashboard captures the essence of project management by showing the number of merge requests, issues, and newly added members. This real-time update facilitates quick assessments and decisions, allowing project managers and team members to keep a pulse on project health and dynamics.

Merge Request

GitLab Merge Request

One of Git’s most commonly used feature is Branch. Branch to put it simply is a feature for collaboration that enables multiple developers developing or fixing a code without entangling one another. To combine all the branches, developers utilize merge requests or MRs. Understanding the flow of it is quite intricate, but the simplest form is having a main/master then branching out to make modifications on it. Here are the basic steps in utilizing branches and merge requests:

  1. Git checkout a main branch for development
    Usually there are a couple central branches in a project like master, staging, and development. In our project, we use the development branch in checking out a new branch.
  2. Implement your feature in the new branch
    While in your new branch, make implementations for your features or fixes. After each change, don’t forget to make a commit to stash the changes in your repository. Commit messages will be discussed in later sections.
  3. Create a merge request
    After finishing your work in your working branch, create a merge request to your team’s designated destination branch. Usually, it’s the branch where you duplicated/checkout. In my team’s case, our MR destination branch is development. In each merge request, don’t forget to write down information such as
    - Title and Description: Provide a short and simple but a good explanation on what work was done
    - Source and Destination Branch: simply from where to where
    - Assignees: who did the work
    - Reviewer: who is asked to review the MR
    - Labels, Milestone, and Time Tracking are optional. In our case because we also use Notion, so we didn’t fill out the field
  4. Review and merge the request
    Your MR will be reviewed by a reviewer you’ve designated. If there are any merge conflicts or improvements suggested by the reviewer, you can fix it and later push to the repository again. The merge reques will be automatically updated. If there are no problems, then your work will be merged to the destination branch.

Commits

Meaningful message is a must! But not that meaningful…

The illustration above accurately depicts me in my early days of studying computer science. Even up until now, I still get confused on what to put on my commit message. A great commit message can tell other team members your work efficiently. Not only that, but it also serves as documentation on what was done. It can prove beneficial if a case of reverting is needed. To create good commit messages, here are a few guidelines you can follow which is derived from the Git community and credited to Mohammad-Ali A’RÂBI:

  1. The git commit message shall not be empty
  2. Separate header from body, and body from footer with a blank line
  3. Limit the header to 72 characters
  4. Use sentence case for the subject
  5. Do not end the subject with a period
  6. Use the imperative mood in the subject
  7. Wrap the body and footer at 72 characters
  8. Use the body to explain what and why vs. how
  9. Use types for semantic versioning
  10. Use footer to connect to issues and designate breaking changes

Here is an example of commit messages I’ve used in my development. The formula is:
[<STAGE>](<LOCATION>) <CATEGORY>:<WORK>.
We are going to use the example
[GREEN](SurveyService) feat: implement toggle active field method

  • Stage is the current commit stage. Because I am using Test Driven Development, there are 3 stages in a cycle. Those stages are RED, GREEN, and REFACTOR. I won’t go into details in this article.
  • Location or directory means which file did I modify. For example in the commit message above, I modified the SurveyService.ts file in implementing my method.
  • For the category, basically it is what we did in the commit. There are many categories such as feat, fix, chore, and many more. In the example above I’ve used feat, which means I’ve implemented something new or brought a new logic.
  • Lastly for the work part, basically it’s a message on what I did. Here I explained what new logic I’ve just implemented.

The Gist of It

In our PoltekSSN Tracer Study, the integration of Notion and GitLab has been crucial. Notion organizes our project documentation and workflows, enhancing management and adaptability. GitLab supports our code repository management, with a strong focus on merge requests and commit tracking. These tools boost our team’s efficiency, fostering better collaboration, coordination, and cooperation, which are essential for navigating the complexities of software development and achieving successful project outcomes.

Reference

--

--