Agile Development, Scrum, dan Penerapannya : Gambaran Singkat (+ Pengalaman)

Johanes Raka Triadana Nikaputra
7 min readApr 26, 2023

--

https://indevlab.com/wp-content/uploads/2020/05/vnutr.png

Satu hal yang sering dibicarakan sekarang dalam dunia software development adalah agile development. Nah apa sih agile development?

Agile Development adalah sekumpulan framework metodologi pengebangan software yang didasarkan pada iterasi atau pekerjaan berulang dan kolaborasi dimana aturan dan solusi yang sudah disepakati oleh setiap anggota tim dilakukan dengan kolaborasi secara terstruktur dan terorganisir. Agile Development dapat memberikan sesuatu ke pelanggan dengan lebih cepat dan lebih sedikit kesalahan dengan cara merilis pekerjaan dalam paket yang kecil tetapi consumable, bukan meemberikan satu rilis yang besar dengan banyak fitur pada saat launching. Sesuai namanya yaitu “agile”, framework ini memungkinkan adaptasi terhadap situasi yang sering berubah dan lingkungan / pihak yang kurang stabil.

Agile Development mempunyai 4 core values yang berdasar dari isi Agile Manifesto yang disusun pada Februari tahun 2001 di Snowbird, Utah, Amerika Serikat dan ditandatangini oleh 17 tokoh penting dunia IT. Empat core values ini adalah :

  1. Individuals and interactions over processes and tools (Interaksi antar individu lebih penting dibandingkan proses dan alat.) — Artinya dibutuhkan komunikasi dan kolaborasi yang baik antar anggota tim untuk membuat software yang baik
  2. Working software over comprehensive documentation (Proses pengembangan software lebih penting dibandingkan dengan dokumentasi) — Artinya software yang bekerja sesuai direncanakan merupakan prioritas yang lebih tinggi dari dokumentasi yang rinci
  3. Customer collaboration over contract negotiation (Kolaborasi dengan klien lebih penting dibandingkan dengan kontrak.) — Artinya tim pengembang tetap harus berkolaborasi dengan klien walaupun sudah ada kontrak. Dengan adanya kolaborasi dengan klien, tim pengembang dapat menyesuaikan produk yang dikembangkan sesuai dengan yang tertulis dalam kontrak dan keinginan klien.
  4. Responding to change over following a plan (Menanggapi perubahan lebih penting daripada mengikuti rencana.) — Artinya tim pengembang harus selalu siap adaptasi terhadap perubahan dari klien atau lingkungan selama proses pengembangan
https://project-management.com/wp-content/uploads/2021/08/agile-manifesto-values.png

Tujuan Agile Development

Menurut beberapa sumber, tujuan dari Agile Development adalah :

1. High Value & Working App System

Tujuan pertama yaitu menghasilkan sebuah software yang punya nilai jual tinggi namun menggunakan biaya pembuatan yang serendah mungkin.

2. Iterative, Incremental, Evolutionary

Agile merupakan metode pengembangan software yang dijalankan secara iteratif, berulang, serta bisa diubah di tengah jalan bila perlu. Dengan istilah lain, metode ini fleksibel dan bisa dipakai dalam proyek IT jangka pendek.

3. Cost Control & Value Driven Development

Proses software development bisa disesuaikan dengan kebutuhan pengguna dan dana yang diperlukan juga dapat disesuaikan sesuai kebutuhan

4. High Quality Production

Kualitas produk tetap terjaga walaupun menggunakan biaya yang minimal dalam pengembangannya

5. Flexible & Risk Management

Dapat meminimalisir terjadinya kesalahan pada program atau produk sebelum dilakukan deploy dengan cara sering bertemu klien

6. Collaboration

Kolaborasi sangat penting dilakukan oleh tim pengembang untuk membahas feedback dari klien. Oleh karena itu diperlukan koordinasi serta komunikasi yang baik dengan seluruh anggota tim.

7. Self Organizing, Self Managing Teams

Tujuan akhir dari metode Agile yaitu tim pengembang diberi akses untuk mengatur sendiri urusan software development. Tugas seorang manajer yaitu menjadi penghubung antara developer dan klien sehingga miss communication dapat berkurang

Manfaat Penggunaan Metode Agile

