Deep Dive into Agile Software Development

Natasya Meidiana
7 min readFeb 25, 2020

--

What’s Agile?

Agile software development menurut Agile Alliance adalah istilah umum untuk serangkaian kerangka kerja(framework) berdasarkan nilai-nilai dan prinsip-prinsip yang terdapat di dalam Manifesto for Agile Software Development. Agile sering digunakan ketika requirements dari suatu produk masih belum jelas atau masih memiliki kemungkinan untuk berganti-ganti di tengah pengembangan.

Agile Manifesto

Agile Manifesto menghasilkan 4 nilai dan 12 prinsip yang membentuk basis dari Agile Software Development. Terdapat 4 nilai pada Agile Manifesto, yaitu

1. Individuals and Interactions Over Processes and Tools

Hubungan antar individu dalam sebuah tim sangat penting karena menentukan flow kerja tim tersebut kedepannya. Komunikasi merupakan kuncinya karena dengan komunikasi yang baik kinerja tim dapat meningkat.

2. Working Software Over Comprehensive Documentation

Agile mendesain agar deliverables utama seorang developer tidak terganggu oleh pembuatan dokumentasi karena hal ini memakan banyak waktu dalam sebuah software development.

3. Customer Collaboration Over Contract Negotiation

Agile melibatkan kontribusi klien terutama pada sprint review, dimana seorang klien terlibat langsung dalam proses pengembangan produk.

4. Responding to Change Over Following a Plan

Agile mengizinkan adanya perubahan. Jika setiap rencana pengembangan yang dibagi menjadi task-task kecil membutuhkan perubahan, maka hal ini diperbolehkan untuk diubah pada iterasi selanjutnya.

Setelah mengetahui 4 nilai Agile, mari kita lanjutkan untuk mengenal 12 prinsipnya, yaitu

1. Customer satisfaction is of highest priority which is achieved through the continuous delivery of valuable software.

Prinsip ini dipenuhi di setiap sprint review dimana klien menerima Minimum Viable Product (MVP) dari sebuah produk pada setiap iterasinya.

2. Accommodate changing requirements even in later phases of development.

Selalu sediakan waktu untuk perubahan suatu requirements.

3. Deliver working software frequently in a shorter timescale.

Pada setiap sprint review, selalu sediakan MVP.

4. Business teams and developers must collaborate on a daily basis throughout the project.

Komunikasi yang baik antara development team dan klien merupakan kunci dari agile.

5. Higher autonomy is given to the team members with greater support and trust.

Dalam development team, setiap anggotanya perlu untuk saling membantu dan menyemangati satu sama lain.

6. Face-to-face interaction is critical for conveying information within a development team.

Interaksi secara langsung adalah bentuk komunikasi terbaik dalam agile.

7. The progress of the project is measured by working software.

Cara yang baik untuk mengukur progress dari pengembangan produk di setiap iterasi nya adalah berdasarkan MVP.

8. Promote sustainable development by maintaining a constant pace indefinitely.

Pace yang konsisten dan cepat merupakan best practice.

9. Technical excellence and good design should be the main focus.

Desain dan perencanaan yang baik dapat mendukung pace yang cepat dan konsisten.

10. Simplicity is essential for progress.

Kesederhanaan sangat penting di setiap progress nya, suatu produk cukup dikembangkan sesuai kesepakatan pada setiap sprint.

11. Self-organizing teams are required for the best architectures and designs.

Tim yang kuat adalah tim yang dapat berkomunikasi dengan baik satu sama lain.

12. The teams should reflect on how to become more effective regularly and adopt the changes to increase effectiveness.

Selalu mengadakan evaluasi atas hal yang telah dikerjakan sehingga kedepannya dapat meningkatkan kinerja sebagai seorang developer dan sebagai development team.

SCRUM

Source: https://www.visual-paradigm.com/scrum/10-basic-scrum-rules/

Agile banyak diimplementasikan oleh perusahaan startup yang membutuhkan perkembangan cepat dengan product delivery yang singkat. Salah satu framework dari Agile adalah Scrum. Scrum biasanya digunakan dalam sebuah tim yang beranggotakan 3–9 orang, yang bekerja dalam rangkaian waktu tertentu dan memiliki daily scrums, dimana tim berkumpul selama 15 menit setiap harinya untuk membahas progress sprint yang sedang berjalan.

Terdapat aktor-aktor yang terlibat pada Scrum dengan penjelasan sebagai berikut:

  • Scrum team: Berisi Product Owner, Development Team, dan Scrum Master.
  • Product owner: Individu atau kelompok yang mengusulkan ide atau gagasan sebuah produk. Peran ini berwenang untuk menentukan apakah produk dapat diterima atau ditolak dan menilai kinerja dari development team. Selain itu, Product Owner juga berperan dalam menyediakan Product Backlog Item(PBI) dan menentukan sprint goals.
  • Development team: Sekumpulan programmer handal yang akan mengembangkan produk.
  • Scrum master: Individu yang mendukung scrum dengan menjelaskan teori dari scrum, aturan, nilai, dan praktiknya. Scrum master juga menjadi perantara antara development team dan product owner.

Fase-fase yang terdapat pada Scrum antara lain:

  • Inisiasi: pada fase ini development team mengadakan pertemuan dengan partner (calon Product Owner), membuat high fidelity mockup, dan setup environment.
  • Sprint planning: pada fase ini development team melakukan estimasi poin/bobot setiap user story. User story atau yang biasa dikenal dengan PBI dipilih dalam satu sprint, dijadikan sprint backlog, dan dipecah menjadi beberapa tasks. Pada tahap ini, product owner menentukan sprint goals.
  • Sprint: pada fase sprint dilakukan daily standup meeting untuk update scrum board.
  • Sprint review dan sprint retrospective: pada fase ini dilakukan penilaian terhadap produk saat sprint review dan penilaian terhadap development team saat sprint retrospective.

