Maximizing Efficiency and Productivity with Agile and Scrum

Ivan Phanderson
11 min readMar 7, 2023

--

Waterfall vs Agile. Sumber

— Agile

Pengertian Agile

Agile merupakan sebuah metode pengembangan perangkat lunak yang dilakukan secara iteratif. Metode agile dapat beradaptasi dengan adanya perubahan kebutuhan pasar. Agile merupakan alternatif dari metode waterfall yang tidak bisa diubah di tengah proses pengembangan.

Sejarah Agile

Pada tahun 2000, sebuah grup yang terdiri dari 17 pengembang perangkat lunak berkumpul dan menyadari bahwa mereka mengembangkan perangkat lunak dengan cara yang berbeda dari waterfall. Mereka mendiskusikan bagaimana mereka dapat mempercepat proses pengembangan perangkat lunak yang sesuai dengan kebutuhan pasar. Tujuan dari percepatan ini adalah memungkinkan pengguna mendapatkan beberapa keuntungan dari perangkat lunak lebih cepat dan memungkinkan pengembang mendapatkan umpan balik dari berbagai kalangan. Umpan balik yang cepat diperoleh dan kemauan untuk mengubah perangkat lunak sesuai dengan kebutuhan pasar inilah yang menjadi kunci utama dari metodologi Agile.

Agile Manifesto

Pertemuan 17 pengembang tersebut juga memunculkan 4 Agile Manifesto, yaitu:

1. Mengedepankan individu dan interaksinya, dibanding proses dan tools.
Proses dan tools sendiri sebenarnya masih cukup berguna untuk memantau progres. Akan tetapi, metode agile lebih memprioritaskan pentingnya komunikasi tatap muka dan umpan balik rutin untuk memastikan bahwa semua pengembang bekerja dengan tujuan yang sama.

2. Mengedepankan software yang berfungsi, dibanding membuat dokumentasi lengkap.
Metode Agile menginginkan umpan balik yang sesegera mungkin dari pengguna agar tim pengembang dapat melakukan penyesuaian terhadap software yang dikembangkan. Oleh karena itu, metode agile mengedepankan software yang berfungsi agar pengguna dapat langsung mencoba software tersebut. Dokumentasi masih perlu dibuat, tetapi hanya tersaji dalam bentuk yang lebih ringkas.

3. Mengedepankan kerjasama dengan konsumen, dibanding negosiasi kontrak
Fleksibilitas menjadi salah kunci utama dalam metode Agile. Tentu saja, daripada terikat dengan kontrak yang kaku, metode ini akan lebih memprioritaskan untuk bekerja bersama dengan konsumen agar dapat mengembangkan software sesuai dengan kebutuhan konsumen

4. Menanggapi perubahan, dibanding sekedar mengikuti rencana
Selaras dengan tujuan dari metode Agile, metode ini tidak mau terikat dengan rencana awal seperti metode Waterfall. Namun demikian, tidak berarti metode ini mengesampingkan nilai dari rencana awal. Hanya saja, metode ini akan beradaptasi terhadap perubahan yang ada untuk memenuhi kebutuhan pasar.

