Agile dan Scrum
Agile
Agile adalah sebuah pendekatan software development yang dilakukan secara bertahap dan berulang. Setiap sprint atau tahap pada Agile memiliki durasi yang berbeda, tergatung project yang dikerjakan dan metode yang digunakan. Sprint dalam Agile berfokus pada upaya pengembangan software secara cepat sesuai dengan perubahan kebutuhan pengguna.
Agile Manifesto dan Agile Principle
Agile Manifesto merupakan kerangka kerja software development dengan berbagai prinsip dalam “Manifesto for Agile Software Development”. Tujuan dari Agile Manifesto adalah mengembangkan pendekatan software agar lebih responsif, adaptif, dan kolaboratif. Dengan demikian, software developer team dapat membangun software yang lebih efektif dan efisien.
Agile Manifesto memiliki empat nilai penting, yaitu:
• Mengutamakan individu dan interaksi, dibandingkan proses dan tools
• Mengutamakan pengembangan software yang dapat berfungsi, dibandingkan dengan membuat dokumentasi yang lengkap
• Mengutamakan kerjasama, dibandingkan negosiasi kontrak
• Mengutamakan adaptasi terhadap perubahan kebutuhan pengguna, dibandingkan dengan mengikuti rencana
Kemudian, nilai Agile Manifesto dikembangkan lagi menjadi 12 Agile Principles. Beberapa prinsip tersebut diantaranya:
1. Prioritas utama adalah kepuasan pengguna melalui software yang dirilis dengan cepat dan terus-menerus.
2. Terbuka dengan perubahan kebutuhan konsumen, bahkan di tahap akhir pengembangan. Proses Agile mendukung perubahan untuk keuntungan bersaing konsumen.
3. Merilis software secara rutin, mulai dari beberapa minggu hingga beberapa bulan, dengan preferensi waktu yang lebih singkat.
4. Developer dan bagian bisnis harus bekerjasama setiap hari selama project berjalan.
5. Membangun project dengan individu yang penuh motivasi. Berikan mereka lingkungan dan dukungan yang dibutuhkan, dan percayakan mereka untuk menyelesaikan pekerjaannya.
6. Metode paling efisien dan efektif untuk menyampaikan informasi kepada team adalah dengan pertemuan tatap muka.
7. Software yang berfungsi dengan baik merupakan tolok ukur kesuksesan project.
8. Proses Agile mendukung pengembangan yang berkelanjutan. Sponsor, pengembang, dan pengguna harus menjaga pace yang sama.
9. Aspek teknis dan desain yang bagus dapat meningkatkan agility.
10. Pentingnya kesederhanaan untuk memaksimalkan pekerjaan yang tidak dilakukan.
11. Arsitektur, kebutuhan, dan desain terbaik muncul dari team yang dapat mengorganisir diri sendiri.
12. Sesering mungkin, team harus memikirkan cara untuk menjadi lebih efektif, kemudian menyesuaikan dan menerapkannya dengan baik.
Penerapan nilai-nilai Agile Manifesto dan Agile Principles telah menjadi fokus utama kami di team Proyek Perangkat Lunak. Kami telah berhasil mengimplementasikannya dengan baik sehingga pengembangan software menjadi lebih adaptif, responsif, dan kolaboratif. Selain itu, dengan menerapkan metode Agile, kami juga mampu mengatasi perubahan-perubahan yang terjadi selama pengembangan software dengan lebih mudah dan cepat.
Scrum
Scrum merupakan metodologi software development menggunakan pendekatan iteratif dan incremental untuk menghasilkan product dengan kualitas tinggi dalam waktu singkat. Scrum memiliki beberapa peran, yaitu:
1. Product Owner
Product owner beberapa tanggung untuk mengelola Product Backlog dengan mengurutkan pekerjaan berdasarkan prioritas, menetapkan visi product, dan berkomunikasi dengan external stakeholders untuk menjelaskan kebutuhan mereka kepada team.
2. Scrum Master
Scrum Master bertanggung jawab untuk memastikan scrum team beroperasi dengan efektif dan menyelesaikan hambatan yang dihadapi oleh team. Selain itu, Scrum Master juga merencanakan dan memimpin daily scrum.
3. Development Team
Development team membantu dalam sprint planning dan menentukan tujuan. Selain itu, development team membangun software, merancang desain, dan meningkatkan product.
Dalam scrum, software developer team bekerja dalam periode waktu yang disebut sprint. Setiap sprint umumnya berlangsung antara satu hingga empat minggu. Scrum memiliki lima event yang dilakukan secara teratur, yaitu:
1. Inisiasi
Tahap awal yang dilakukan sebelum sprint pertama dimulai. Team kami melakukan persiapan dan perencanaan dengan membuat visi dan tujuan proyek, membuat Product Backlog Item, dan membuat roadmap. Pada tahap inisiasi, kami menerapkan nilai Agile Manifesto ke-3 yaitu merilis software secara rutin dengan membagi proyek menjadi tiga sprint dan setiap sprint memiliki waktu pengerjaan selama empat minggu. Selain itu, kami juga menerapkan nilai ke-9 dengan memastikan aspek teknis dan desain yang bagus dalam pengembangan software kami serta nilai ke-10 dengan memprioritaskan kesederhanaan dalam pengembangan perangkat lunak. Team kami memilih untuk melakukan verifikasi pembayaran secara manual oleh admin karena kami ingin memaksimalkan pengembagan software dan berfokus pada fitur yang benar-benar dibutuhkan oleh pengguna.
2. Sprint Planning
Sprint planning merupakan pertemuan awal untuk menentukan tujuan sprint dan merencanakan pekerjaan yang akan dilakukan selama sprint. Selain itu, Scrum Master akan memimpin meeting untuk menentukan pembagian Product Backlog Item terhadap anggota team. Pada sprint planning, kami menerapkan nilai Agile Manifesto ke-1 yaitu software yang dirilis secara cepat dengan mengutamakan perilisan fitur-fitur penting pada Sprint 1. Kemudian, kami juga menerapkan nilai Agile Manifesto ke-8 yaitu pengembangan berkelanjutan dengan melengkapi fitur-fitur Sprint 1 di Sprint yang akan datang.
3. Daily Scrum
Daily scrum dilaksanakan dengan mengadakan pertemuan harian secara singkat agar semua anggota software developer team memiliki pemahaman yang jelas dan memastikan pekerjaan berjalan sesuai rencana. Dalam pelaksanaan daily scrum, kami menerapkan nilai Agile Manifesto ke-2 dengan melakukan penyesuaian dan perubahan pada fitur registrasi dengan memindahkan form untuk mengisi alamat dari proses registrasi awal ke fitur lengkapi profile. Selain itu, kami juga menerapkan nilai ke-4 dengan bekerjasama setiap hari selama project berjalan, nilai ke-5 dengan memberikan dukungan serta motivasi untuk sesama anggota team untuk menyelesaikan pekerjaannya, dan nilai ke-6 dengan mengadakan daily scrum secara tatap muka.
Masalah yang kami temukan saat daily sprint adalah SonarQube tidak mendukung penggunaan bahasa pemrograman Flutter maupun Dart. Solusinya yaitu dengan menggunakan Dart Code Metric dan Flutter Analyze.
4. Sprint Review & Sprint Retrospective
Sprint review merupakan pertemuan pada akhir setiap sprint untuk mengevaluasi proses pengembangan. Dalam proses ini, project yang dikerjakan harus sudah selesai dan di-release. Kemudian, dilanjutkan dengan User Acceptance Testing (UAT) untuk memastikan bahwa fitur tersebut berfungsi dengan benar.
Sprint retrospective bertujuan untuk mengevaluasi proses pengembangan selama sprint sebelumnya dan membuat rencana perbaikan untuk sprint berikutnya. Masing-masing anggota team kami memberikan feedback setelah UAT selesai dilakukan. Salah satu feedback yang dibahas adalah bahwa pada Sprint 1, fitur change password masih belum berhasil. Pertama masalah fungsionalitas, ketika password diganti, user tidak dapat masuk dengan password baru maupun password lama. Kedua masalah keamanan, saat memasukkan password, field password tidak berupa karakter tersembunyi. Feedback tersebut bermanfaat untuk perubahan serta perbaikan yang dapat dilakukan pada sprint beriktunya.
Dalam pelaksanaan sprint review dan sprint retrospective, kami menerapkan nilai Agile Manifesto ke-7 dengan merilis software yang berfungsi dengan baik. Beberapa feature seperti PBI register, login, logout, edit profile, payment, payment list, donation detail, donation list, dan transaction cart telah berhasil diuji pada tahap UAT. Selain itu kami juga menerapkan nilai ke-11 dengan memiliki team yang mampu mengorganisir dirinya sendiri, serta nilai ke-12 dengan menyesuaikan perubahan yang ditemukan Sprint 1 untuk Sprint 2 sehingga lebih efektif.
Scrum juga memiliki tiga pilar yang menjadi dasar bagi kerja software developer team, yaitu:
1. Transparency
Transparency memungkinkan anggota team untuk mengetahui dan memahami apa yang terjadi di setiap sprint seperti rencana yang dibuat, perkembangan yang dicapai, masukkan, dan hasil yang direncanakan. Salah satu contohnya, Product Backlog Item yang terlihat dan dapat diakses oleh seluruh team. Setiap anggota team dapat mengakses daftar tugas, prioritas, dan deskripsi pekerjaan dalam Product Backlog untuk memahami arah dan tujuan produk.
2. Inspection
Dalam inspection, perkembangan menuju tujuan yang disepakati harus diperiksa dan dievaluasi untuk mengetahui jika terdapat perbedaan atau masalah yang tidak diinginkan. Salah satu penerapannya yaitu Backlog Refinement. Team kami telah melakukan evaluasi dan pembaruan pada Product Backlog dengan menghapus item donasi produk agar fokus pada fitur-fitur utama yaitu donasi uang dan donasi dengan membeli produk.
3. Adaptation
Dalam adaptation, jika terdapat kesalahan dalam suatu proses dan tidak memenuhi standar yang ditetapkan maka harus dilakukan penyesuaian pada proses tersebut. Salah satu contohnya, team kami melakukan penyesuaian dan perubahan pada fitur registrasi dengan memindahkan form untuk mengisi alamat dari proses registrasi awal ke fitur lengkapi profile.
Scrum Values
Scrum Value merupakan prinsip-prinsip yang mendasari kerangka kerja scrum dan membentuk dasar untuk mengambil keputusan dalam scrum team. Scrum Value terdiri dari lima nilai yaitu commitment, focus, openess, respect, dan courage. Nilai-nilai tersebut telah diterapkan oleh team kami selama proses pengembangan software. Nilai commitment diterapkan dengan menyelesaikan tugas yang telah diberikan tepat waktu dan memastikan bahwa fitur tersebut dapat digunakan pada waktu yang telah ditentukan. Nilai focus diterapkan dengan menghindari diskusi yang tidak penting, kemudian membahas masalah yang ada dan memusatkan perhatian pada pekerjaan yang harus diselesaikan saat daily sprint. Nilai openness diterapkan ketika Scrum Master bersikap transparan dengan melakukan reschedule meeting jika terdapat anggota team yang berhalangan hadir. Nilai respect diterapkan dengan saling mendengarkan, mempertimbangkan ide, dan mengakui pencapaian sesama anggota team. Kemudian, nilai courage diterapkan dengan menyelesaikan masalah yang sulit seperti memperbaiki merge request conflict.
Demikian yang dapat saya sampaikan mengenai topik yang dibahas pada kali ini. Semoga artikel ini membantu Anda dalam mengembangkan software menggunakan metode Agile dan Scrum!
Referensi
redagile. 2020. “12 Principles behind the Agile Manifesto”. Diakses dari https://www.redagile.com/amp/agile-manifesto?gclid=CjwKCAiAmJGgBhAZEiwA1JZoluG75M-iNR-YslMRQXHSFbqA0s-
Haekal, Mirza M. 2021. “Apa Itu Agile? Pengertian, Prinsip, Metode, dan Kelebihan [Terlengkap]”. Diakses dari https://www.niagahoster.co.id/blog/agile-adalah/
Populix. 2022. “Apa itu Scrum? Ini Tahapan Metodenya dalam Project Management”. Diakses dari https://info.populix.co/articles/apa-itu-scrum/
Visual Paradigm. 2022. “What are the Scrum Events?”. Diakses dari https://www.coursera.org/articles/scrum-roles-and-responsibilities
Kajzer, Paulina. 2022. “The Three Pillars of Scrum and Why You Should Understand Them”. Diakses dari https://www.stxnext.com/blog/three-pillars-scrum/