Mengenal Agile
Selama perkuliahan PPL berjalan, kami para peserta mata kuliah PPL dituntut untuk bekerja secara kelompok dalam mengembangkan sebuah produk yang bermutu dan memiliki manfaat bagi pengguna. Dengan latar belakang, kemampuan dan kecepatan belajar, kemampuan programming, dan lain hal, setiap anggota dari sebuah kelompok akan saling bekerja sama dalam mencapai tujuan tersebut. Dalam mengembangkan produk, setiap kelompok akan menerapkan prinsip Agile yang akan kita bahas.
Apa itu Agile?
Secara harfiah, Agile berarti: lincah, cerdas, cekatan, tangkas. Berikut adalah pengertian dari Agile mengutip dari agilealliance.org:
Agile is the ability to create and respond to change. It is a way of dealing with, and ultimately succeeding in, an uncertain and turbulent environment.
Pada Software Engineering, Agile merupakan sebuah metode pengembangan perangkat lunak yang dilakukan secara incremental. Mengutip dari sekawan.co.id, Agile memiliki tujuan sebagai berikut:
- High — value & working App System
Agile bertujuan untuk menghasilkan sebuah aplikasi yang bekerja dengan baik dan memiliki nilai yang tinggi. - Iterative, Incremental, Evolutionary
Agile adalah model pengembangan yang dilakukan secara iteratif, berulang, dan dapat mengalami perubahan seiring waktu apabila diperlukan. - Cost Control & value — driven development
Disesuaikan dengan kebutuhan user, serta biaya dan waktu dapat dikontrol oleh para pengembang sesuai kebutuhan. - High — quality production
Produk memiliki kualitas tinggi dengan cost yang optimal. - Flexible & Risk Management
Pertemuan dengan client dapat dilakukan kapanpun sehingga fungsionalitasnya terjaga, dan meminimalisir kesalahan pada produk. - Collaboration
Perlunya koordinasi dan komunikasi yang baik antar pengembang dalam rangka mendiskusikan feedback dari client. - Self — organizing, Self — Managing Teams
Pengembang diharapkan dapat mengatur sendiri urusan pengembangan perangkat lunak.
Sesuai dengan tujuannya, banyak perubahan seiring waktu merupakan hal yang lumrah sehingga para pengembang diharapkan mampu beradaptasi dengan perubahan.
Dalam penerapan Agile, terdapat aturan atau prinsip dalam mengembangkan perangkat lunak. Aturan atau prinsip tersebut adalah Agile Manifesto dan Agile Principle. Agile Manifesto berguna untuk membantu tim sehingga tidak terjadi kekacauan dalam pengerjaan dan mempermudah pekerjaan. Berikut adalah isi dari Manifesto tersebut:
- Individuals and Interactions Over Processes and Tools
Poin ini menyatakan bahwa interaksi individu dalam proses pengembangan lebih penting daripada tools yang dipakai. Artinya para pengembanglah yang menjadi pengendali pengembangan produk, bukan tools yang dipakai dalam mengembangkan produk - Working Software Over Comprehensive Documentation
Tujuan utama mengembangkan suatu aplikasi adalah aplikasi itu sendiri, kemudian client juga lebih mudah memahami aplikasi yang benar-benar bisa dijalankan ketimbang membaca dokumentasi ( Anekdot: 6 Hours Of Debugging Can Save You 5 Minutes Of Reading Documentation). Akan lebih cepat apabila fokus untuk membuat aplikasi yang jadi sehingga client dapat mencobakan tanpa harus meraba-raba dengan membaca dokumentasi. - Customer Collaboration Ove Contract Negotiation
Berkomunikasilah dengan client untuk memikirkan solusi terbaik apabila ada kondisi yang menyebabkan produk tidak sesuai dengan kontrak awal. Hal ini dapat membantu kelangsungan dari proyek pengembangan aplikasi daripada harus buntu dengan kontrak awal. - Responding to Change Over Following a Plan
Sesuai dengan definisi Agile, selalu siap dengan perubahan mendadak dan tidak terpaku dengan rencana yang sudah dirancang.
Kemudian berikut adalah isi dari 12 Agile Principle yang telah disepakati bersumber dari Agile Manifesto:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Terdapat beberapa jenis metode dalam penerapan Agile, namun pada mata kuliah PPL kami difokuskan hanya pada satu metode saja, yaitu Scrum yang akan dibahas selanjutnya.
Mengenal Scrum
Seperti yang telah dijelaskan sebelumnya, Scrum merupakan metode dari Agile untuk mengembangkan suatu produk. Dalam pengerjaannya, Scrum terbagi menjadi beberapa proses yang lebih kecil yang disebut dengan Sprint.
Pada satu sprint, setiap pengembang akan berfokus pada satu fitur saja, misalnya mengembangkan fitur untuk menampilkan data dalam bentuk tabel dan chart. Dalam Scrum, satu tim akan memiliki tiga role, yaitu:
- Product Owner
Product Owner bertugas untuk memaksimalkan nilai bisnis dari produk dan memastikan fitur-fitur sudah berjalan sebagaimana mestinya. Product Owner juga memiliki hak untuk menerima dan menolak suatu fitur saat sprint berakhir. - Scrum Master
Scrum Master bertugas untuk memfasilitasi dan memastikan bahwa timnya sudah paham dengan proses Scrum. Kemudian Scrum Master juga berkoordinasi dengan Product Owner dalam memaksimalkan nilai dari produk. - Development Team
Development Team merupakan sekumpulan orang yang memiliki skill tertentu dalam pengembangan produk, seperti front-end developer, back-end developer, fullstack developer, DevOps engineer, Data Scientist, UI designer, dan semacamnya.
Tahapan Tahapan Scrum
Terdapat fase dalam proses Scrum yang akan terus diulang hingga menghasilkan produk yang baik dan bermanfaat bagi client, yaitu:
Fase Inisiasi
Fase ini adalah fase untuk menyiapkan segala hal yang berguna dalam proses pengembangan produk, seperti membuat High-Fidelity Prototype, menyiapkan CI/CD, menyiapkan repository GIT, dan lain hal yang diperlukan oleh tim.
Sprint Planning
Pada fase ini Scrum Master akan merencanakan Product Backlog Item (PBI) dan menassignnya ke setiap anggota tim. Dan pada fase ini Product Owner menentukan Goal dari Sprint.
Fase Sprint (Implementasi)
Pada fase ini setiap anggota tim akan mengerjakan implementasi sesuai dengan PBI yang didapat pada Sprint Planning.
Fase Sprint Review
Pada fase ini tim akan menilai produk yang dihasilkan pada akhir satu sprint. Pada fase inilah Product Owner dapat menolak atau menerima suatu PBI yang telah dikerjakan oleh tim.
Fase Spring Retrospective
Pada fase ini setiap anggota akan menyampaikan hal yang telah baik dari tim, hal yang masih kurang dari tim, dan segala hal yang berhubungan dengan tim selama jalannya sprint.
Fase-fase di atas akan selalu diulangi secara berurutan hingga tim menghasilkan produk yang bernilai bagi client. Satu project dapat memiliki beberapa kali sprint yang setiap sprintnya akan terdapat peningkatan kualitas pengembangan produk.
Penutup
Sekian hal yang dapat saya sampaikan mengenai Agile dan Scrum pada artikel ini, semoga bermanfaat~
Referensi
- https://www.niagahoster.co.id/blog/agile-adalah/
- http://www.scrum.co.id/what-is-scrum
- https://www.scrum.org/resources/what-is-a-daily-scrum
- https://ari-angga.medium.com/mengenal-agile-development-methods-e7dbe097efce
- https://timothy-regana.medium.com/ah-gile-3d457d5d2a1a
- https://medium.com/easyread/framework-scrum-d3a11ae1629d
- https://www.dewaweb.com/blog/scrum-methodology-panduan-project-management/
- https://jonathanchristopher1199.medium.com/what-you-should-know-about-git-a7b50de254ff
- https://rendyayuschak.medium.com/scrum-dan-praktiknya-dalam-dunia-nyata-9a941f58e258
- https://medium.com/@machffud/bagaimana-prinsip-agile-diterapkan-dalam-project-kami-340de61e8cb7
- https://www.sekawanmedia.co.id/blog/metode-agile-development/#:~:text=Tujuan%20Agile%20Development,-Berikut%20ini%20merupakan&text=Tujuan%20yang%20pertama%2C%20untuk%20menghasilkan,produk%20dengan%20kualitas%20yang%20baik.