Prinsip Agile

  1. Kepuasan klien dengan perilisan yang cepat dan berkelanjutan adalah prioritas utama
    Dengan menerapkan prinsip ini, pengguna akan lebih bahagia karena mereka mendapatkan apa yang mereka inginkan lebih cepat. Selain itu, dengan mempercepat perilisan software, kita juga akan cepat memperoleh feedback dari klien.
  2. Adaptif dengan perubahan untuk menciptakan keuntungan yang kompetitif bagi klien
    Kebutuhan dari klien cenderung akan berubah-ubah seiring berjalannya waktu. Oleh karena itu, tim pengembang juga harus fleksibel terhadap perubahan tersebut.
  3. Menghasilkan perangkat lunak secara rutin dalam jangka waktu yang pendek
    Dengan menghasilkan perangkat lunak dalam jangka waktu yang lebih pendek, baik pengguna maupun pengembang akan mendapatkan keuntungan. Bagi pengguna, mereka dapat langsung mencoba dan memanfaatkan software yang kita hasilkan. Sedangkan bagi pengembang, kita dapat langsung memperoleh feedback dari pengguna.
  4. Kerja sama tim berlangsung setiap waktu
    Dalam mengembangkan software, kerja sama dengan tim sangat diperlukan agar kita dapat mencapai tujuan dari software yang dikembangkan
  5. Mengembangkan proyek bersama individual yang memotivasi.
    Prinsip ini juga sangat penting karena dengan bekerja pada lingkungan yang nyaman, seorang individu tentu akan lebih dapat mengeluarkan potensinya.
  6. Menggunakan komunikasi secara langsung untuk menyampaikan suatu informasi
    Face-to-face communication atau komunikasi secara langsung dapat mengurangi waktu yang antara mengajukan pertanyaan dan memberi jawaban karena kita langsung memperoleh jawabannya setelah selesai bertanya.
  7. Perangkat lunak yang bekerja dengan baik adalah tolok ukur kemajuan
    Progres dari software yang dikembangkan diukur dari software yang dirilis ke pengguna, bukan diukur berdasarkan banyaknya task yang diselesaikan.
  8. Pengembangan yang berkelanjutan
    Laju dari pengembangan software perlu di-maintain agar konstan sehingga developer tidak terlalu terbebani dan proses pengembangan dapat berlangsung dengan baik
  9. Memperhatikan teknis dan rancangan aplikasi secara berkelanjutan
    Dengan memberikan atensi pada hal tersebut, software kita cenderung akan lebih kebal terhadap bugs ataupun malfungsi
  10. Kesederhanaan itu penting
    Jika terdapat banyak cara untuk menyelesaikan suatu software, sebaiknya diselesaikan dengan cara yang lebih sederhana karena pengguna tidak peduli terhadap usaha yang dilakukan oleh developer. Pengguna hanya memerlukan software yang mereka minta.
  11. Desain, kebutuhan dan rancangan terbaik muncul dari anggota tim yang self-organized
    Anggota tim yang self-organized akan memiliki pemahaman yang lebih baik terhadap software yang mereka kembangkan. Dengan demikian, tim tersebut dapat menghasilkan software yang berkualitas tinggi.
  12. Refleksi berkala tim untuk menyesuaikan dan menyelaraskan cara kerja yang efektif dan efisien
    Dengan melakukan refleksi secara berkala, kita dapat mengetahui hal-hal apa saja yang kurang selama pengembangan dan mendiskusikan masalah tersebut dengan tim. Hasil diskusi ini akan membantu kita untuk melakukan penyesuaian untuk memperbaiki kekurangan tersebut.

Stacey Matrix

Stacey Matrix merupakan tools yang dipakai dalam manajemen proyek dan pengambilan keputusan. Stacey matrix membantu kita untuk mengetahui level dari proyek kita sehingga membantu kita untuk memilih pendekatan yang depat dalam mengembangkan proyek tersebut. Terdapat 4 kategori dalam stacey matrix, yaitu:

  1. Simple
    Pada kategori ini, task-task yang diberikan sudah jelas dan mudah untuk diselesaikan. Contohnya adalah mengembangkan website-website sederhana seperti halaman hello world
  2. Complicated
    Task pada kategori ini lebih sulit dari kategori simple dan biasanya membutuhkan tools yang lebih advanced untuk menyelesaikan task ini. Contohnya adalah mengembangkan sistem manajemen finansial suatu perusahaan
  3. Complex
    Pada kategori ini, task yang perlu dilakukan bisa saja belum jelas sehingga kita juga cukup bingung dalam menentukan cara mengerjakannya. Biasanya pada kategori ini, diperlukan kolaborasi tinggi antar anggota tim dan fleksibilitas dalam perubahan fitur seperti metode agile. Contoh dari kategori ini adalah pengembangan proyek kelompok kami, yaitu SIEvent yang masih belum begitu jelas arah pengembangannya.
  4. Anarchy
    Kategori ini lebih membingungkan dari kategori complex. Jika pada kategori complex kita sudah mengetahui gambaran tasknya (walaupun kurang jelas), pada kategori anarchy kita benar-benar tidak tahu apa yang harus dikerjakan untuk menyelesaikan tasknya. Contohnya adalah ketika ingin memperbaiki celah keamanan suatu sistem yang diretas oleh hacker.
Scrum Process. Sumber

— Scrum

Pengertian Scrum

Scrum merupakan framework penerapan dari Agile. Scrum bertujuan untuk membantu individu, tim, dan organisasi menghasilkan nilai solusi dari suatu permasalahan, seperti produk aplikasi kompleks dalam pengembangan software.