Manfaat dari penggunaan metode Agile antara lain :

  1. Dari sisi pengembang (developer) dapat mengingkatkan produktivitas karena setiap anggota dapat mengerjakan tugasnya tanpa menunggu anggota lain mmenyelesaikan tugasnya
  2. Dari sisi klien dapat memastikan hasil produk sesuai yang diinginkan (karena sering berkomunikasi dengan tim pengembang)
  3. Bagi vendor/sponsor dapat menghemat pengeluaran serta dapat berfokus pada upaya pengembangan fitur dan peningkatan efisiensi
https://scrumorg-website-prod.s3.amazonaws.com/drupal/inline-images/2023-02/screenshot_2023-02-14_at_8.36.08_am.png

Scrum Metodology

Metodologi scrum merupakan salah satu metodologi yang menerapkan framework agile development. Beberapa metode lain yang menerapkan agile development antara lain : Agile Modeling, AUP (Agile Unified Process), Agile Data Method, XP (Extreme programming), dll. Scrum menerapkan prisnip-prinsip Agile Development seperti proses pengambangan dibagi menjadi beberapa siklus yang iteratif, memiliki adaptabilitas terhadap perubahan, berfokus dalam memberikan deliverable yang kecil tetapi sering, dan kolaborasi antar anggota. Scrum mempunyai 5 nilai utama yaitu Commitment, Focus, Openness, Respect, and Courage. Intinya tim Scrum harus mempunyai komitmen untuk memenuhi tujuan dan mendukung satu sama lain, mempunyai fokus utama untuk menyelesaikan goal yang telah ditentukan, masing-masing anggota harus terbuka tentang pekerjaan dan kesulutan yang dialaminya, anggota tim Scrum juga harus saling menghormati, dan mempunyai keberanian untuk melakukan hal yang benar dan mengerjakan hal yang sulit.

Scrum dibuat oleh Jeff Sutherland, Ken Schwaber and Mike Beedle, dan didasari oleh 6 prinsip yaitu Result flexibility, Deadline flexibility, Small teams, Frequent reviews, Cooperation, Object orientation. Scrum tidak mempunyai teknik khusus untuk menerapkannya, hanya memberikan beberapa management practices yaitu :

  • Product backlog

Titik / tahap paling awal Scrum adalah menyusun product backlog. Dalam tahap ini, diadakan pertemuan antara semmua anggota tim, klien, investor, dan partner untuk mendiskusikan seluruh business needs dan technical demands yang harus dikembangkan. Sehingga product backlog adalah daftar semua hal (termasuk fitur) yang harus dikembangkan dalam suatu proyek

  • Daily scrum

Daily Scrum atau Daily Standup Meeting adalah pertemuaan harian singkat untuk membahas progress masing-masing anggota tim. Dalam pertemuaan ini setiap anggota harus menjawab 3 pertanyaan yaitu : “Apa yang dilakukan kemarin?”, “Apa yang dilakukan hari ini?”, dan “Apakah ada kesulitan yang dialami dalam penyelesaian task?”

  • Sprint

Sprint merupakan inti dari metodologi Scrum. Disini semua task yang ditentukan dalam Sprint Planning akan dikerjakan dan diimplementasi tim Scrum sesuai pembagain tugas dan kesepakatan bersama. Biasanya 1 Sprint berlangsung selama 2–4 minggu.

  • Sprint planning meeting

Sprint Planning Meeting adalah pertemuan yang dilakukan sebelum memulai suatu Sprint untuk menentukan apa saja yang harus dikerjakan dalam suatu Sprint (Sprint Backlog) dan tujuannya (Sprint Goals)

  • Sprint backlog

Sprint Backlog adalah subset dari Product Backlog dan berisi semua hal yang harus dikerjakan dalam suatu Sprint

  • Sprint review meeting.

Sprint Review dilakukan setelah Sprint selesai dan mempunyai tujuan melihat dan menginspeksi hasil dari Sprint dan menyelidiki apakah ada kondisi lingkungan yang berubah dari awal Sprint. Berdasarkan dari informasi yang didapat, dilakukan diskusi tentang apa yang harus dilakukan selanjutnya dan perubahan yang perlu terhadap Product Backlog

  • Sprint Retrospective

Sprint Retrospective adalah hal terakhir yang dilakukan dalam suatu Sprint dimana diadakan refleksi dan evaluasi terhadap jalannya Sprint serta individual, interaksi, proses, tools, dan Definition of Done. Biasanya didiskusikan tentang apa yang berjalan baik dalam Sprint, apa masalah yang dialami, dan apa yang harus dilakukan untuk memperbaiki masalah tersebut.

Tim Scrum mempunyai 3 jenis role (peran) khusus yaitu :

  • Product Owner

