Agile 101: Menerapkan Prinsip Agile
Kira-kira apa hal yang pertama kali Anda bayangkan ketika pertama kali mendengar kata Agile? Cepat, lincah, fleksibel. Hal tersebut serupa dengan prinsip Agile dalam Software Engineering. Secara umum, agile adalah suatu prinsip seseorang untuk bisa beradaptasi terhadap perubahan-perubahan yang terjadi dalam pengembangan perangkat lunak.
Mengacu pada https://agilemanifesto.org/, terdapat 12 prinsip agile, yaitu:
- Prioritas utama kami adalah memuaskan klien dengan menghasillkan perangkat lunak yang bernilai secara dini dan rutin.
- Menyambut perubahan kebutuhan, walaupun terlambat dalam pengembangan perangkat lunak. Proses Agile memanfaatkan perubahan untuk keuntungan kompetitif klien.
- Menghasilkan perangkat lunak yang bekerja secara rutin, dari jangka waktu beberapa minggu sampai beberapa bulan, dengan preferensi kepada jangka waktu yang lebih pendek.
- Rekan bisnis dan pengembang perangkat lunak harus bekerja-sama tiap hari sepanjang proyek.
- Kembangkan proyek di sekitar individual yang termotivasi. Berikan mereka lingkungan dan dukungan yang mereka butuhkan, dan percayai mereka untuk menyelesaikan pekerjaan dengan baik.
- Metode yang paling efisien dan efektif untuk menyampaikan informasi dari dan dalam tim pengembangan perangkat lunak adalah dengan komunikasi secara langsung.
- Perangkat lunak yang bekerja adalah ukuran utama kemajuan.
- Proses Agile menggalakkan pengembangan berkelanjutan. Sponsor-sponsor, pengembang-pengembang, dan pengguna-pengguna akan dapat mempertahankan kecepatan tetap secara berkelanjutan.
- Perhatian yang berkesinambungan terhadap keunggulan teknis dan rancangan yang baik meningkatkan Agility.
- Kesederhanaan adalah hal yang amat penting.
- Arsitektur, kebutuhan, dan rancangan perangkat lunak terbaik muncul dari tim yang dapat mengorganisir diri sendiri.
- Secara berkala, tim pengembang berefleksi tentang bagaimana untuk menjadi lebih efektif, kemudian menyesuaikan dan menyelaraskan kebiasaan bekerja mereka.
Atau hal ini bisa dirangkum dalam empat manifesto berikut:
- Individu dan interaksi lebih dari proses dan sarana perangkat lunak
- Perangkat lunak yang bekerja lebih dari dokumentasi yang menyeluruh
- Kolaborasi dengan klien lebih dari negosiasi kontrak
- Tanggap terhadap perubahan lebih dari mengikuti rencana
Berdasarkan prinsip serta manifesto tersebut, kita bisa menerapkan berbagai macam framework untuk bisa menerapkan prinsip Agile. Salah satu prinsip tersebut adalah scrum. Berikut adalah bagaimana cara penerapan scrum pada kelompok kami “funtech”.
Alur Pengembangan Aplikasi
Pada kelompok kami, terdiri dari lima anggota Developer, Scrum Master, dan Product Owner. Dalam proyek kali ini, terdapat lima sprint yang mana masing-masing sprint berjalan sepanjang dua minggu. Sebelum memulai sprint, kelompok kami menyusun terlebih dahulu PBI (Product Backlog Item) yang akan dikerjakan, pemecahan task yang ada hingga pembagian task kepada setiap anggota.
Untuk PBI sendiri, sebenarnya sudah ditetapkan oleh Product Owner walaupun sempat terjadi perubahan minor guna menyesuaikan requirement dari klien. Dalam menjalankan suatu sprint, kelompok kami dibebaskan untuk mengambil PBI mana saja sesuai dengan prioritas yang dirasa paling penting. Pada pembagian skor PBI pada sprint, kelompok kami menggunakan https://scrumvee.com/ untuk menentukan skor dari setiap PBI yang akan dikerjakan.
Untuk task-nya sendiri, hal ini disesuaikan dengan keahlian masing-masing. Sehingga bisa saja ada Developer yang hanya menyentuh frontend atau backend saja dalam pengembangan aplikasi.
Dalam proses mengerjakan sprint sendiri, terdapat Daily Scrum Meeting yang merupakan kegiatan pertemuan antara Scrum Master dan Developer guna membahas progress pekerjaan dari setiap Developer. Pada perkuliahan PPL ini, terdapat sekitar empat Daily Meeting pada setiap sprint.
Selanjutnya terdapat Sprint Review yang akan menentukan apakah PBI yang dikerjakan ini bisa diterima atau tidak. Dalam hal ini, Product Owner akan mengecek apakah aplikasi yang dibuat layak dimasukkan dalam production atau tidak. Penilaiannya sendiri menggunakan Definition of Done yang menjadi landasan dalam minimum acceptance criteria.
Pada akhir sprint, terdapat Sprint Retrospective yang mana para Developer berefleksi dari apa saja yang telah dilakukan selama sprint. Harapannya dari hasil refleksi tersebut bisa membuat agar sprint berikutnya menjadi lebih baik.
Pada kelompok kami, Sprint Retrospective menggunakan https://metroretro.io/ yang mana setiap anggota memasukkan feedback yang dirasakan mulai dari hal yang baik, buruk serta hal yang akan dilakukan pada sprint berikutnya.
Komunikasi antar tim
Seperti yang diketahui, prinsip agile menitikberatkan pada komunikasi antar anggota tim. Dalam hal ini, komunikasi dilakukan secara asinkronus dan sinkronus. Sebaiknya komunikasi tersebut harus dijaga dengan baik, karena dengan komunikasilah maka ada feedback untuk perubahan yang ada.
[UPDATE] Scrum 2020 dan 2017
Beberapa saat setelah saya membuat artikel ini, ternyata terdapat dua versi scrum yang berbeda. Pada scrum 2020, menekankan hal berikut:
“bringing Scrum back to being a minimally sufficient framework by removing or softening prescriptive language” — Scrum Guide 2020
Hal ini berarti, secara umum scrum versi terbaru ini menyederhanakan beberapa terminologi spesifik pada Software Engineering. Lebih jauh lagi perbedaan yang cukup signifikan yaitu:
- Terdapat term baru yaitu “Product Goal” yang dijadikan sebagai acuan untuk kondisi produk kedepannya.
- Pada Sprint Planning, terdapat topik pertanyaan baru yaitu “Why is this Sprint valuable?”
- Beberapa istilah seperti Scrum, Product Backlog, Sprint Backlog, serta Definition of Done yang sedikit diubah
- Tidak ada lagi term servant dan leader. Scrum Master dideskripsikan sebagai “true leaders who serve the Scrum Team and the larger organization”.
- Tim pada Scrum terdiri dari Product Owner, Scrum Master dan Developers (bukan Developer Team).
Untuk PPL kali ini, sepertinya masih menggunakan Scrum 2017 dan mungkin akan mengadopsi framework scrum 2020 kedepannya. Menurut saya, scrum versi baru ini bisa saja lebih Agile dibanding versi lama. Terdapat beberapa hal yang disederhanakan dan cenderung lebih fokus terhadap tujuan dibuatnya produk tersebut.
Referensi:
https://www.scrum.org/resources/blog/scrum-guide-2020-and-2017-side-side-comparison
Adrian