Implementation and Lesson Learned

Features in BuildFocus

BuildFocus adalah aplikasi untuk membuat orang-orang tetap fokus dengan pekerjaan mereka dan waktu fokus mereka juga dapat diubah menjadi bentuk donasi. BuildFocus merupakan rancangan produk yang diajukan oleh Startup Gotong Royong. Visi kami disini yaitu membuat setiap individu tetap fokus dan tidak ada yang mengganggu dalam mengerjakan aktivitas mereka, dan mereka pun dapat berdonasi secara sosial dengan memberdayakan teknologi aplikasi. Pada aplikasi ini, kami memiliki tujuan untuk mengubah waktu fokus menjadi koin dan hati, mengelola waktu fokus (statistik), mengubah hati menjadi donasi, dan mengubah koin menjadi bangunan / item yang diinginkan. Untuk mencapai visi dan tujuan kami, kami membutuhkan metodologi yang sempurna dengan kualitas hebat dan memberikan nilai lebih cepat. Itu sebabnya kami memilih scrum sebagai metodologi kami. Kelompok PPL-GO terdiri dari 5 orang, yaitu Nio, Rindu, Radit, Ridho, dan saya sendiri, Caca.

Aktor-aktor yang terlibat dalam pengembangan aplikasi BuildFocus yaitu

  1. Kak Muthia Nabila, selaku asisten dosen product owner.
  2. Kak Ismail, selaku scrum master dari kelompok PPL-GO. Kak Ismail bertanggung jawab untuk memastikan kelompok kami berada di jalur yang sesuai dengan menyediakan sumber daya yang diperlukan dan memblokir gangguan yang dapat menghambat proses pengembangan aplikasi.
  3. Kelompok PPL-GO, selaku development team yang akan mengembangkan aplikasi ini.

Fase-fase yang telah dan akan kami lewati sepanjang perkuliahan PPL ini dengan menggunakan framework scrum antara lain

  1. Fase inisiasi. Pada fase ini kami melakukan setup environment di Gitlab, membuat high fidelity untuk aplikasi, membuat persona, finalisasi PBI dan PRD, serta melakukan pertemuan bersama dosen, scrum master, asisten dosen product owner, dan partner dari Gotong Royong, Kak Luthfi.
Kelompok PPL-GO setelah melakukan presentasi finalisasi produk

2. Sprint planning. Fase ini telah kami lalui dengan menentukan prioritas PBI yang akan dikerjakan di setiap sprint, memecah PBI menjadi tasks-tasks yang lebih kecil lagi dan melakukan pembobotan untuk setiap tasks nya sehingga bisa ditentukan tasks yang akan dikerjakan terlebih dahulu. Sprint planning pertama yang dilakukan di kelas bersama scrum master berjalan dengan baik. Sprint planning kedua juga telah kami lakukan setelah melakukan sprint review di hadapan dosen dan asisten dosen product owner.

3. Sprint. Untuk membangun BuildFocus, kami membutuhkan lima kali sprint dengan ukuran satu sprint yaitu dua minggu. Kami telah melakukan satu kali sprint, yaitu ketika menyelesaikan PBI 1-Pomodoro Countdown. Saat ini kelompok PPL-GO sedang memasuki sprint kedua.

Scrum Board milik PPL-GO

Scrum board di atas merupakan scrum board saat sprint 1. Saat sprint 2 kelompok PPL-GO langsung melakukan breakdown tasks di Gitlab Board. Sebenarnya, saat sprint 1 kelompok PPL-GO juga sudah membuat di Gitlab Board, hanya saja kami ingin mendokumentasikan sprint 1 ini dengan scrum board manual sehingga momen ini bisa menjadi kenang-kenangan selama menjalani PPL 2020.

4. Sprint review dan sprint retrospective. Kelompok PPL-GO baru saja menyelesaikan sprint review dan sprint retrospective hari selasa kemarin. Sprint review berjalan dengan lancar dan PBI kami pun diterima. Dari pihak product owner cukup puas dengan hasil kerja kami dan mereka pun segera memberikan feedback. Setelah selesai sprint review, kelompok kami langsung melakukan sprint planning untuk PBI selanjutnya dan sprint retrospective. Di sini kami membagikan poin-poin apa saja yang bagus dan buruk dari pekerjaan kami selama 2 minggu. Bersama dengan scrum master, kami mencari jalan keluar masalah tersebut dengan membuat action list untuk sprint berikutnya.

Lesson learned yang didapat selama menggunakan metode scrum ini yaitu kelompok PPL-GO hampir menerapkan semua nilai dan prinsip dari Agile Manifesto sendiri. Dalam setiap fasenya pun, kami sudah menerapkan sesuai dengan aturan, dan ketika ada perubahan requirements dari product owner, kami bisa dengan gesit untuk memfinalisasi perubahan itu untuk segera diimplementasikan pada daily scrum ataupun sprint selanjutnya.

Demikian penjelasan saya mengenai Agile. Semoga kita selalu bisa menjadi agile dalam dunia perkodingan ini. See you in another blog!

References

  1. https://www.agilealliance.org/agile101/
  2. https://www.visual-paradigm.com/scrum/what-is-agile-software-development/
  3. https://www.cprime.com/resources/what-is-agile-what-is-scrum/

--

--