Mengapa pasukan Agile membina dalam langkah pendek yang berulang (iteratif) dan bukan dalam satu perjalanan panjang merancang, membina dan menguji (waterfall), serta mengapa cara itulah yang membolehkan pasukan terus bekerja bertahun-tahun tanpa keletihan melampau. Kira-kira 10 minit untuk dibaca.
Bayangkan anda mahu membuka sebuah kafe. Satu cara: habiskan setahun mereka bentuk kafe yang sempurna, bina semuanya, kemudian buka pintu dan berharap orang suka. Cara lain: mula dengan sebuah gerai kopi beroda, lihat apa yang orang benar-benar pesan, kemudian tambah tempat duduk, kemudian makanan, dan terus menyesuaikan. Kedua-duanya akhirnya menjadi kafe. Hanya satu yang memberitahu anda dari awal sama ada orang mahukan kopi anda.
| Waterfall | Iteratif | |
|---|---|---|
| Cara kerja disusun | Mengikut fasa: semua perancangan, kemudian semua pembinaan, kemudian semua ujian | Dalam kitaran pendek: setiap kitaran merancang, membina dan menguji satu bahagian kecil |
| Kali pertama pengguna melihat ia berfungsi | Pada penghujungnya, selalunya selepas berbulan-bulan | Selepas kitaran pertama, biasanya dalam beberapa minggu |
| Bila kita tahu kita tersilap | Lewat, apabila kebanyakan wang sudah dibelanjakan | Awal, selepas satu bahagian kecil |
| Kos sesuatu perubahan | Tinggi: pelan, reka bentuk dan kerja yang sudah siap terpaksa dibuang | Rendah: kita laraskan bahagian kecil yang seterusnya |
| Cara kemajuan diukur | Dokumen dan peratusan ("kami sudah 80% siap") | Produk berfungsi yang boleh dicuba orang |
| Di mana risikonya | Bertimbun pada penghujungnya | Tersebar nipis dalam setiap kitaran |
Idea utama: iteratif tidak bermaksud "tiada pelan". Ia bermaksud merancang sedikit demi sedikit dan dengan kerap, berdasarkan bukti sebenar, bukannya merancang semuanya sekali berdasarkan tekaan.
Waterfall bukan cara yang bodoh. Ia terasa selamat: pelan penuh, tarikh tetap, bajet yang jelas. Masalahnya ialah andaian yang tersembunyi di dalamnya.
Kos kesilapan meningkat mengikut saiz langkah. Ambil langkah 12 bulan, dan satu haluan yang salah boleh merugikan 12 bulan. Ambil langkah 2 minggu, dan ruginya paling banyak 2 minggu. Kita tidak dapat mengelak daripada tersilap sekali-sekala, tetapi kita boleh menjadikan kesilapan itu murah.
Jika kerja itu difahami dengan baik, sudah dibuat berkali-kali dan sukar diubah secara fizikal selepas itu (menuang asas konkrit, memenuhi piawaian undang-undang yang tetap), merancangnya secara terperinci dahulu memang wajar. Kebanyakan kerja perisian dan kerja berasaskan pengetahuan adalah sebaliknya: baharu setiap kali dan mudah diubah. Di situlah membina dalam langkah kecil membuahkan hasil.
Setiap kitaran pendek berakhir dengan satu bahagian kecil yang benar-benar berfungsi. Tabiat yang satu ini menghasilkan enam manfaat.
Pengguna sebenar memberi reaksi kepada hasil sebenar setiap dua minggu atau lebih kurang. Reaksi itulah yang membentuk langkah seterusnya, bukan laporan yang ditulis selepas pelancaran.
Perkara yang paling tidak pasti ditangani dahulu, melalui eksperimen kecil. Jika sesuatu idea tidak menjadi, kita tahu pada minggu ke-2 dan bukan pada bulan ke-10.
Bahagian paling bernilai dibina dahulu dan mula memberi pulangan ketika selebihnya masih dibuat.
Setiap langkah berakhir dengan sesuatu yang berfungsi. Jika bajet atau keutamaan berubah, semua yang telah siap kekal menjadi milik anda.
Kemajuan ialah apa yang berfungsi hari ini, bukan peratusan pada slaid. Tiada siapa terkejut pada penghujungnya.
Setiap kitaran ialah peluang untuk bekerja dengan lebih baik sedikit. Dua puluh enam penambahbaikan kecil setahun lebih baik daripada satu mesyuarat "pengajaran yang diperoleh" pada penghujung projek.
| Masalahnya | Waterfall menemuinya… | Iteratif menemuinya… |
|---|---|---|
| Kita salah faham keperluan pengguna | Semasa ujian pengguna, hampir di penghujung | Pada review pertama, dalam beberapa minggu |
| Sesuatu pendekatan teknikal tidak menjadi | Apabila semuanya dicantumkan, selepas berbulan-bulan | Dalam kitaran pertama yang menyentuhnya |
| Kerja lebih besar daripada anggaran | Apabila tarikh akhir tergelincir | Selepas satu atau dua kitaran, daripada rentak sebenar kita |
| Keutamaan berubah | Permohonan perubahan, perancangan semula, kelewatan | Kita susun semula senarai sebelum kitaran seterusnya |
Inkremental bermaksud menambah bahagian demi bahagian. Iteratif bermaksud kembali kepada sesuatu untuk memperbaikinya. Pasukan yang baik melakukan kedua-duanya: setiap langkah menambah satu bahagian nipis yang berfungsi, dan setiap langkah juga ialah peluang untuk memperhalus apa yang sudah ada.
Bayangkan seorang pelukis. Menyiapkan satu sudut kanvas dengan sempurna sebelum menyentuh bahagian lain ialah inkremental semata-mata. Melakar keseluruhan gambar secara kasar dan kemudian menambah perincian lapis demi lapis ialah iteratif. Lakaran kasar itu sudah berguna sejak hari pertama, kerana anda sudah boleh nampak sama ada komposisinya tidak kena.
Awas dengan waterfall mini: "Sprint reka bentuk", kemudian "Sprint pembinaan", kemudian "Sprint ujian" masih waterfall, cuma dipotong-potong. Setiap kitaran harus berakhir dengan sesuatu yang berfungsi dan boleh digunakan. Cara memotong kerja begitu diterangkan dalam Menghiris dan mensaiz.
Salah satu daripada dua belas prinsip di sebalik Agile Manifesto menyatakan bahawa penaja, pembangun dan pengguna seharusnya dapat mengekalkan rentak yang tetap tanpa had masa. Itulah maksud "lestari" di sini: bukan perlahan, tetapi cukup stabil untuk bertahan lama.
Waterfall hampir pasti berakhir dengan kerja kelam-kabut. Kejutan tiba pada penghujungnya, tarikh sudah tetap, dan yang tinggal untuk dikorbankan hanyalah waktu malam dan hujung minggu orang. Langkah kecil menangani kejutan sebaik sahaja ia muncul, sedikit demi sedikit.
Ujian yang berguna: bolehkah pasukan bekerja tepat seperti minggu ini untuk dua tahun akan datang? Jika jawapannya tidak, rentak itu dipinjam, dan ia akan dibayar balik dengan faedah.
| Bantahan | Jawapan |
|---|---|
| "Kami perlukan pelan penuh untuk meluluskan bajet." | Simpan pelan, pada tahap perincian yang betul: matlamat yang jelas, hala tuju kasar dan bajet. Yang berubah ialah perincian diputuskan langkah demi langkah, apabila bukti diperoleh. |
| "Iteratif bermaksud tiada seni bina atau reka bentuk." | Ia bermaksud reka bentuk yang cukup untuk beberapa langkah seterusnya, dan disemak semula dengan kerap. Keputusan besar masih dibuat dengan teliti, cuma kemudian, apabila kita lebih tahu. |
| "Pelanggan kami mahukan tarikh yang tetap." | Tetapkan tarikh dan bajet, dan biarkan skop fleksibel. Oleh sebab bahagian paling bernilai dibina dahulu, apa sahaja yang siap menjelang tarikh itu ialah versi terbaik yang mungkin. |
| "Menunjukkan kerja yang belum siap nampak tidak profesional." | Kita menunjukkan kerja kecil yang sudah siap, iaitu sebaliknya. Kebanyakan pihak berkepentingan lebih suka sesuatu yang kecil tetapi berfungsi daripada janji yang besar. |
| "Berhenti untuk maklum balas melambatkan kami." | Hanya jika anda tidak pernah membina perkara yang salah. Kebanyakan pasukan pernah, dan mengetahuinya lewat jauh lebih melambatkan. |