Baru-baru ini saya melakukan percakapan dengan sesama pengembang tentang Pengembangan Perangkat Lunak Agile. Sementara saya memahami prinsipnya, tampaknya persyaratan yang terus berubah menciptakan potensi bagi proyek untuk berlangsung selamanya. Tapi, setidaknya di tempat saya bekerja, proyek harus mencapai penyelesaian karena itu adalah kontrak.
Artinya, iterasi pertama bisa memakan waktu berbulan-bulan, karena untuk beberapa proyek pelanggan tidak dapat menggunakan aplikasi yang tidak lengkap. Untuk beberapa proyek, saya pikir Anda perlu mendefinisikan selesai terlebih dahulu, maka Anda dapat memecahnya menjadi iterasi dan memperbaiki definisi Anda setelah setiap iterasi. Tetapi Anda harus selalu memiliki definisi ini.
Jika Pengembangan Perangkat Lunak Agile mencakup perubahan persyaratan, bagaimana Anda tahu di mana itu berakhir? Bagaimana Anda bisa menganggarkan untuk sebuah proyek ketika hasil akhirnya selalu berubah?
Apakah Pengembangan Perangkat Lunak Agile lebih tentang proses gesit, daripada produk gesit?
Jawaban:
Dari Komentar OP, sepertinya dia menyukai saya bekerja untuk sebuah toko Konsultasi, di mana kami menyediakan layanan pengembangan untuk klien kami ... Saya pikir karena pada kerangka pikir inilah yang menyebabkan kebingungannya ... Jadi saya akan nyatakan fakta yang sudah diketahui tetapi tidak pernah dinyatakan.
Agile tidak kompatibel dengan pengembangan perangkat lunak yang ditentukan oleh kontrak.
Banyak toko konsultan mengklaim Agile, mereka berbohong. Mereka hanya mengatakan itu karena Agile telah memperoleh status kata Buzz.
Agile bekerja paling baik untuk pengembangan internal di mana programmer penuh waktu, dan ada sedikit pembicaraan tentang anggaran. Hanya Time Frame dan Fitur.
sumber
Jika Anda berfokus untuk melakukan (apa yang Anda yakini) hal yang paling penting terlebih dahulu, maka proyek akan selesai ketika:
sumber
Anda berhenti ketika bisnis memutuskan mereka tidak ingin melakukan iterasi lagi. Anda akan berharap bahwa ini adalah setelah sejumlah besar nilai telah dikirimkan tetapi sebelum Anda terlalu jauh ke ranah pengembalian yang semakin berkurang.
Itu harus selalu didorong oleh "bisnis" apa pun artinya dalam keadaan Anda. Ini bisa menjadi manajemen senior dari sebuah toko pengembangan perangkat lunak atau sponsor bisnis aktual dalam lingkungan pengembangan in-house. Mereka akan memutuskan kapan biaya iterasi berikutnya melebihi manfaat dari fitur yang akan dikirimkan pada iterasi berikutnya.
sumber
Tidak pernah, dan itulah keindahannya.
Proyek tidak pernah selesai . Anda mencapai rilis lain, tonggak sejarah lain, tetapi selama uang mengalir, selalu ada satu lagi fitur untuk ditambahkan, satu lagi untuk membuat lebih baik, satu lagi bug untuk memperbaikinya. Proyek akan mati ketika tidak lagi dibutuhkan, tetapi tidak akan pernah selesai. Berbeda dengan model Waterfall dengan persyaratan-> proyek-> produk-> akhir, ini adalah loop yang dapat berputar selamanya - selama Anda dibayar.
Bukan fitur bisnis yang sering disebutkan tentang teknologi ini, bukan?
sumber
Ada kesalahpahaman di sini: Agile tidak mendorong persyaratan proyek untuk berubah. Sebaliknya itu memungkinkan untuk perubahan tanpa menyia-nyiakan pekerjaan, atau mengorbankan bidang pembangunan yang penting.
Ada empat kendala mendasar untuk setiap proyek rekayasa; ruang lingkup, biaya, waktu dan kualitas. Waterfall berasumsi bahwa ini akan menjadi statis. Itu adalah asumsi yang salah; satu atau lebih SELALU ini berubah. Lingkup merayap, memangkas anggaran, dan "tidak diketahui tidak diketahui" lainnya SELALU mengganggu proyek, mengubah kendala. Waterfall tidak mengantisipasi ini, jadi ketika itu terjadi, proyek berubah dengan cara yang tidak diinginkan; fitur penting yang belum ditambahkan hilang, atau cepat dilakukan, atau rilis harus didorong kembali, atau biaya balon ketika PM melempar uang pada pengembang baru untuk masuk dan membantu menyelesaikan semuanya dengan benar.
Agile, sebaliknya, memungkinkan kendala untuk berubah, dan benar-benar mengharapkannya. Ini melakukan ini dengan melakukan pekerjaan dalam potongan kecil yang bisa digunakan, sesuai dengan prioritas pemilik, dan dengan demikian potongan tersebut idealnya segera berguna bagi pemilik proyek. Dengan demikian mengurangi eksposur ke yang tidak diketahui dengan tidak membuat rencana besar dalam jangka waktu di mana yang tidak diketahui besar. Jika timeline berubah, tim dapat ditambahkan, atau fitur yang kurang penting "dide-scoped", dan sistem yang telah dibangun oleh tim tidak terpengaruh.
Ini juga memberikan perkiraan yang lebih baik dari waktu dan biaya yang diperlukan untuk menghasilkan lingkup yang diberikan pada kualitas yang diperlukan. Orang-orang terkenal buruk dalam memperkirakan pekerjaan besar; dibutuhkan BANYAK pengalaman, dan BANYAK perhitungan di muka, untuk melakukannya dengan benar. Sebaliknya, orang umumnya adalah hakim yang baik atas apa yang dapat mereka lakukan dalam sehari, atau satu atau dua minggu. Itu dengan cepat menghasilkan kondisi mapan di mana Anda dapat memperkirakan waktu dan biaya pekerjaan yang tersisa untuk dilakukan berdasarkan kecepatan historis Anda, dengan akurasi yang cukup.
Sedangkan untuk menentukan titik akhir, Anda benar; proyek Agile BISA berlangsung selamanya. Namun demikian, SLDC tradisional juga; klien sering kembali dengan lebih banyak uang dan daftar keinginan pembaruan. Perbedaannya adalah bahwa tidak ada garis yang jelas antara "analisis", "desain", "pengembangan" dan "pemeliharaan" ketika melihat proyek secara keseluruhan; itu semua terjadi bata demi bata, sprint demi sprint. Jika suatu saat pemilik ingin menyebut proyek "selesai", mereka bisa, dan mereka akan memiliki jumlah total "batu bata" yang telah mereka bayar dalam "dinding" yang kokoh; itu mungkin tidak setinggi atau meluas sejauh yang mereka rencanakan, tetapi sudah ada di tempatnya, melakukan pekerjaan, dan dapat ditambahkan di kemudian hari dengan tingkat kehancuran minimum.
sumber
Itu berakhir setelah semua fitur diimplementasikan dan semua bug diperbaiki.
Jika tenggat waktu diperbaiki dan persyaratan juga ditetapkan. Maka ini tidak akan menjadi masalah. Tetapi jika tenggat waktu sudah ditetapkan, tetapi persyaratannya berubah, maka ada sesuatu yang harus Anda lakukan untuk melanjutkan proyek dengan sukses.
Harga tetap bagian 1, apa yang buruk?
Harga tetap bagian 2, Perbaiki dengan gesit!
sumber
Asumsi besar di balik pengembangan tangkas adalah bahwa persyaratan selalu berubah, apa pun metodologi yang Anda gunakan. Sekarang, tentu saja Anda dapat membuat dokumen persyaratan, membuat rencana untuk melaksanakannya, dan mengirimkannya pada akhirnya, dan sepertinya persyaratan Anda tidak berubah. Mereka mungkin tidak berubah dalam rencana Anda, tetapi dengan perubahan pasar dan pemahaman Anda dan pelanggan yang lebih baik tentang produk, persyaratan dalam hal apa yang diinginkan pelanggan akan berubah. Agile masuk dan menyarankan suatu proses yang tidak menyembunyikan perubahan-perubahan ini melalui jadwal tetap, tetapi malah membangun menanggapi perubahan yang tak terhindarkan ke dalam proses.
Ketika Anda selesai sekarang bergeser dari menyelesaikan jadwal tetap ke saat produk Anda berada di tempat di mana Anda dapat memberikan nilai bisnis yang cukup di mana pelanggan Anda dapat mengirim dan memasarkan perangkat lunak dalam keadaan saat ini. Sedang dikerjakan lebih terikat pada seberapa banyak nilai yang Anda berikan daripada bagaimana Anda mematuhi suatu jadwal.
sumber