Ingin Pengembangan Software secara Cepat, Adaptif, dan Efisien? Agile Development jawabannya.

Badr Interactive
- 21 November 2019

              Apakah Anda ingin memulai proses development yang cepat dan mudah beradaptasi dengan perubahan?

              Apakah Anda mendambakan software yang berkualitas dan dapat menyesuaikan kebutuhan pengguna?

              Apakah Anda ingin setiap biaya yang Anda keluarkan dalam pengembangan software lebih efisien?


              ---


              Tiga pertanyaan tersebut kerap kali menjadi sorotan bagi siapapun yang ingin mengembangkan perangkat lunak (software development). Pernahkah Anda mendengar konsep Agile?

              Kata Agile berarti bersifat cepat, ringan, bebas bergerak, atau waspada. Terminologi ini digunakan untuk menggambarkan konsep model proses yang berbeda dari konsep model-model proses yang sudah ada.

              Dewasa ini, seringkali kita mengalami kesulitan pada saat memprediksi bagaimana sebaiknya bentuk sebuah software atau aplikasi yang diperlukan agar sesuai kebutuhan saat ini dan juga kebutuhan di masa mendatang. Masalah ini sangat krusial karenal kondisi market yang sangat cepat berubah, kebutuhan pengguna yang juga dinamis, belum lagi persaingan dengan kompetitor baru yang terus bertumbuh setiap saat. 

              Tidak mudah mendefiniskan keseluruhan requirements sebelum proyek development berjalan. Banyak sekali faktor yang harus dipertimbangkan agar requirement sebuah software dapat dianalisis dengan tepat, mulai dari masalah bisnis yang harus sudah tervalidasi, proses bisnis yang sudah teruji dengan semua study case yang mungkin terjadi dilapangan, spesifikasi teknologi, infrastruktur, hingga pemahaman pengguna tentang teknologi. Semua hal tersebut harus ada agar requirement gathering software yang ingin dikembangkan dapat terprediksi dengan baik

              Andaikan semua hal diatas dapat terpenuhi, ada satu syarat lagi yang harus bisa dijamin yaitu: stabilitas requirement dalam jangka waktu yang relatif lama at least selama proses development software tersebut berlangsung. Katakanlah, ketika sudah melakukan requirement gathering diawal dan proses development diprediksi akan dikerjakan selama 4 bulan. Waktu 4 bulan ini adalah asumsi bahwa seluruh fitur telah terdefinisikan dengan baik saat requirement gathering dan tidak ada perubahan yang sifatnya mayor.  Jika terdapat perubahan requirement ditengah masa development maka tentu akan menambah budget dan waktu lagi.

              Namun pertanyaannya, mungkinkah kondisi ideal tersebut terjadi ditengah perubahan kebutuhan market, business flow, teknologi yang terus update, dan berbagai faktor lain yang sifatnya masih uncertain?

               

              Gambar 1. Software Development, Isu yang Complicated - Complex


              Jawabannya, mungkin saja. Namun kemungkinan untuk mencapai stabilitas requirement dengan perubahan yang minim dalam proses development sangatlah kecil. Sehingga memang pengembangan software menjadi proses pekerjaan yang cukup kompleks. Ole karena itu diperlukan sebuah metode pengembangan software yang mampu merespon isu ketidakstabilan atau ketidakjelasan requirement dalam sebuah bisnis. Metode tersebut adalah Agile Software Development.

              Konsep Agile Software Development dicetuskan oleh Kent Beck dan 16 rekannya yang mengatakan bahwa Agile Software Development adalah sekelompok aktivitas pengembangan software secara iteratif yang menekankan pada aktifitas konstruksi (desain dan coding). Metode ini mengeliminasi sebagian besar waktu untuk melakukan perencanaan sistem dan berusaha sebisa mungkin mematuhi jadwal delivery sistem yang telah dijanjikan. Requirement yang dibutuhkan secara langsung di-drive oleh klien itu sendiri, dan apabila terjadi perubahan terhadap requirement tersebut, developer dituntut mampu beradaptasi dengan perubahan yang terjadi.

              Agar permasalahan kompleks dalam software development dapat dilakukan, Agile Development memiliki empat nilai yang harus dijunjung tinggi oleh seluruh stakeholder. Prinsip ini biasa disebut dengan Agile Alliance Manifesto, diantaranya:

              1. Interaksi dan personil lebih penting daripada proses dan alat. Dalam agile, interaksi antara anggota tim sangatlah penting, karena tanpa adanya interaksi yang baik maka proses pembuatan software tidak akan berjalan sesuai rencana.

              2. Software yang berfungsi lebih penting daripada dokumentasi yang lengkap. Saat melakukan proses demonstrasi kepada klien, software yang berfungsi dengan baik akan lebih berguna daripada dokumentasi yang lengkap

              3. Kolaborasi dengan klien lebih penting daripada negosiasi kontrak. Salah satu ciri agile adalah klien menjadi bagian dari tim pengembangan software. Kolaborasi yang baik dengan klien saat proses pembuatan software sangatlah penting ketika menggunakan konsep agile karena fungsi-fungsi dari software yang dikembangkan harus secara terus menerus dibicarakan dan diimprovisasi sesuai dengan kebutuhan dan keinginan klien.

              4. Respon terhadap perubahan lebih penting daripada mengikuti rencana. Agile development berfokus terhadap kecepatan respon tim ketika klien menginginkan perubahan saat proses pembuatan software. Permintaan perubahan bisa datang dari klien atau dari pihak developer sendiri. Selain itu, teknologi akan semakin berkembang sehingga perubahan pun dapat terus terjadi. Project plan juga penting, namun dalam Agile development, tim harus mampu beradaptasi dengan cepat ketika terjadi perubahan.


              Seringkali banyak orang yang mengaku sudah menggunakan prinsip agile, menerapkan aktifitas agile development seperti scrum, sprinting, planning meeting, daily standup, dan lain sebagainya. Namun  mereka tidak menerapkan salah satu bahkan keempat dari prinsip ini. Maka proses development-nya baru bisa dikatakan agile secara "simbolik", namun "spirit" agile-nya sama sekali tidak berjalan.

              Kelebihan dan Kekurangan Agile Development dibandingkan Metode Konvensional

              Agile adalah sebuah framework dan working-mindset yang memungkinkan untuk merespon sebuah perubahan. Agile fokus untuk menghasilkan nilai yang paling optimal ditengah prioritas bisnis pada saat itu dengan waktu dan budget yang tersedia.


              Gambar 2: Traditional VS Agile Project Management



              Pengembangan software yang dilakukan dengan metode agile development memiliki ciri-ciri sebagai berikut:

              1.  Suatu proyek lebih cepat rilis

              2. Perubahan requirement dapat dilakukan sewaktu-waktu

              3. Interaksi yang intens antara client  dengan developer dalam menentukan langkah proyek berikutnya

              4. Proyek dibangun antar tim

              5. Tim mengorganisasikan dirinya sendiri

              6. Tim bekerja dalam kecepatan yang bisa dipertahankan

              7. Tim dapat me-review tingkat keberhasilan dan kegagalan mereka

              8. Desain dan implementasi disusun sesederhana mungkin


              Mengutip sebuah penelitian, kelebihan dan kekurangan agile adalah sebagai berikut:

              Kelebihan:

              • 82% menambah produktifitas tim

              • 77% menambah kualitas software

              • 78% menambah kepuasan klien

              • 37% menghemat biaya

              Kekurangan:

              • Agile tidak akan bejalan dengan baik jika komitmen tim kurang

              • Tidak cocok dalam skala tim yang besar (>20 orang)

              • Perkiraan waktu release dan harga software sulit ditentukan


              Demikian sekilas tentang agile development, semoga dapat menambah wawasan mengenai skema agile dalam proses development. Tertarik untuk memahami konsep agile terutama based on pengalaman yang selama ini Badr Interactive lakukan bersama dengan partner kami selama ini? Silahkan tunggu tulisan kami berikutnya.



              Referensi:

              https://www.apm.org.uk/resources/find-a-resource/agile-project-management/

              https://id.wikipedia.org/wiki/Agile_Development_Methods