Back to blog
Mar 07, 2023
5 min read

Essential Tools for Collaborative Software Development

Explaining tools that can enchance collaboration in software development.

Di dunia pengembangan perangkat lunak, kolaborasi memainkan peran yang sangat penting dalam membangun aplikasi yang bermutu. Namun, seperti pedang bermata dua, kolaborasi yang buruk dapat berdampak negatif pada pengembangan aplikasi. Salah satu masalah utama dalam pengembangan perangkat lunak adalah kurangnya koordinasi tim, yang dapat mengakibatkan kurangnya visibilitas pada alur dan progress pengembangan. Pada blog ini, saya akan membahas beberapa tools yang dapat membantu kita mencegah hal tersebut dan mendukung kolaborasi dalam software development seperti scrum board, commit message, dan merge request.

Scrum Board

Implementasi scrum board

Scrum board adalah alat yang dapat membantu kita mengorganisir dan memvisualisasikan progress dari sprint. Scrum board bersifat fleksibel dimana implementasinya dapat disesuaikan dengan keadaan dan kebutuhan scrum team. Scrum board dapat berbentuk fisik seperti papan tulis maupun berbentuk virtual yang terdapat pada website atau aplikasi. Scrum board dapat berisikan hal-hal simpel seperti daftar task, to-do, in progress, dan completed maupun berisikan hal-hal kompleks dengan berbagai fitur tambahan seperti yang terintegrasi di Gitlab. Tujuannya tetap sama yaitu untuk menunjukan sudah sejauh mana progress dari sprint dan hal-hal apa saja yang harus dikerjakan berikutnya.

Kita dapat melihat manfaat dari scrum board melalui scrum value yang terealisasikan oleh penerapan scrum board seperti:

  • Commitment
    Dengan menggunakan scrum board, tim dapat menentukan target task-task yang diselesaikan dalam suatu sprint. Hal ini mendorong setiap anggota tim untuk lebih berkomitmen dalam menyelesaikan task.
  • Focus
    Dengan menggunakan scrum board, tim dapat dengan mudah melihat progress sprint dan menentukan prioritas task yang paling penting. Hal ini dapat membantu memastikan bahwa setiap anggota tim fokus pada task yang benar-benar penting dan menghindari terjadinya multitasking yang tidak produktif.
  • Openness
    Dengan menggunakan scrum board, tim dapat dengan mudah melihat progress dan blocker yang dihadapi oleh anggota tim lainnya. Dalam situasi seperti ini, tim dapat dengan mudah berkolaborasi dan membantu satu sama lain untuk mendapatkan solusi untuk masalah yang dihadapi.

Commit Message

Implementasi commit message

Commit message adalah suatu teks yang mendeskripsikan maksud/tujuan dari sebuah commit. Commit message merupakan salah satu cara komunikasi yang efektif dalam pengembangan perangkat lunak secara kolaboratif. Commit message membantu kita dalam menyampaikan progress dan perubahan pada kode yang kita buat. Hal tersebut akan memudahkan orang lain untuk membaca dan me-review hasil pekerjaan kita.

Berikut adalah beberapa best practice yang dapat diterapkan dalam penulisan commit message:

  • Deskriptif
    Sebuah commit message hendaknya dapat menyampaikan perubahan apa saja yang terjadi dalam suatu commit dengan baik. Commit message yang deskriptif akan membantu orang lain dan diri kita sendiri untuk mengetahui perubahan yang dilakukan dalam commit tanpa harus melihat ke dalam kode. Salah satu contohnya adalah menerapkan semantic commit message, yaitu menuliskan tag terkait jenis perubahan yang dilakukan pada commit message (red, green, feat, fix, chores).
  • Konsisten
    Penulisan commit message hendaknya konsisten mengikuti suatu konvensi yang telah ditentukan. Hal ini bertujuan untuk meminimalisir perbedaan persepsi atas maksud dari commit message akibat perbedaan konvensi yang diikuti. Commit message yang konsisten sesuai konvensi juga akan memudahkan kita menelusuri histori commit menggunakan fitur seperti git log.

Merge Request

Merge request adalah sebuah permintaan untuk dapat melakukan merge commit-commit yang telah dibuat ke branch utama. Merge request memungkinkan developer lain dalam tim untuk meninjau perubahan tersebut dan memberikan umpan balik sebelum kode sumber tersebut digabungkan ke dalam branch utama. Dengan menggunakan merge request, tim dapat memastikan bahwa kode yang akan diintegrasikan telah diuji dan disetujui oleh anggota tim yang lain sebelum diimplementasikan ke dalam proyek.

Berikut adalah beberapa best practice saat menerapkan merge request:

  • Buat deskripsi yang jelas
    Deskripsi merge request harus jelas dan singkat agar memudahkan anggota tim lain untuk memahami perubahan kode yang diusulkan.
  • Tes terlebih dahulu
    Sebelum membuat merge request, pastikan kode telah diuji dengan baik untuk mengurangi risiko munculnya bug dan masalah pada kode.
  • Lakukan merge dengan cepat
    Setelah merge request diterima, merge harus segera dilakukan untuk mencegah terjadinya konflik dengan perubahan kode lainnya dan agar tidak menghambat pekerjaan anggota tim lainnya.
  • Lakukan review secara menyeluruh
    Pastikan untuk mengecek secara rinci setiap perubahan pada merge request. Hal ini untuk menjamin agar tidak terdapat kesalahan pada kode yang akan diintegrasikan ke branch utama. Jangan lupa untuk memberikan kritik dan masukan yang konstruktif jika memang terdapat kesalahan pada kode.

Berikut adalah contoh merge request pada proyek PPL yang sedang saya kerjakan

Penerapan merge request

Kesimpulan

Kolaborasi yang baik sangat penting dalam pengembangan perangkat lunak, namun kurangnya koordinasi tim dapat menyebabkan dampak negatif pada progress dan visibilitas pengembangan. Untuk mencegah hal ini, terdapat beberapa tools yang dapat digunakan, seperti scrum board, commit message, dan merge request. Scrum board membantu mengorganisir dan memvisualisasikan progress sprint, mendorong komitmen, fokus, dan keterbukaan dalam tim. Commit message membantu menyampaikan progress dan perubahan kode dengan deskriptif dan konsisten, memudahkan kolaborasi dan review. Merge request memungkinkan anggota tim untuk meninjau dan memberikan umpan balik sebelum menggabungkan perubahan kode ke dalam branch utama. Dengan menerapkan praktik terbaik dalam penggunaan tools ini, kolaborasi dalam pengembangan perangkat lunak dapat ditingkatkan dan hasil yang lebih baik dapat dicapai.