Role Utama pada Scrum

  1. Product Owner (PO)
    PO bertanggung jawab untuk memastikan bahwa ekspektasi dari klien terhadap produk dapat dipenuhi oleh timnya. PO juga berfungsi sebagai jembatan penghubung antara tim pengembang dengan klien.
  2. Scrum Master (SM)
    SM bertanggung jawab untuk memastikan kelancaran proses scrum dalam mengembangkan software. SM juga bertindak untuk mencegah terjadinya miskomunikasi antar anggota tim sehingga dapat mencapai tujuan dari pen gembangan tersebut.
  3. Development Team
    Tim pengembang bertanggung jawab untuk menyelesaikan pekerjaan yang diberikan sehingga tim dapat merilis increment dari produk setiap kali suatu sprint selesai.

Pilar Utama Scrum

  1. Transparansi
    Tim bekerja pada lingkungan yang terbuka dimana seluruh anggota tim mengetahui progres satu sama lain dan mengetahui kendala apa saja yang mereka hadapi.
  2. Pengamatan/Inspeksi
    Tim secara konsisten mengevaluasi performa mereka dalam pengembangan software sehingga proyeknya dapat berjalan lebih efisien dan lebih terkontrol
  3. Adaptasi
    Tim pengembang dapat mengubah prioritas dari task yang ada sesuai dengan perubahan kebutuhan klien. Tim akan memutuskan task mana yang harus diselesaikan terlebih dahulu dan task mana yang akan ditinjau ulang di masa depan

Scrum Values

  1. Courage
    Tim scrum harus berani untuk menyampaikan ide-ide yang mereka miliki walaupun ide tersebut bertentangan dengan status quo. Tim scrum juga harus memiliki keberanian untuk mencoba hal-hal baru
  2. Focus
    Pada periode waktu tertentu, tim developer akan bekerja menyelesaikan task dari Product Backlog. Tim pengembang harus fokus menyelesaikan task tersebut agar dapat dirilis ketika sprint tersebut selesai.
  3. Commitment
    Setiap anggota tim scrum berperan penting dalam menentukan kesuksesan tim. Oleh karena itu, setiap anggota harus berkomitmen menyelesaikan pekerjaan mereka dalam waktu yang ditentukan.
  4. Respect
    Setiap anggota tim memiliki kemampuan yang berbeda-beda dan setiap anggota harus dihormati kemampuannya. Penghormatan terhadap satu sama lain juga akan meningkatkan semangat kolaborasi dalam tim tersebut.
  5. Openness
    Anggota tim membagikan apa yang sudah mereka kerjakan, apa yang sedang mereka kerjakan, dan apa yang perlu diperbaiki sehingga stakeholders mengetahui progres tim. Selain itu, anggota tim juga terbuka terhadap ide baru dan terbuka untuk menerima feedback

Scrum Artifacts

  1. Product Backlog
    Product Backlog merupakan kumpulan dari fitur, requirements, dan perbaikan yang harus dikerjakan untuk menyelesaikan proyek. Product backlog secara konstan akan ditinjau kembali untuk disusun ulang isinya dan prioritasnya menyesuaikan kebutuhan pasar.
  2. Sprint Backlog
    Sprint Backlog berisi sekumpulan hal yang harus diselesaikan oleh tim pengembang dalam suatu sprint. Pemilihan Sprint Backlog dilakukan pada masa sprint planning dengan cara memilih item-item dari Product Backlog. Sprint Backlog bersifat fleksibel dan dapat berubah ketika sprint berjalan. Item-item yang terpilih nantinya tidak akan di-assign kepada developers, melainkan developer sendiri yang akan mengambil item tersebut sesuai dengan prioritas kan kemampuan mereka. Hal ini juga akan mendorong terciptanya self-organized team.
  3. Increments
    Increments merupakan hasil dari apa yang sudah diselesaikan dalam suatu sprint. Hasil ini terbentuk dari sprint backlog yang diselesaikan dan diintegrasikan dengan hasil pekerjaan pada sprint sebelumnya. Increment ini juga menunjukkan progres yang sudah berhasil diselesaikan oleh tim pengembang.

Scrum Events

1. Fase Inisiasi
Fase ini dilakukan sebelum pengembangan proyek dimulai atau pada masa sprint 0. Beberapa hal yang dilakukan pada fase ini antara lain menyusun Product Backlog Items (PBI), membuat Product Requirements Document (PRD) dan System Design Specification (SDS), menyusun user stories, dan membuat wireframe dari aplikasi yang ingin dikembangkan.

2. Fase Sprint Planning

