Teamwork Makes the Dream Work

Daffa Muhammad Faizan
5 min readApr 30, 2024

--

In software development, teamwork is the primary factor for success. Whether you’re collaborating on a small project or working within a large organization, effective communication and coordination among team members are essential. To ensure smooth development, it’s crucial to establish conventions, employ best practices, and leverage appropriate tools. Let’s explore some key elements of working with a team, along with the basic tools that support these mechanisms.

Conventions and Best Practices

Commit Messages

Clear and concise commit messages are the bedrock of effective collaboration in a team environment. When team members can quickly understand the purpose and scope of a commit, it streamlines the development process and facilitates smoother code reviews.

Best practices for writing commit messages include:

  • Using imperative tenses (e.g., “Fix bug” instead of “Fixed bug”).
  • Keeping messages concise while providing enough context.
  • Referencing relevant issues or tickets, if applicable.

I’ll give you an example of various formats for commit messages including the default commit format, merge commits, revert commits, initial commits, and other various types that might come in handy. These examples are taken from qoomon from GitHub.

Default

The default commit format follows the convention below, starting with the type, a colon, followed by a description.

<type>(<optional scope>): <description>

<optional body>

<optional footer>

Merge Commit

Differing from the default commit format, merge commits explicitly display the Merge branch text in the message.

Merge branch '<branch name>'

Revert Commit

Similar to merge commits, revert commits also don’t follow the default commit message convention, displaying the Revert text in the message.

Revert "<reverted commit subject line>"

Initial Commit

When first starting a project, the commit message can be as short as init or initial commit. Personally, I prefer the latter.

init

Types

  • feat Commits, that adds or remove a new feature
  • fix Commits, that fixes a bug
  • refactor Commits, that rewrite/restructure your code, however does not change any API behaviour
  • perf Commits are special refactor commits, that improve performance
  • style Commits, that do not affect the meaning (white-space, formatting, missing semi-colons, etc)
  • test Commits, that add missing tests or correcting existing tests
  • docs Commits, that affect documentation only
  • build Commits, that affect build components like build tool, CI pipeline, dependencies, project version, ...
  • ops Commits, that affect operational components like infrastructure, deployment, backup, recovery, ...
  • chore Miscellaneous commits e.g. modifying .gitignore

Others

Typically, certain companies have a certain commit message convention. For example, the issue followed by the message.

<ISSUE-ID> <Message>

Examples

  • feat: added the Review Quiz button
  • build: update dependencies
  • style: centered div
  • INTERNDEMO-85 finished integrating OpenAI with the Generate Note

By adhering to these conventions, team members can easily track changes, understand the rationale behind them, and maintain a coherent development history.

Pull Requests

Pull requests (PRs) serve as a mechanism for code review and collaboration, allowing team members to propose changes, solicit feedback, and ensure code quality before merging into the main branch.

Key practices for managing pull requests include:

  • Providing descriptive titles and summaries.
  • Assigning reviewers and maintaining a clear review process.
  • Addressing feedback promptly and iteratively.

Pull requests naming conventions is separated into two parts, the title and the description. These examples are shamelessly taken from the namingconvention.org website contributed by farbodsaraf on GitHub.

Title

  • Short and descriptive summary
  • Start with corresponding ticket/story id (e.g. from Jira, GitHub issue, etc.)
  • Should be capitalized and written in imperative present tense
  • Not end with period

Suggested Format:
#[Ticket_ID] PR description

Example:

#CLS-23 Add Edit on Github button to all the pages

Description:

  • Separated with a blank line from the subject
  • Explain what, why, etc.
  • Max 72 chars
  • Each paragraph capitalized

Example:

This pull request is part of the work to make it easier for people to contribute to naming convention guides. One of the easiest way to make small changes would be using the Edit on Github button.

Effective use of pull requests improves code quality and mitigates the risk of introducing bugs or regressions.

Additional Practices

ENV and Secrets Documentation

Managing environment configurations and also GitHub Secretes is essential for consistent and reliable software deployment. Documenting environment variables (ENV) and their respective purposes helps ensure reproducibility across different development, staging, and production environments. The same goes with GitHub Secretes as well.

Key aspects of ENV and Secrets documentation include:

  • Listing all required ENV variables with descriptions.
  • Listing all registered secrets
  • Specifying default values and acceptable formats.
  • Providing instructions for setting up and managing ENV variables locally and in deployment environments.

Comprehensive ENV and Secrets documentation simplifies onboarding for new team members, reduces deployment errors, and promotes consistency across environments.

Tools

Discord — your unconventional but modern development friend

Discord, primarily known as a communication platform for gamers, has gained popularity among development teams for its versatility and ease of use. With features like voice channels, text chat, and integrated file sharing, Discord provides a centralized hub for team communication and collaboration.

Benefits of using Discord for development include:

  • Real-time communication for quick decision-making and troubleshooting.
  • Organized channels for different topics, projects, or teams.
Dedicated channels for development

While unconventional in the realm of software development, Discord offers a dynamic and engaging platform that complements traditional communication tools.

Linear — issue tracking has never been easier

Linear is a modern issue tracking tool designed to streamline project management and collaboration. With its intuitive interface and focus on speed and efficiency, Linear simplifies the process of creating, prioritizing, and tracking tasks within a team.

Key features of Linear include:

  • Kanban-style boards for visualizing workflow and progress.
  • Customizable issue templates and workflows to suit team preferences.
  • Integration with version control systems like GitHub and GitLab for seamless development workflows.
  • Detailed issues including labels, story points, deadlines, assignees, and status.
Issue tracking including useful labels, story points, assignees, and much more.
Kanban-style Boards

By centralizing issue tracking and project management, Linear empowers teams to stay organized, focused, and productive throughout the development lifecycle.

In conclusion, effective teamwork in software development requires a combination of conventions, best practices, and tools to facilitate communication, collaboration, and coordination among team members. By adopting practices such as clear commit messages, structured pull requests, ENV documentation, and utilizing tools like Discord and Linear, teams can optimize their workflow, improve productivity, and ultimately achieve success in their projects. Remember, teamwork truly does make the dream work.

References

https://namingconvention.org/git/pull-request-naming.html

--

--