Agile Development, Si Tahan Banting Terhadap Perubahan

Muhammad Raihan
6 min readMar 20, 2021

--

Jika sebuah aplikasi ingin sukses di pasaran atau tetap digunakan masyarakat luas dalam waktu yang lama, maka fitur dari aplikasi tersebut harus pula berubah mengikuti perkembangan kebutuhan masyarakat. Hal tersebut menjadi sebuah masalah tersendiri bagi tim pengembang perangkat lunak tersebut. Bagaimana tim tersebut dapat bekerja secara maksimal jika requirement perangkat lunak terus berubah ditengah proses perkembangan? Ada sebuah metode yang dapat membuat tim software developer dapat menjadi “tahan banting” terhadap perubahan requirement yang ada di tengah-tengah proses pengembangan aplikasi. Nama metode tersebut adalah Agile Development.

AGILE DEVELOPMENT

Agile dalam bahasa Indonesia berarti tangkas, lincah, atau gesit. Berangkat dari kata tersebut, terdapat sebuah metode yang tangkas dalam menghadapi perubahan bernama Agile Development. Agile development adalah sebuah metode pengembangan perangkat lunak jangka pendek dan berulang yang memerlukan adaptasi cepat dari para developer terhadap perubahan requirement yang terjadi.

Agile development pertama kali dipopulerkan oleh Kent Beck dan tim pada tahun 2001. Agile development hadir untuk membantu developer mengatasi masalah kebutuhan aplikasi yang sulit diprediksi dari awal dan akan terus berubah seiring berjalannya waktu. Untuk mewujudkan hal tersebut, Agile development mengikuti prinsip yang dituliskan oleh Kent Beck dan tim yang bernama Agile Manifesto. Para penulis memilih kata “agile” karena kata tersebut merepresentasikan sifat adaptif pada perubahan yang sangat penting dalam pengembangan perangkat lunak. Agile manifesto berisi :

  • Individuals and interactions over processes and tools

Dalam proses pengembangan dengan metode agile development, komunikasi antar individu yang terkait (tidak hanya tim developer) sangat diutamakan.

  • Working software over comprehensive documentation

Dalam proses pengembangan dengan metode agile development, yang diutamakan adalah berjalannya fitur sesuai requirement yang sesuai. Manifesto ini bukan berarti tidak harus membuat dokumentasi terhadap source code yang dibuat, namun bukan menjadi prioritas dan memberikan “kelonggaran waktu” untuk membuat dokumentasi.

  • Customer collaboration over contract negotiation

Dalam proses pengembangan dengan metode agile development, komunikasi antar pihak client/customer dengan tim software developer tidak hanya berlangsung diawal saat melakukan negosiasi kontrak, namun terus berjalan hingga proses pengembangan aplikasi selesai.

  • Responding to change over following a plan

Dalam proses pengembangan dengan metode agile development, tim developer harus sigap dalam menghadapi perubahan requirement yang dapat terjadi sewaktu-waktu ditengah proses pengembangan.

PRINSIP AGILE DEVELOPMENT

Agar sebuah tim dapat berhasil menjalankan 4 poin agile manifesto diatas, maka tim tersebut harus menuruti 12 prinsip berikut :

  1. Prioritas utama dalam agile development adalah memuaskan client dengan mengantarkan software yang bernilai secara cepat dan rutin.
  2. Menerima perubahan requirement meskipun datang terlambat dalam proses pengembangan.
  3. Mengantarkan working software secara rutin
  4. Rekan bisnis (client) dan tim developer harus bekerja sama hingga proses pengembangan berakhir
  5. Memiliki tim yang termotivasi dalam mengambangkan software
  6. Komunikasi secara langsung sebagai metode terbaik berkomunikasi dalam tim developer
  7. Tolak ukur utama adalah working software yang dihasilkan
  8. Pengembangan berkelanjutan
  9. Memperhatikan teknis dan design secara terus-menerus
  10. Memaksimalkan sumber daya yang tersedia
  11. Arsitektur, kebutuhan, dan rancangan perangkat lunak terbaik muncul dari tim yang dapat mengorganisir diri sendiri.
  12. Secara berkala, tim developer melakukan refleksi tentang bagaimana untuk menjadi lebih efektif

Dari pengalaman pribadi saya menjalani proses pengembangan software dengan metode Agile Development, berikut adalah beberapa penjelasan dari prinsip Agile Development yang menurut saya lebih sulit untuk diterapkan dari prinsip yang lain:

  • Prioritas utama dalam agile development adalah memuaskan client dengan mengantarkan software yang bernilai secara cepat dan rutin.

Setiap iterasi dari proses pengembangan software secara Agile, harus men-deliver software yang memiliki nilai setiap waktu. Maka dari itu ketepatan waktu pengerjaan sangat penting.

  • Menerima perubahan requirement meskipun datang terlambat dalam proses pengembangan.

Agile memang dirancang untuk tahan banting terhadap perubahan. Namun, tetap saja perubahan yang datang terlambat juga akan memperlambat waktu untuk mendeliver working software secara cepat dan rutin. Untuk menghadapi hal tersebut, masing-masing metode Agile memiliki cara tersendiri untuk menghadapinya. Contohnya pada metode SCRUM, perubahan tidak dapat terjadi saat sprint tengah berlangsung.

  • Rekan bisnis (client) dan tim developer harus bekerja sama hingga proses pengembangan berakhir