Sprint planning dalam kelas PPL

Pada fase ini, PO bersama tim pengembang menentukan backlog apa saja yang akan dikerjakan pada sprint tersebut. PO akan menentukan prioritas dari setiap PBI dan developers diharapkan juga dapat memberi masukan kepada PO. Jumlah PBI yang dipilih akan bergantung pada tingkat kesulitan dari PBI tersebut dan kemampuan dari setiap anggota tim. Setelah PBI dipilih, PBI tersebut tidak akan di-assign ke suatu developer secara spesifik, melainkan masing-masing developer akan memilih sendiri backlog yang ingin mereka kerjakan. Pada fase ini, terdapat beberapa tools yang dapat digunakan untuk mempermudah sprint planning seperti Jira dan Gitlab Boards.

3. Fase Sprint

Daily standup meeting kelompok 8 PPL

Masing-masing developer melakukan implementasi dari backlog yang mereka pilih. Setiap kali mereka mengambil dan menyelesaikan backlog, maka scrum board perlu diupdate agar diketahui progresnya oleh seluruh developers.
Selain melakukan implementasi, terdapat juga daily standup meeting yang dilakukan minimal 2 kali seminggu atau minimal 4 kali dalam 1 sprint. Kelompok kami menentukan jadwal daily standup meeting pada hari Senin dan Kamis. Kegiatan daily standup meeting akan dihadiri oleh seluruh anggota tim dan ditemani oleh asisten dosen. Hal-hal yang dibahas pada kegiatan ini meliputi apa yang sudah dikerjakan sebelumnya, apa yang sedang dikerjakan, dan kendala yang dihadapi.

4. Fase Sprint Review & Retrospective
Sprint review dan retrospective dilakukan untuk mengevaluasi hasil kerja sprint dan menentukan adaptasi apa yang bisa dilakukan agar sprint depan dapat berjalan dengan lebih baik. Sprint review dihadiri oleh seluruh anggota tim, asisten dosen, dan dosen. Beberapa hal yang dilakukan pada sprint review dan retrospective antara lain presentasi dan demonstrasi produk serta validasi sprint goals. Adapun produk yang direview hanya produk yang sudah berada pada branch staging. Selanjutnya, masing-masing anggota tim juga menyampaikan pendapatnya terkait hal-hal yang disukai, yang dipelajari, yang dapat diperbaiki, dan perencanaan untuk implementasi peningkatan cara kerja tim scrum.

Scrum vs Agile

Scrum merupakan implementasi spesifik dari metode Agile yang dibuat berdasarkan 12 prinsip Agile. Scrum berfokus pada kolaborasi dalam tim untuk menghasilkan software yang bekerja dalam waktu yang singkat dan dilakukan secara iteratif. Scrum sering digunakan pada proyek yang cukup kompleks karena pendekatannya yang terstruktur dan fleksibel terhadap perubahan requirements.

Kritik Terhadap Scrum

Penjelasan scrum sebelumnya masih hanya memberikan sisi positif dari teknik Scrum. Di sisi lain, terdapat banyak kritik terhadap scrum, antara lain:

  • Menggunakan metrik yang kurang tepat. Scrum sering menggunakan burndown chart dan planning poker sebagai metriknya. Kedua hal tersebut hanya mengestimasi durasi sebuah task, bukan kemampuan untuk menghasilkan software yang memenuhi requirements klien dan berkualitas (mudah dimodifikasi, tidak ada bugs, dan tidak ada code smell). Padahal kemampuan itu juga harus diukur dan sayangnya, sangat banyak tim developers menghabiskan banyak waktu hanya untuk mengestimasi lamanya durasi mereka bekerja.
  • Terlalu menekankan pada kecepatan. Scrum sangat menekankan adanya increment dalam waktu yang singkat. Walaupun ini juga memberi dampak positif seperti cepatnya memperoleh feedback, sering kali developers menjadi mengabaikan kualitas dari software yang dirilis.
  • Rentan burnout. Seperti pada kritik sebelumnya, karena setiap anggota tim harus bekerja dalam tekanan yang tinggi untuk menghasilkan software dalam waktu yang singkat, maka tim developers dapat mengalami burnout. Selain itu, task juga tidak dibagi secara jelas di awal (task diambil masing-masing) sehingga beberapa anggota tim mungkin perlu mengerjakan/mengambil lebih banyak task agar pengembangan software tetap sesuai dengan harapan.
  • Scrum hanya bagus untuk orang yang tidak ngoding. Scrum cocok untuk manager’s schedule, tetapi tidak cocok untuk maker’s schedule. Sebagai developers, sebuah meeting dapat mengganggu fokus mereka ketika sedang menulis kode. Misal dari yang seharusnya bisa menulis kode selama seharian menjadi harus terpecah menjadi beberapa bagian terpisah karena adanya meeting. Meeting sendiri memang tetap perlu diadakan dalam setiap pengembangan software, tetapi Scrum menjadwalkan terlalu banyak meeting seperti daily standup, sprint planning, sprint review, sprint retro, backlog grooming, demo produk, company meeting, technical meeting, dan mungkin banyak meeting lainnya.
  • Scrum membuat Anda kecanduan meeting, tetapi kemudian menghancurkan produktivitas Anda. Seringkali dalam suatu perbincangan antar developer mengeluhkan bahwa sepertinya mereka tidak dapat menyelesaikan target sprint tersebut tepat waktu. Usulan yang diberikan untuk menyelesaikan masalah tersebut adalah dengan menambah meeting untuk memeriksa pace setiap developers. Padahal 1 meeting setiap hari saja sudah cukup. Dengan menambah meeting, waktu untuk menulis kode menjadi berkurang dan justru mengakibatkan turunnya produktivitas.

