Memahami Agile dan Scrum: Menerapkan Prinsip Agile dalam Metodologi Scrum dan Tim Pengembangan
Dalam era pengembangan perangkat lunak yang semakin kompleks dan cepat, pendekatan agile dan metodologi scrum menjadi solusi populer untuk menghadapi tantangan tersebut. Hal ini dibuktikan dengan data bahwa perusahaan-perusahaan yang menerapkan pendekatan agile dalam pengembangan perangkat lunak cenderung memiliki tingkat keberhasilan yang lebih tinggi daripada perusahaan yang menggunakan pendekatan tradisional.
Dalam artikel ini, akan dijelaskan tentang Agile Principles serta bagaimana penerapannya dapat membantu tim pengembang dalam metodologi Scrum dan pengembangan perangkat lunak secara keseluruhan. Oleh karena itu kita perlu mengetahui apa itu agile terlebih dahulu.
Apasih agile itu?
Agile
Agile adalah pendekatan pengembangan perangkat lunak yang berfokus pada kolaborasi tim, komunikasi yang efektif, dan pengiriman perangkat lunak dalam siklus pengembangan yang cepat dan berulang-ulang.
Pada aplikasi Berdonasi, digunakan prinsip agile dalam pengembangannya karena pengembangan ini dilakukan sesuai dengan kebutuhan dari penggunanya ataupun bisa juga dari kesanggupan developernya. Sehingga tidak jarang terjadinya perubahan suatu fitur atau bahkan menghapus suatu fitur.
Seperti contohnya, pada pengembangan aplikasi Berdonasi, terdapat fitur yang dihapus di tengah pengembangan, yaitu fitur untuk melakukan donasi barang pribadi. Kami merasa dengan waktu yang tersisa, kami tidak dapat mewujudkan fitur tersebut.
Pada gambar di atas, terdapat fitur Item Donation (berdonasi barang pribadi) pada PBI kami. Kami menghapus fitur tersebut berdasarkan hasil diskusi bersama yang telah dilakukan.
12 Prinsip Agile Software Development
- Memprioritaskan kepuasan pelanggan dengan delivery produk yang berkelanjutan.
- Dapat menerima permintaan perubahan meskipun di tahap akhir pengembangan.
- Rutin merilis produk dengan jangka waktu yang singkat.
- Tim developer dan klien harus saling bekerjasama dalam pengerjaan proyek.
- Membawa semangat positif dan motivasi pada proyek pekerjaan serta membangun lingkungan pekerjaan yang positif.
- Membangun pola komunikasi yang baik dalam pengerjaan proyek pengembangan perangkat lunak.
- Perangkat lunak yang dapat bekerja dengan baik menjadi tolak ukur kemajuan tim.
- Pengembangan perangkat lunak yang berkelanjutan.
- Memberikan perhatian pada keunggulan teknis dan desain.
- Menekankan pentingnya kesederhanaan agar dapat menghindari pekerjaan yang tidak penting.
- Tim harus mampu mengorganisir diri sendiri.
- Secara berkala, tim akan melakukan refleksi mengenai cara bekerja yang lebih efektif.
Prinsip-prinsip di atas lah yang nanti akan diterapkan selama masa pengembangan aplikasi Berdonasi.
Apasih hubungan agile dengan scrum?
Scrum
Scrum adalah salah satu pendekatan dalam metode Agile yang digunakan untuk mengelola dan mengembangkan produk perangkat lunak dengan cara yang terstruktur dan kolaboratif.
Scrum membagi proses pengembangan menjadi beberapa sprint, yang biasanya tiap sprint akan berlangsung selama satu hingga empat minggu. Seperti pada pengembangan aplikasi Berdonasi, terdapat 3 sprint yang masing-masing sprintnya berlangsung selama 4 minggu.
Penerapan Scrum dapat dilakukan dengan membangun sebuah tim Scrum yang terdiri dari tiga peran utama:
- Product Owner
Product Owner bertanggung jawab untuk menentukan kebutuhan produk dan memprioritaskan backlog produk. - Scrum Master
Scrum Master bertanggung jawab untuk mengawasi implementasi Scrum dan memastikan bahwa tim mengikuti prinsip-prinsip Scrum secara benar. - Tim Pengembang
Tim Pengembang bertanggung jawab untuk menghasilkan produk perangkat lunak yang berkualitas tinggi dalam setiap sprint.
Apa saja yang dilakukan selama sprint berlangsung?
- Inisiasi
Pada tahap insiasi, kami membuat persiapan dan perencanaan untuk Berdonasi kedepannya. Kami menentukan tujuan-tujuan yang akan dicapai, serta menentukan Product Backlog Item (PBI) yang nantikan akan diimplementasikan.
Dalam mentukan Product Backlog Item (PBI) kami menerapkan prinsip ke-10 yaitu “Menekankan pentingnya kesederhanaan agar dapat menghindari pekerjaan yang tidak penting”. Seperti pada contohnya sistem admin pada aplikasi Berdonasi. Kami tidak membuat sistem admin sendiri yang mana akan menambahkan pekerjaan yang tidak penting, menurut kami dengan menggunakan sistem admin bawaan dari django sudah cukup. Selain itu juga dalam melakukan verifikasi pembayaran yang dilakukan oleh user, kami melakukan verifikasinya secara manual. Kami tidak menghubungkannya dengan payment gateway manapun ataupun dengan menggunakan Artificial Intelligence (AI) untuk mengurangi beban kerja dalam masa pengembangan.
Penerapan prinsip ke-6 yaitu, “Membangun pola komunikasi yang baik dalam pengerjaan proyek pengembangan perangkat lunak”. Sebelum menentukan Product Backlog Item (PBI), kami berdiskusi terlebih dahulu apa saja fitur fitur yang perlu ada dan bagaimana implementasinya. Seperti contohnya, bagaimana kita nantinya akan memverifikasi pembayaran dari user agar kedepannya tidak terlalu memberatkan dalam masa pengembangan.
Penerapan prinsip ke-5, “Membawa semangat positif dan motivasi pada proyek pekerjaan serta membangun lingkungan pekerjaan yang positif”. Pada saat ada fitur yang menurut kami cukup sulit, kami selalu meyakinkan satu sama lainnya jika fitur tersebut dapat tercapai sesuai dengan yang direncanakan.
Penerapan prinsip ke-4, “Tim developer dan klien harus saling bekerjasama dalam pengerjaan proyek”. Seperti pada prinsip ke-6, kami berdiskusi fitur fitur yang perlu ada dan fitur yang dibutuhkan user dalam menentukan Product Backlog Item (PBI). Kami mengedepankan kepentingan user dalam peentuan tersebut.
Penerapan prinsip ke-3, “Rutin merilis produk dengan jangka waktu yang singkat”. Pada masa pengembangan, kami membagi pekerjaan menjadi 3 sprint. Backlog juga diatur secara berkelanjutan dan diperbarui setiap kali sprint selesai.
2. Sprint Planning
Pada awal sprint biasanya akan dimulai dengan sprint planning. Sprint planning dilaksanakan untuk menentukan Product Backlog Item (PBI) yang akan dikerjakan dan siapa yang akan mengerjakannya pada sprint tersebut. Kami menentukannya dengan menggunakan Jira.
Pada gambar di atas, dapat kita lihat bahwa terdapat beberapa tugas yang akan dikerjakan selama masa sprint berlangsung. Fitur-fitur yang dibagikan juga merata dan sesuai dengan kesanggupan dari developernya.
Penerapan prinsip ke-11, “Tim harus mampu mengorganisir diri sendiri”. Setiap orang mendapatkan tugasnya masing-masing dan mengerjakannya sesuai dengan waktu yang ditentukan.
Penerapan prinsip ke-9, “Memberikan perhatian pada keunggulan teknis dan desain”. Pada awal sprint ini kami sudah berencana untuk melakukan Test Driven Development (TDD) dalam mengimplementasikan Product Backlog Item (PBI) yang ada. Test adalah salah satu cara untuk memastikan bahwa produk yang dihasilkan sesuai dengan kebutuhan dan berfungsi dengan baik.
3. Daily Scrum Meeting
Sesuai dengan namanya, setiap harinya akan dilaksanakan pertemuan atau meeting untuk membahas progres dari masing-masing orang ataupun mendiskusikan permasalahan yang ada agar pengembangan aplikasi bisa terus di track dan tidak terjadi hambatan. Selain itu juga kita melakukan sharing pengetahuan yang berkaitan dalam pengembangan.
Selama meeting tersebut, banyak perubahan ataupun penyelsaian masalah yang terjadi. Seperti contohnya, pada sprint 2 terdapat masalah pada model yang dibuat.
Terdapat miskomunikasi antara kami, yang mana fitur untuk melakukan donasi dengan produk dan uang dibuat secara terpisah. Pada awalnya kami ingin membuatnya menjadi 1 agar lebih mempermudah untuk melakukan fetch pada bagian frontend.
Pada bagian frontend cukup sekali melakukan fetch dengan method GET untuk menampilkan semua payment yang terjadi baik produk maupun uang. Jika terdapat 2 model dan 2 API yang berbeda, frontend perlu melakukan fetch 2 kali.
Selain itu juga, jika membuat model donasi tersebut menjadi 1, kita hanya perlu menambahkan hal yang minim pada model tersebut sehingga tidak terjadi redudansi code.
Meeting tersebut membahas permasalahan tersebut dengan mencari solusinya atau perbaikan kedepannya.
Solusi 1 : Backend melakukan query untuk mendapatkan data dari kedua model tersebut lalu menggabungkannya sebelum responsenya diberikan kepada frontend.
Solusi 2 : Kami membuat Payment model dengan menerapkan prinsip inheritance.
Pada akhirnya kami mengambil solusi 1 untuk permasalahan tersebut.
Selain itu terdapat masalah lainnya selama masa sprint berlangsung, yaitu gagalnya deployment yang disebabkan hilangnya akun dari heroku tanpa sebab. Deployment staging untuk backend dari aplikasi Berdonasi dilakukan di heroku dengan menggunakan akun dari salah satu developer kami. Pada saat itu saya ingin melakukan login ke akun tersebut, akan tetapi muncul error seperti ini,
Oleh karena itu, untuk mengatasi masalah ini, setup ulang untuk deployment perlu dilakukan dengan menggunakan akun dari developer kami yang lain.
Berdasarkan pengalaman tersebut, daily scrum meeting ini sangat penting untuk dilakukan. Selain melakukan update progres untuk masing-masing orang, kita juga bisa cepat melakukan perbaikan atau mencari solusi jika terdapat kesalahan ataupun miskomunikasi. Sehingga permasalahan tersebut tidak akan berdampak kedepannya.
Penerapan prinsip ke-2, “Dapat menerima permintaan perubahan meskipun di tahap akhir pengembangan”. Seperti yang disebutkan tadi, kami mendapatkan permasalahan yaitu pembuatan model yang terpisah. Oleh karena itu, kita perlu merubah pengiriman response untuk mempermudah frontend dalam melakukan fetch yang terjadi di tengah sprint.
Penerapan prinsip ke-12, “Secara berkala, tim akan melakukan refleksi mengenai cara bekerja yang lebih efektif”. Setiap harinya kita melakukan daily scrum meeting untuk membahas progres ataupun mengatasi permasalahan yang ada. Selain itu kita juga melakukan sharing pengetahuan satu sama lainnya yang berguna untuk pengembangan selama sprint berlangsung.
Penerapan prinsip ke-7, “Perangkat lunak yang dapat bekerja dengan baik menjadi tolak ukur kemajuan tim”. Demi lancarnya penggunaan ataupun pengembangan aplikasi, kami mengimplementasikan test serta menampilkan coveragenya yang dapat membantu untuk mengecek permasalahan yang ada ataupun adanya code yang belum tercover.
Kami juga menggunakan sonarqube untuk mengecek coverage, mendeteksi bug, kerentanan, dan code smells pada code.
Penerapan prinsip ke-8, “Pengembangan perangkat lunak yang berkelanjutan”. Pada saat daily scrum meeting ini juga kita membahas Product Backlog Item (PBI) yang dapat diperbaiki ataupun ditingkatkan kualitasnya pada sprint selanjutnya.
4. Sprint Review & Sprint Retrospective
Pada akhir sprint, biasanya terdapat sprint review. Kami melakukan uji coba terhadap fitur-fitur yang telah dibuat dengan mengisi User Acceptance Testing (UAT).
Selain itu pada sprint review juga kita mempresentasikannya kepada Dosen dan juga teman-teman di kelas. Kami menyampaikan hasil kerja kami dan juga melakukan uji coba aplikasi kami bersama. Setelah presentasi dan uji coba tersebut selesai dilakukan, dosen dan teman-teman akan memberikan feedback dan juga menyampaikan kekurangan dari aplikasi kami. Seperti,
1. Item Donation Form (yang dari user) → FAIL: by request rollover to Sprint 3
2. Money Donation → FAIL di AC 4
3. Donation History Detail → FAIL perlu lengkapi mulai dari tahap verifikasi, dan juga informasi donasinya (foto bukti pembayaran, metode pembayaran, tanggal, dsb.)
4. Lupa Password → FAIL no progress
5. Donation History, Edit Profile, Halaman Profile, Transaction Cart, Payment → PASS
Issues:
1. Item yang ada di cart dari donasi A terkadang masih muncul di cart dari donasi B, this happens randomly.
2. “Invalid token” saat login dan register.
Terakhir, kami melakukan sprint retrospective. Pada sprint retrospective kami membahas perjalanan sprint selama 4 minggu tersebut. Seperti masalah-masalah yang terjadi, perbaikan yang akan dilakukan, dan juga cara untuk mencapai goal yang sudah dibuat.
Selama meeting tersebut berlangsung, kami memberikan evaluasi satu sama lainnya terkait pelaksaan sprint yang telah berlangsung. Evaluasi tersebut diperlukan untuk meningkatkan kerjasama tim untuk sprint-sprint kedepannya.
Seperti contohnya, masih banyak response dari backend yang belum sesuai dengan harapan dari frontend. Terjadinya miskomunikasi antar developer. Pekerjaan dari developer lain yang lambat membuat yang lainnya terhambat.
Penerapan prinsip ke-1, “Memprioritaskan kepuasan pelanggan dengan delivery produk yang berkelanjutan”. Setelah menjalankan uji coba aplikasi dan juga presentasi yang dilakukan, terdapat banyak feedback yang diberikan. Kami berusaha sebaik mungkin untuk mengimplementasikan feedback-feedback yang diberikan demi kepuasan dari penggunanya.
Referensi
A guide to daily scrum meetings: Wrike Scrum Guide. Versatile & Robust Project Management Software. (n.d.). Diakses dari https://www.wrike.com/scrum-guide/daily-scrum/
What is agile scrum methodology?. Business News Daily. (n.d.). Diakses dari https://www.businessnewsdaily.com/4987-what-is-agile-scrum-methodology.html
Mencari Solusi Dengan Metode Scrum Pada product management. Apiary Academy — Become Indonesiaâs Leading Product Manager. (n.d.). Diakses dari https://academy.apiary.id/blog/mencari-solusi-dengan-metode-scrum-pada-product-management