Selama proses pengembangan perangkat lunak, stakeholder yang biasa berada pada bidang bisnis tetap harus “keep in touch” dengan tim developer (dengan peran apapun) agar pengembangan software dapat berjalan dengan baik.

  • Arsitektur, kebutuhan, dan rancangan perangkat lunak terbaik muncul dari tim yang dapat mengorganisir diri sendiri.

Tolak ukur berhasilnya sebuah tim developer untuk mengembangkan sebuah software adalah working software yang di-deliver secara rutin. Namun, cara pengembangan diserahkan kepada tim tersebut. Maka dari itu, tim dengan leader yang baik dan kemampuan organize yang baik dapat memaksimalkan proses pengembangan software

  • Secara berkala, tim developer melakukan refleksi tentang bagaimana untuk menjadi lebih efektif

Setiap iterasi proses Agile Development, tim developer harus melakukan refleksi terhadap apa yang terjadi pada iterasi proses pengembangan yang sudah terjadi. Apa yang sudah berjalan dengan baik dan apa yang menjadi penghalang terhadap proses pengembangan. Hal ini dilakukan agar tim developer dapat memaksimalkan pekerjaan dengan meminimalisir hambatan yang ditemukan.

JENIS-JENIS AGILE DEVELOPMENT

Prinsip-prinsip dari agile development diatas banyak diterapkan dalam banyak metode pengembangan. Metode pengembangan yang mengadaptasi agile development diantaranya :

  • Extreme Programming (XP)
  • SCRUM
  • Dynamic System Development Method (DSDM)
  • Feature Driven Development
  • dan masih banyak lagi….

SCRUM

Selanjutnya kita akan membahas mengenai salah satu jenis agile development, yaitu SCRUM, karena SCRUM digunakan pada proses pengembangan perangkat lunak mata kuliah PPL 2021. Secara singkat, SCRUM adalah kerangka kerja sederhana untuk pengembangan sebuah produk yang kompleks. Komponen SCRUM secara garis besar dibagi menjadi 3 bagian, yaitu SCRUM Event, SCRUM Team, dan SCRUM Artifact.

Yang pertama akan dibahas adalah SCRUM Team, yaitu siapa saja yang berkontribusi dalam perkembangan perangkat lunak yang dikerjakan. SCRUM Team terdiri dari :

  • Product Owner

Product Owner (PO) bertanggung jawab dalam memaksimalkan produk yang dihasilkan dari hasil kerja development team. Product owner melakukan tanggung jawabnya dengan membuat product backlog.

  • Scrum Master

Scrum master (SM) bertanggung jawab penuh untuk pelaksanaan metode SCRUM oleh seluruh development team.

  • Development Team

Development team terdiri dari software developer yang bertugas mengembangkan setiap “potongan” requirement aplikasi yang dibutuhkan oleh client hingga proses pengembangan berakhir. Pada perkuliahan PPL 2021, saya dan teman-teman berkesempatan untuk berperan sebagai sebuah development team dalam SCRUM team kami.

Setelah mengetahui siapa saja yang berperan dalam proses SCRUM, sekarang kita harus tau tentang apa saja yang mereka lakukan. Apa yang mereka lakukan disebut SCRUM Event, yang terdiri dari :

  • Sprint

Sprint adalah inti dari proses pengembangan software pada SCRUM. Sprint adalah masa dimana tim developer mengembangkan aplikasi sesuai dengan apa yang direncanakan pada sprint planning. Sprint biasanya berjalan selama 1 atau 2 minggu.

  • Sprint Planning

Sprint planning adalah event dimana product owner dan development team bertemu untuk merencanakan apa saja yang akan dikerjakan pada masa sprint selanjutnya.

  • Sprint Review

Sprint review adalah event dimana development team mempresentasikan hasil dari apa yang dikerjakan selama masa sprint pada product owner.

  • Retrospective

Retrospective adalah event dimana development team melakukan refleksi apa yang terjadi pada masa sprint dan apa yang bisa ditingkatkan untung membuat pekerjaan development team lebih efektif untuk sprint selanjutnya. Retrospective biasanya dipimpin oleh seorang Scrum Master.

  • Daily Standup Meeting

Daily Standup Meeting adalah event yang dikerjakan development team setiap hari dimana mereka berkomunikasi mengenai apa yang sudah dikerjakan hari tersebut dan apa yang akan dikerjakan selanjutnya. Pada DSM juga dibicarakan jika ada halangan untuk mencapai requirement tertentu.

Terakhir, kita harus mengetahui SCRUM Artifact, yaitu apa saja item/kelengkapan yang dibutuhkan agar proses SCRUM berjalan dengan lancar. SCRUM Artifact terdiri dari :

  • Product Backlog

Product backlog berisi requirement dari perangkat lunak yang sedang dikembangkan. Setiap detail dari requirement tersebut disebut Product Backlog Item (PBI).

  • Sprint Backlog

Sprint backlog berisi PBI yang akan dikerjakan selama sprint yang sedang berlangsung. PBI yang dikerjakan disepakati antara PO dan development team pada saat sprint planning.

  • Increment

Increment menggambarkan suatu produk yang sudah diimplementasikan fitur pada PBI setelah suatu sprint selesai. Produk atau software harus sudah berkembang dari sprint sebelumnya.

Begitulah penjelasan singkat mengenai Agile Development dan SCRUM yang akan membuat tim software developer “tahan banting” terhadap perubahan requirement aplikasi yang datang tiba-tiba. Semoga artikel ini bermanfaat!

Referensi :

--

--