Metode Agile Lain

Selain scrum, terdapat beberapa metode pengembangan lain yang dapat digunakan untuk mengembangkan software, yaitu:

  • Extreme Programming (XP): Metode ini menekankan kualitas software dengan mengurangi biaya dan waktu pengembangan. Metode ini juga menekankan kolaborasi yang erat dengan klien. Salah satu hal yang paling terlihat dari metode ini adalah pair programming dimana developers bekerja berpasangan (1 menulis kode dan 1 mengamatinya untuk memberi umpan balik)
  • Feature-Driven Development (FDD): Metode ini membangun suatu software secara bertahap dengan pendekatan feature-driven. Terdapat 5 urutan yang perlu diikuti dalam FDD, yaitu:
    1. Mengembangkan model keseluruhan
    2. Membuat daftar fitur
    3. Merencanakan berdasarkan fitur
    4. Mendesain fitur
    5. Membangun berdasarkan fitur
  • Crystal: Crystal merupakan metode yang menekankan kolaborasi tim, komunikasi, kesederhanaan, dan kesederhanaan. Jumlah tim dalam crystal juga bersifat fleksibel sesuai dengan kebutuhan. Terdapat beberapa versi metode crystal, yaitu:
    1. Crystal Clear: Project dikerjakan oleh 1–6 orang dan biasanya untuk jangka pendek
    2. Crystal Yellow: Project dikerjakan oleh 7–20 orang dan memiliki proses yang lebih formal dari Crystal Clear seperti automated testing.
    3. Crystal Orange: Project dikerjakan hingga maksimal 40 orang dan biasanya untuk proyek yang kompleks. Versi ini mengutamakan pengembangan yang iteratif dan mementingkan umpan balik dari pengguna.
    4. Crystal Red: Proyek dikerjakan oleh 41–80 orang dan biasanya dibagi lagi menjadi tim-tim yang lebih kecil sesuai kebutuhan.
    5. Crystal Maroon: Proyek dikerjakan oleh 81–200 orang dan sesuai jumlah orangnya, versi ini cocok untuk proyek berskala besar.

Kesimpulan

Scrum merupakan salah satu metode Agile yang banyak diterapkan di dunia kerja. Ketika ingin mengembangkan suatu software, kita dapat memulai dengan memikirkan pendekatan mana yang terbaik untuk proyek yang ingin kita kembangkan. Akan tetapi, pendekatan yang dipilih bukanlah antara Agile atau Scrum karena Scrum merupakan bagian dari metode Agile. Pendekatan yang dipilih jika kita memilih menggunakan metode Agile adalah metode Agile mana yang harus saya terapkan untuk proyek tersebut. Apakah Scrum atau metode Agile lainnya? Perlu dicatat juga bahwa kunci kesuksesan dari suatu proyek tidak hanya bergantung pada metodologi yang dipilih, tetapi juga bagaimana kita mengeksekusi metodologi tersebut. Setiap anggota tim harus memahami metode yang dipilih dan PO harus dapat memimpin, berpikir kritis, dan berkomunikasi secara efektif dalam menyelesaikan suatu masalah.

--

--