This article was created for individual review assignment of PPL 2021

source: https://nascenia.com/necessary-factors-to-make-agile-software-development-a-success/

Dalam proses software development, ada beberapa approach yang dapat kita gunakan dalam pelaksanannya. Diantara approach tersebut, ada yang lebih berfokus terhadap fleksibilitas dalam proses pengembangan software, yang disebut sebagai “agile”. Pada artikel ini, saya akan membahas tentang agile, yang saat ini merupakan approach yang banyak digunakan dalam software development.

Apa itu Agile

Istilah Agile berasal dari kata “ Agility” , yang memiliki arti respons yang efektif, baik secara cepat ataupun adaptif terhadap perubahan. Sedangkan arti dari agile sendiri adalah kemampuan untuk menciptakan dan menanggapi perubahan. Agile adalah cara untuk menangani lingkungan yang tidak pasti ataupun kacau. Dalam proses sofware development, Agile menuntut kita untuk berpikir tentang apa yang terjadi di lingkungan sekitar kita, dan bagaimana cara beradaptasi dalam menghadapi lingkungan tersebut. Berdasarkan konsep tersebut, diciptakanlah approach dalam software development yaitu agile software development.

Agile software development merupakan sebuah istilah untuk sekelompok framework ataupun praktik dalam software development yang didasarkan dari nilai dan prinsip yang ada pada Agile Manifesto. Berikut adalah isi dari Agile Manifesto yang terdiri dari 4 nilai sebagai berikut:

The Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:

- Individuals and interactions over processes and tools

- Working software over comprehensive documentation

- Customer collaboration over contract negotiation

- Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Berdasarkan dari 4 nilai yang ada dari Agile Manifesto, dihasilkannya 12 prinsip diantaranya:

12 Agiles Principles, source: https://nicocasel.net/blog/why-i-feel-natural-with-agile-principles/

Dari prinsip-prinsip tersebut, berikut sedikit penjelasan tentang beberapa poin yang ada.

  • Poin 1

Dalam melakukan agile, software yang dikembangkan tidak akan ditunggu sampai benar-benar selesai sebelum di deliver terhadap client. Namun yang dilakukan biasanya adalah berusaha untuk menyelesaikan beberapa fitur yang sudah bekerja terlebih dahulu dan mengirimkannya terhadap client. Lalu kemudian kita dapat mendapatkan feedback terhadap fitur yang selesai tersebut, dan memperbaikinya jika ada kesalahan/kekurangan, atau melakukan increment terhadap projek dengan menambah fitur lain. Dengan hal tersebut, kita bisa melakukan delivery pada software dengan cepat, karena client/costumer dapat dipuaskan karena tidak harus menunggu terlalu lama untuk mendapatkan software yang sudah dapat bekerja.

  • Poin 2

Pada dunia yang terus berkembang dan berubah-ubah, requirement yang ada pada software pun juga mudah berubah-ubah sehingga tidak bisa diprediksi dengan akurat apa saja yang dibutuhkan. Karena hal tersebut, bisa saja software pada saat selesai dikembangkan sudah menjadi tidak relevan. Untuk mengatasi hal tersebut, pada proses pengembangan, kita harus menerima perubahan yang ada pada requirement, sehingga client pun bisa mendapatkan keuntungan kompetitif karena software tetap relevan dan mengikuti trend masa kini.

  • Poin 3

Poin ini berhubungan dengan poin kesatu mengenai delivery yang cepat dan terus menerus. Namun jika poin 1 lebih fokus pada hal delivery yang cepat, poin ini lebih membahas mengenai delivery secara terus menerus. Prinsip ini mengajurkan untuk melakukan delivery product sesering mungkin dengan jangka waktu yang cepat, baik dalam beberapa minggu ke beberapa bulan. Hal ini dianjurkan karena dengan jangka waktu yang pendek, fitur yang di release pun akan semakin kecil, sehingga bugs yang dapat muncul sehingga dapat lebih mudah diperbaiki. Selain itu, dengan frekuensi yang cepat feedback dari client pun bisa didapatkan dengan lebih cepat. Jadi hal yang harus diperbaiki dan dikembangkan pun akan sedikit-sedikit dalam satu waktu sehingga lebih mudah dikerjakan.

Agile frameworks

Seperti dari yang sudah dijelaskan, Agile software development terdiri dari beberapa framework dan praktik. Berikut adalah beberapa penjelasan dari framework yang merupakan subset dari agile software development.

1. Extreme Programming (XP)

XP Release Cycle, source: Slide RPL Agile Development Universitas Indonesia

Merupakan agile process yang paling banyak digunakan. Pada tahap planning dari XP, fitur akan dibagi menjadi “user stories” , yang masing-masing akan di assign cost sesuai beban work dari tiap fitur. Stories tersebut akan dikelompokkan sebagai deliverable increment, dan sebuah commitment akan dibuat pada tanggal delivery untuk satu increment. Berdasarkan projecy velocity yang merupakan pengukuran seberapa baiknya pengiriman fitur, maka akan ditentukan tanggal pengiriman untuk increment selanjutnya. Salah satu praktik umum yang dilakukan pada XP adalah pair programming, yaitu praktik menuliskan code dengan 2 orang dalam 1 komputer. Ada 5 nilai pada utama pada XP, yaitu Communication, Simplicity, Feedback, Courage, dan Respect.