Product Owner bertanggung jawab untuk memaksimalkan produk hasil kerja tim Scrum. Product Owner juga bertanggung jawab me-manage Product Backlog termasuk mengumunikasikan tujuan, deskripsi, urutan, dan transparansi setiap item dalam backlog.

  • Scrum Master

Scrum Master bertanggung jawab untuk memimpin tim sehingga dapat melaksanakan Scrum sesuai Scrum Guide. Scrum Master menjadi pemimpin tim Scrum dan bertanggung jawab terhadap efektivitas kinerja tim

  • Developer (tim pengembang)

Developer merupakan pihak yang mengerjakan dan mengimplementasikan Backlog dalam suatu proyek. Devoloper terdiri dari beberapa orang dan bertanggung jawab untuk merealisasikan Sprint Goal yang telah ditentukan

Pengalaman Pribadi Menggunakan Scrum

Pengalaman pertama saya menggunakan Scrum adalah saat mengikuti mata kuliah PPL (Proyek Perangkat Lunak). Melalui pengalaman ini, berikut hal-hal yang saya dapatkan saat menggunakan Scrum di PPL :

  • Lebih sedikit miss communication antar anggota dan komunikasi lebih lancar

Saya merasa akibat Daily Scrum dimana kami berdiskusi tentang progress dan masalah masing-masing, miskomunikasi menjadi sedikit (setidaknya dibandingan pengalaman saya di mata kuliah lain saat tidak menggunakan Scrum) dan komunikasi antar anggota juga lebih lancar. Selian itu melalui Daily Scrum kami juga dapat membantu anggota tim lain menyelesaikan masalah yang dialami dengan berdiskusi

  • Fleksibel dan dapat mengubah requirement suatu backlog sesuai kebutuhan

Scrum memungkinkan penyesuain terhadap backlog jika keadaan berubah. Karena waktu pengembangan hanya 3 Sprint dan 1 Sprint selama 1 bulan, beberapa fitur sulit kami simplifikasi. Contohnya menurut rencana kami akan membuat fitur real time chat dengan Django Websocket tetapi karena sepertinya sangat sulit salah satu anggota tim saya menemukan cara yang lebih mudah menggunakan Firebase sehingga kami menggunakan hal tersebut. Lalu ada kasus lain dimana tadinya kami tidak ingin membuat fitur review dalam aplikasi kami tetapi ada fitur rating. Kemudian kami diberi saran oleh dosen untuk tetap membuat fitur review tetapi yang sederhana saja dan terkait dengan rating sehingga kami mengubah backlog kami yang berkaitan dengan rating. Lalu pengalaman lain adalah saat pada rencana kami akan menggunakan Tailwind CSS untuk styling frontend ReactJS kami pada Sprint 2. Tetapi karena terlalu sulit dan merusak desain-desain sebelumnya akhirnya kami meng-cancel hal tersebut dan akhirnya memutuskan menggunakan framework komponen ReactJS dan module styled components saja.

  • Belajar membagi waktu dan mengerjakan task secara incremental

Sebelum menggunakan Scrum saya biasanya mengerjakan task saya secara sekaligus menjelang deadline dan biasanya menyebabkan beberapa bug besar. Tetapi sejak menggunakan Scrum saya terbiasa untuk mengerjakan task saya sedikit-sedikit tetapi sering dengan setiap sesi pengerjaan menghasilkan progress yang dapat dilihat. Dari sini saya juga belajar membagi waktu agar tugas saya dari mata kuliah lain juga dapat selesai tanpa mengorbankan task yang harus saya kerjakan dalam Scrum

Penutup

Demikian gambaran singkat tentang Agile Development dan Scrum yang dapat saya berikan beserta pengalaman pribadi saya. Mudah-mudahan artikel ini dapat berguna bagi kalian dan semoga semangat untuk menerapkan Scrum dalam software development kalian. Terima kasih telah membaca! Sampai jumpa!

Referensi :
1. https://www.atlassian.com/agile
2. https://www.binaracademy.com/blog/metode-agile-adalah
3. https://www.agilealliance.org/agile101/
4. https://www.dicoding.com/blog/konsep-agile-pada-software-development/
5. https://www.wrike.com/agile-guide/agile-manifesto/
6. https://scrumguides.org/scrum-guide.html
7. De Carvalho, B. V., & Mello, C. H. P. (2011). Scrum agile product development method-literature review, analysis and classification. Product: Management and Development, 9(1), 39–49.

--

--