Pentingkah Agile Software Development
Pernahkah kalian memiliki suatu masalah, dimana solusi dari masalah tersebut tidak berjalan sesuai rencana yang kita rancang bersama atau sendiri secara rinci, sehingga sulit untuk mencari jalan keluar karena hal yang kita perkirakan ternyata tidak dapat dilakukan, lalu apa yang harus kita lakukan ? menyusun rencana dari awal.
Pada pembahasan ini membantu untuk mensolve masalah tersebut include dalam pengembangan suatu aplikasi yang bersama-sama. Metode tersebut ialah Agile Software Development.
What is Agile ?
Dari pengantar diatas sebelum kita paham alur kerja dari agile kita harus tau definisi dari agile sendiri. Agile adalah dalah sebuah pendekatan dalam pengembangan software dimana requirement dan solusi suatu fitur dapat dikembangkan secara bersamaan dengan fitur lainnya. Pendekatan ini merupakan suatu hal yang cukup responsif terhadap perubahan dan membutuhkan skill komunikasi antar anggota developer yang baik. Hal tersebut disebabkan karena setiap fitur sangat tergantung oleh keinginan dari customer yang dapat berubah-ubah. Dengan begitu, Agile dalam pengembangan perangkat lunak juga memiliki arti lincah demi memenuhi kebutuhan yang ada.
Agile juga memiliki manfaat yaitu mendorong pengembang untuk lebih adaptif dan menghasilkan produk secara bertahap.
Konsep Agile dipopulerkan melalui Manifesto for Agile Software Development yang berisi ajakan kepada sesama pengembang untuk menggunakan nilai-nilai agile dalam pengembangan perangkat lunak.
What is Agile Manifesto ?
Agile Manifesto merupakan nilai-nilai pengembangan software (Software Development) yang dibuat pada tahun 2001 oleh sekelompok pemimpin di industri software. Latar belakang munculnya Agile Manifesto adalah frustasinya para pengembang software terhadap metode tradisional (Waterfall) akibat prosesnya yang lama dan kebutuhan klien yang berubah-ubah. Agile Manifesto juga merupakan cikal bakal munculnya Agile Software Development.
Manifesto for Agile Software Development tersebut didasarkan pada 12 prinsip, yaitu :
- Prioritaskan Kepuasan Klien
Lebih menekankan kepuasan client sebagai prioritas utama dengan cara menghasilkan produk lebih awal secara berkelanjutan . Dalam pengembangan proyek ada seorang client yang dimana kita sebagai developer harus memenuhi keinginan client.
2. Menerima Perubahan Kebutuhan.
Selalu terbuka dalam menerima perubahan meskipun mengalami keterlambatan dalam mengembangkan piranti perangkat lunak. Perubahan tersebut akan memberikan keuntungan yang kompetitif bagi para klien. Pada poin ini kita harus siap sedia menerima pekerjaan tambahan dan merubah rencaran pengembangan jika itu perlu. Alasanya adalah demi memenuhi kepuasan klien terhadap proyek yang dikembangan. Siap terhadap perubahan kebutuhan. Proses Agile memanfaatkan perubahan untuk keuntungan klien.
3. Rilis produk secara rutin
Tujuan dari tahap ini adalah dapat menghasilkan software yang bisa bekerja dengan baik, mulai dari hitungan minggu maupun bulan dan memiliki preferensi dalam jangka waktu lebih pendek. Pada proyek yang kita kembangkan, untuk mendapatkan feedback dari klien, developer mengirim produk secara berkala untuk klien. Semakin pendek jangka waktu kita mengirimkan perubahan proyeknya, akan semakin baik. Rilis produk secara rutin juga meningkatkan kepercayaan klien pada tim developer.
4. Kolaborasi
Rekanan bisnis dan developer harus bekerjasama selama proyek IT sedang berlangsung.Seorang klien harus diikutsertakan menjadi bagian dari tim proyek karena produk yang dikembangkan dalam proyek juga untuk memantau dan ekspetasi client bisa terealisasikan dengan baik.
5. Bekerja dengan individu yang bersemangat
Mengembangkan proyek pada orang-orang yang termotivasi. Adanya lingkungan yang mendukung akan membuat mereka untuk segera menyelesaikan pekerjaannya dengan baik. Lingkungan pengembang proyek memiliki suasana yang motivatif. Berikan mereka lingkungan dan dukungan yang dibutuhkan, dan percayai mereka untuk dapat menyelesaikan pekerjaan dengan baik.
6. Komunikasi tatap muka
Komunikasi secara langsung adalah metode yang efektif dan efisien untuk menyampaikan informasi dan mengembangkan software. Kelebihan dari komunikasi tatap muka secara langsung adalah bahasa tubuh yang dimana membantu seseorang memahami apa maksud dari pembicaraan tersebut.
7. Kunci Keberhasilan adalah Produk yang Bekerja
Software yang bekerja dengan baik adalah ukuran utama sebuah kemajuan proyek IT. Yang terpenting adalah bagaimanapun cara setiap anggota ngoding, produk tetap bekerja dengan optimal.
8. Kecepatan yang konstan
Proses Agile mendukung pengembangan yang berkelanjutan dengan kecepatan pengembangan yang konsisten. Pada poin nomor 3 juga memicu tim developer untuk mengembangkan proyek secara konstan, sehingga kecepatan pengembangnya pun konstan. Kecepatan yang konstan akan mengurangi resiko ke tidak telitian, karena pekerjaan yang konstan akan memperhatikan setiap detail akan apa yang dikerjakan.
9. Perhatian terhadap keunggulan teknis dan desain yang baik
Keunggulan teknis menjadi hal yang patut diperhatikan untuk meningkatkan sebuah agility. Menjadi tugas bagi tim developer untuk belajar dan mengikuti pekermbangan teknologi, untuk hasil produk yang maksimal.
10. Kesederhanaan itu penting
Kesederhanaan (memaksimalkan jumlah pekerjaan yang belum dilakukan) adalah hal yang sangat penting. Sesuatu hal yang perfeksionis bisa menimbulkan kontra, namun terkadang ada baiknya pada klien. Terkadang ekspektasi yang tinggi untuk klien tidak baik, tidak perlu menambahkan fitur-fitur lain diluar hasil diskusi dengan klien. Hal yang paling penting dalam Agile Development yakni memaksimalkan sumber daya yang ada
11. Mengelola Diri Sendiri
Segala kebutuhan dan desain software terbaik muncul dari tim yang mampu mengorganisir diri sendiri.
12. Refleksi dan Penyesuaian
Tim pengembang secara berkala akan melakukan refleksi mengenai bagaimana cara bekerja yang lebih efektif dan menyeleraskannya dengan pola kerja mereka.
Terdapat 4 nilai utama Agile Manifesto yaitu :
- Individuals and interactions over processes and tools
Individu dan interaksi lebih diutamakan dibandingkan proses dan alat-alatnya, karena yang memberikan respon terhadap kebutuhan klien adalah individu, bukannya proses, sehingga individu lah yang dominan dalam pengembangan software ini.
Beberapa masalah yang sering terjadi dalam pengembangan suatu aplikasi yaitu melempar tanggung jawab dan saling menyalahkan satu sama lain, dan kurangnya kolaborasi dalam satu tim. Masalah ini dapat diatasi jika adanya interaksi antar anggota yang baik.
2. Working software over comprehensive documentation
Pada Agile lebih mengutamakan working product terselesaikan dengan cepat dan memberikan kepada klien sehingga kita bisa mendapatkan feedback lebih cepat, yang dapat digunakan untuk membuat produk menjadi lebih baik lagi. Dokumentasi requirement diwujudkan sebagai user stories, dan itu sudah cukup untuk developer untuk melakukan implementasi fungsi yang diinginkan.
3. Customer collaboration over contract negotiation
Kolaborasi klien didalam iterasi pengembangan software akan menjadikan proses development menjadi lebih efektif. Hal ini pun akan menguntungkan kedua belah pihak, baik developer ataupun klien. Developer diuntungkan karena dapat mengetahui spesifikasi produk dengan lebih jelas dan mengeliminasi fitur yang tidak diinginkan. Klien juga diuntungkan karena produk yang jadi nantinya akan sesuai dengan kebutuhan dan keinginannya.
4. Responding to change over following a plan
Requirement yang sering berubah seiring berjalannya pengembangan dapat diatasi dengan Agile. Iterasi dalam Agile cenderung pendek dan fitur baru dapat ditambahkan pada iterasi berikutnya jika diperlukan. Fleksibilitas dalam pengerjaan project dapat meningkatkan kualitas produk dan produk juga akan lebih sesuai dengan kebutuhan klien. Metodologi Agile ini akan membuat produk sedekat dengan apa yang dibutuhkan oleh klien.
Implementasi Agile dalam pengembangan Proyek PPL : Scrum
Dalam pengembangan proyek PPL kami, Tim kami menggunakan framework Scrum dalam pengembangan perangkat lunak kami. Scrum merupakan salah satu metode agile yang banyak sekali digunakan.. Definisi dari Scrum sendiri adalah sebuah kerangka kerja di mana orang-orang dapat menyelesaikan permasalahan kompleks yang senantiasa berubah, di mana pada saat bersamaan menghasilkan produk dengan nilai setinggi mungkin secara kreatif dan produktif. Scrum sendiri bersifat ringan, mudah dipahami, sulit dikuasai. Pada Scrum, terdapat 3 role diantara lain :
Role :
- Product Owner : Product owner adalah orang yang seharusnya paling memahami pekerjaan tim scrum dan pengaruh pekerjaan-pekerjaan yang dilakukan pada keberlangsungan bisnis perusahaan. Product owner juga berperan sebagai perantara antara stakeholder dan tim scrum.
- Scrum Master : sebagai fasilitator dalam tim. Scrum master tidak berperan sebagai pembagi tugas kepada anggota tim yang lain. Namun, scrum master akan berperan sebagai pihak yang memastikan keberlangsungan kerangka kerja scrum. Scrum master akan membantu tim memahami teori dan implementasi dari kerangka kerja scrum. Peran ini juga bertugas untuk memastikan bahwa setiap kegiatan yang berlangsung dalam tim sudah sesuai dengan kerja scrum yang seharusnya.
- Development Team : Implementasi kerangka kerja scrum yang lebih detail menjadi tugas para development atau scrum team. Biasanya ada berbagai pekerjaan dalam development team. Mulai UI.UX Designer hingga Software Tester. Development team inilah yang akan melakukan eksekusi.
Tahapan Scrum :
- Product Backlog : Product Backlog adalah antrian fleksibel pekerjaan-pekerjaan, yang diminta pihak bisnis untuk dikerjakan pihak eksekutor di masa depan. Dalam proyek kita membaginya dengan Sprint Planning. Disini Product Owner berperan sebagai menentukan product backlog apa saja yang perlu dikerjakan. Hasil dari acara perencanaan sprint adalah untuk mendapatkan tujuan sprint dan sprint backlog yang disetujui semua orang adalah realistis dan dapat dicapai.
2. Sprint Planning : Planning biasanya dilakukan oleh PO, SM hingga Dev Team. Kegiatan ini bertujuan untuk menentukan apa yang akan dikerjakan selama satu sprint. Pada kegiatan ini dilakukan pemilihan PBI menjadi Sprint Backlog. Sprint Backlog kemudian dipecah menjadi beberapa task. Task ini akan ditugaskan kepada salah satu anggota tim.
3. Sprint Running: Proses dari developer untuk mengimplementasikan aplikasi sesuai dengan yang telah direncanakan pada Sprint Planning. Progress dari tahapan ini akan dipantau pada daily scrum meeting.
Daily Scrum Meeting : Waktu bagi developer untuk check-in, menilai kemajuan pencapaian Sprint Goal dan meninjau serta merencanakan aktivitas mereka untuk 24 jam ke depan. Dilakukan minimal 2 kali/minggu (4 kali dalam 1 sprint, termasuk dengan Sprint Planning dan Sprint Review / Retrospective). Biasanya hal yang biasa ditanya adalah :
- What did you do since last scrum meeting?
- Do you have any obstacle?
- What will do you do before next meeting?
4. Sprint review: Kegiatan ini berupa penilaian implementasi PBI yang telah dilakukan oleh tim. Development team mempresentasikan hasil sprint kepada Product Owner, kemudian Product Owner akan memutuskan apakah hasil sprint tersebut diterima atau ditolak.
5. Sprint retrospective: Kegiatan ini bertujuan untuk mengetahui hal-hal baik dan buruk selama satu sprint. Hal ini kami lakukan dengan menuliskan atau mengemukaan pendapat masing-masing anggota tim. Kemudian, kami bersama-sama menyusun eksperimen perbaikan untuk meningkatkan kinerja pada sprint selanjutnya.
Reference :
Manifesto Pengembangan Perangkat Lunak Agile. Agile Manifesto. Web. 20 Maret 2019. https://agilemanifesto.org/iso/id/manifesto.html