2. Scrum

Scrum merupakan agile process yang memakai konsep sprint, yang merupakan sebuah event dengan durasi tetap untuk menjaga konsistensi. Setiap sprint baru mulai setelah sprint sebelumnya selesai. Fitur akan dibagi menjadi packets yang disebut sebagai product backlog. Backlog tersebut kemudian akan dibagi untuk dikerjakan pada setiap sprint yang akan diadakan. Setelah satu sprint selesai akan diadakan dipresentasikan ke costumer mengenai fitur yang sudah diselesaikan pada sprint.

Secara general, ada 3 fase pada scrum, yaitu:

  • Outline Planning: menetapkan objektif general dari projek, dan mendesain architecture dari software.
  • Series of Sprint Cycles: tahap dimana sprint-sprint akan dilaksanakan. Setiap cycle dari sprint mengembangkan increment dari system yang dibuat.
  • Project Closure: Tahap penyelesaian projek, menyelesaikan dokumen yang diperlukan untuk projek seperti panduan instalasi atau user manual.

Dalam scrum terdapat 3 role, diantaranya:

  • Product Owner: Merupakan orang yang mendefinisikan product backlog. Peran ini bertugas untuk mengumpulkan masukkan dari stakeholder dan costumer, dan menjadikannya sebagai fitur dari projek.
  • Development Team: Merupakan team programmer yang bertugas untuk mengembangkan software. Biasanya tidak ada role karena setiap anggota bekerja sama dalam mengembangkan aplikasi dari fitur masing-masing, namun juga dapat dibagi seperti menjadi frond end dan back end developer.
  • Scrum Master: Merupakan orang yang bertugas untuk mengatur development team. Semua event yang ada pada scrum juga akan diatur jadwal dan pelaksanaannya oleh scrum master.

Ada beberapa event yang diadakan dalam pelaksanaan scrum, yaitu:

  • Sprint Planning: Merupakan tahap awal sebelum sprint. Scrum master akan memilih sprint backlog yang merupakan fitur yang akan dikerjakan, diambil dari product backlog yang telah dibuat.
  • Sprint: Merupakan tahap dimana development team bekerja sama dalam menyelesaikan sprint backlog yang sudah ditentukan pada sprint planning. Biasanya durasi dari 1 sprint bisa sekitar 1–4 minggu.
  • Daily Standup Meeting: Merupakan meeting yang diadakan setiap hari yang diadakan dengan waktu singkat. Hal yang dibahas pada meeting ini adalah apa saja yang telah dilakukan setelah meeting terakhir, apakah ada halangan yang dihadapi, dan apa yang akan dilakukan sebelum meeting selanjutnya.
  • Sprint Review: Merupakan demo dari produk yang telah selesai di increment dari 1 tahap sprint terhadap stakeholder dari produk.

Contoh praktik Scrum yang dilakukan pada projek yang saya buat

Dalam salah satu project yang saya kembangkan, team saya mengimplementasikan scrum sebagai framework agile yang dilakukan. Berikut adalah sedikit penjelasan tentang aktivitas yang kami lakukan.

Sprint Planning

Product owner dari project kami menentukan fitur-fitur apa saja yang ingin dimasukkan ke dalam project, yang kemudian dibagi oleh scrum master kami menjadi PBI (Product Backlog Item). Pada sprint planning, scrum master kemudian akan menentukan PBI apa saja yang akan dimasukkan ke dalam sprint backlog yang akan dikerjakan pada sprint.

Sprint

Durasi waktu sprint yang kami lakukan dalam proses scrum ini adalah 2 minggu. Pada tahap ini, setiap anggota development team akan mengerjakan PBI yang sudah di assign ke dirinya masing-masing. Dalam mengerjakan projek, development team kami dibagi menjadi 2 role, yaitu frond end developer dan back end developer.

Daily Standup Meeting

Daily Standup Meeting kami adakan sekitar 2–3 hari sekali. Meskipun normalnya durasi tersebut adalah 1 hari, karena pada saat proses development anggota tim masih sibuk aktivitas kuliah, maka diputuskan untuk diadakan daily standup meeting dengan durasi tersebut, dan diadakan menyesuaikan dengan schedule masing-masing anggota.

Sprint Review

Pada akhir dari sprint, kami mempresentasikan hasil produk yang telah di increment pada satu tahap sprint tersebut. Hal yang dipresentasikan dari produk merupakan working product yang telah di deploy di environment development. Product owner kemudian akan memberikan feedback mengenai kelebihan dan kekurangan yang ada pada produk tersebut. Jika masih ada fitur yang tidak memenuhi kriteria, maka PBI fitur tersebut akan dimasukkan ke sprint backlog selanjutnya untuk dibenarkan. Setelah tahap ini selesai, diadakan sprint retrospective, yang akan mendiskusikan lebih lanjut mengenai apa yang sudah cukup dan apa yang masih bisa di improve, sehingga sprint selanjutnya dapat berjalan dengan lebih baik.

Demikian artikel saya mengenai Agile Development, semoga bermanfaat. Terima kasih.

Referensi: