Apakah lincah lebih dari air terjun kecil?

18

Saya sebagian besar menggunakan metodologi waterfall pada proyek-proyek saya, tetapi sekarang saya memperluas wawasan saya menjadi metodologi yang gesit. Dari apa yang saya baca sejauh ini, dan mungkin saya sudah membaca hal-hal yang salah, lincah berarti air terjun kecil. Alih-alih air terjun besar yang tersebar selama satu atau dua tahun, Anda memiliki air terjun kecil yang paling lama beberapa minggu atau mungkin beberapa bulan.

Apakah pemahaman saya benar atau ada lebih dari itu? Apa filosofi lincah?

pengguna8788888888
sumber
4
Apakah Anda benar-benar membaca Manifesto Agile? agilemanifesto.org .
S.Lott

Jawaban:

20

Pada tingkat yang sederhana, ya. Cukup melakukan Waterfall setiap dua minggu tidak membuat Anda gesit , tapi itu berulang (yang setengah tangkas).

Model air terjun mendefinisikan fase - persyaratan, arsitektur, desain, implementasi, verifikasi (pengujian), validasi (pengujian penerimaan), dan rilis. Dalam setiap metodologi iteratif, Anda melewati setiap fase ini dalam setiap iterasi. Mungkin ada tumpang tindih di antara mereka, tetapi Anda memperoleh dan menangkap persyaratan, mengadopsi arsitektur dan desain sistem untuk memungkinkan implementasi, mengembangkan fitur-fitur baru atau memperbaiki cacat, menguji modul-modul baru, dan kemudian menyerahkannya kepada pelanggan untuk diterima pengujian dan penyebaran.

Namun, ada banyak hal yang lebih gesit dari sekadar menjadi iteratif dan bertahap. Penyewa tangkas ditangkap dalam Manifesto untuk Pengembangan Perangkat Lunak Agile . Ada empat poin kunci yang dibuat dalam Manifesto:

Individu dan interaksi atas proses dan alat

Anda sering melibatkan orang secara individu. Banyak implementasi yang berpusat di sekitar tim yang mengatur diri sendiri dan mengarahkan diri sendiri. Hampir semua sering berinteraksi dengan pelanggan atau seseorang yang memiliki suara pelanggan. Alih-alih memiliki seperangkat prosedur formal untuk diikuti dan alat untuk digunakan, Anda membiarkan orang yang bekerja pada proyek mendorong bagaimana proyek dilakukan untuk membiarkannya dilakukan dengan cara terbaik.

Bekerja dengan perangkat lunak melalui dokumentasi yang komprehensif

Dalam proyek perangkat lunak, tujuan utama adalah penyampaian perangkat lunak. Namun, dalam beberapa proyek, ada pemborosan produksi dokumen yang tidak menambah nilai. Scott Ambler menulis artikel bagus tentang Agile / Lean Documentation . Ini bukan tentang tidak menghasilkan dokumentasi, tetapi tentang memilih dokumentasi yang menambah nilai bagi tim Anda, pengembang masa depan, pelanggan, atau pengguna. Daripada menghasilkan dokumentasi yang tidak menambah nilai, insinyur perangkat lunak Anda malah memproduksi perangkat lunak dan tes terkait.

Kolaborasi pelanggan atas negosiasi kontrak

Alih-alih mendefinisikan syarat dan jadwal serta biaya di muka, itu menjadi upaya berkelanjutan dengan pelanggan. Misalnya, Anda dapat menangkap persyaratan Anda dalam bentuk cerita pengguna dan memberikan mereka poin. Setelah beberapa iterasi, Anda menentukan kecepatan (poin / iterasi) dan dapat menentukan berapa banyak fitur yang dapat diterapkan tim Anda dalam iterasi. Karena pelanggan Anda memberikan umpan balik tentang fitur mana yang paling menambah nilai, mereka dapat memutuskan kapan proyek dilakukan pada titik mana pun. Sejumlah hal dapat terjadi dengan pengiriman dan interaksi pelanggan yang sering - persyaratan telah dipenuhi dan proyek diakhiri dengan pemeliharaan dan pada akhirnya akhir kehidupan, pelanggan mengetahui bahwa mereka tidak memerlukan semua yang mereka pikir sehingga memutuskan untuk mengakhiri proyek, proyek gagal dan pelanggan melihat ini lebih awal dan dapat membatalkannya ...

Menanggapi perubahan setelah mengikuti rencana

Anda tidak memiliki desain besar atau rencana akhir di muka dan harus melakukan pengerjaan ulang setiap kali desain atau rencana itu harus berubah. Anda terus-menerus memperkirakan dan merevisi estimasi berdasarkan informasi yang Anda miliki. Anda memilih metrik Anda dengan hati-hati untuk memberikan wawasan tentang kesehatan proyek dan kapan harus melakukan perubahan internal. Anda sering menambah, menghapus, dan memprioritaskan kembali persyaratan dengan pelanggan. Pada akhirnya, Anda memahami bahwa perubahan adalah satu-satunya yang konstan.

Menjadi gesit berarti berfokus pada orang-orang dan memenuhi kebutuhan mereka dengan memberikan perangkat lunak berkualitas tinggi dan bernilai tambah dengan cepat. Saat kebutuhan pelanggan berubah, Anda beradaptasi dengan kebutuhan itu untuk fokus pada nilai tambah. Ada implementasi spesifik dari metodologi tangkas, tetapi mereka semua berpusat pada orang, pengiriman tepat waktu dari perangkat lunak yang bekerja, dan beradaptasi dengan lingkungan yang berubah dengan cepat.

Thomas Owens
sumber
2
Ya, "Agile" lebih tentang sikap daripada teknik khusus. Bacalah halfarsedagilemanifesto.org untuk gagasan tentang cara beberapa organisasi gagal mengadopsi metodologi "Agile", bahkan jika mereka mengklaim mengikuti beberapa metode yang dianggap "Agile" ...
Bill Michell
2

Ya dan tidak - proses yang sebenarnya dapat dilihat sebagai serangkaian air terjun kecil tetapi perbedaannya adalah bahwa proses tersebut berkembang dan ditingkatkan dari input seluruh tim (dev, qa, bisnis dll), dalam retrospektif, yang seharusnya mengarah untuk unit yang lebih ketat yang mampu bereaksi terhadap masalah dan secara akurat merencanakan dan memberikan. Saya terlalu menyederhanakan di sini, ada banyak lagi, tetapi saya tidak berpikir ini adalah titik awal yang buruk.

Martyn
sumber
1

Saya akan mengatakan itu adalah cara sederhana untuk menggambarkannya. Ya, ketika Anda turun ke sana, itu adalah aliran air kecil, tetapi ada banyak lagi di baliknya yang membuatnya bekerja. Seluruh metodologi yang mengubah cara Anda mendekati proyek ... Belum lagi pola pikir yang diperlukan untuk itu.

Jika Anda serius tentang Agile, berikut adalah serangkaian webcast yang baik (dan panjang) yang mungkin menarik bagi Anda:

http://autumnofagile.net/

AJC
sumber
1

Lupakan Agile sebentar, pikirkan apa yang dimaksud dengan "air terjun".

Ada fase persyaratan, di mana setiap orang mencoba mencari tahu masalah APA yang harus diselesaikan produk akhir. Orang-orang berdebat tentang ini untuk sementara waktu, dan kemudian mereka semua menandatangani serangkaian persyaratan. Pada titik ini ruang lingkup Anda ditentukan, kontrak ditandatangani, dan pelanggan dapat berkeliaran dan menunggu Anda untuk datang dengan produk yang menyelesaikan persyaratan yang ditetapkan.

Berikutnya ada satu (atau mungkin dua) fase desain. Perancang (yang mungkin atau mungkin bukan pengembang), berdebat tentang BAGAIMANA sistem harus berjalan bersama untuk memenuhi persyaratan yang ditandatangani. Masalah dapat terjadi jika mereka tidak begitu memahami persyaratan, yang mungkin berarti mereka harus kembali ke pelanggan, berpotensi membuka kembali fase persyaratan (dan mendapatkan putaran penandatanganan yang lain) atau setidaknya mengatur manajemen perubahan menjadi tindakan . Seringkali, para desainer hanya membuat tebakan terbaik mereka. Mereka mungkin datang dengan model data logis, dan banyak UML yang menggambarkan sistem baru dan bagaimana seharusnya bekerja. Kemudian mereka menandatanganinya.

Sekarang para pengembang benar-benar dapat memulai pengkodean, berdasarkan pada desain yang ditandatangani. Masalah dapat terjadi jika mereka tidak begitu memahami desain, yang mungkin berarti mereka harus kembali ke desainer, berpotensi membuka kembali fase desain (dan mendapatkan putaran penandatanganan lain) atau setidaknya mengatur manajemen perubahan menjadi tindakan . Para desainer pada gilirannya dapat menyadari bahwa kebingungan benar-benar kembali ke persyaratan, yang berarti bahwa mereka harus membuka kembali diskusi persyaratan, penandatanganan, dan manajemen perubahan lebih lanjut. Seringkali, programmer (yang memiliki tenggat waktu menjulang) hanya membuat tebakan terbaik mereka. Mereka melakukan apa yang mereka bisa untuk membuat kode fungsional. Kemudian mereka merilisnya untuk pengujian.

Sekarang fase pengujian sistem menetapkan. Penguji menguji berdasarkan pemahaman mereka tentang persyaratan dan desain, dan mendaftarkan apa yang mereka anggap cacat ke dalam pelacakan bug / mengubah sistem manajemen, menyebabkan pengembang untuk mulai mengembangkan lagi, kecuali mereka melihat masalah sebagai cacat desain, yang mengirimkannya kembali ke desain, dll ... Akhirnya tes sistem lulus dan diakhiri.

Akhirnya, pelanggan kembali dan melakukan tes penerimaan pengguna pada sistem baru. Di sinilah mereka memutuskan apakah solusi yang diuji penguji, pengembang dikembangkan, dan perancang yang dirancang sebenarnya adalah yang mereka inginkan. Jika tidak, Anda berpotensi harus kembali ke fase desain atau bahkan mengunjungi kembali persyaratan.

Gagasan di balik air terjun adalah sulit (dan sangat tidak diinginkan) untuk kembali setelah fase selesai. Orang yang berbeda umumnya terlibat dalam fase yang berbeda, sehingga ada beberapa hand-off - yang masing-masing menimbulkan banyak risiko untuk salah tafsir dan kehilangan informasi. Ada juga kesenjangan yang signifikan antara ketika pelanggan mengatakan apa yang mereka inginkan dan ketika mereka melihat apa yang telah dibangun, di mana saat itu persyaratan sebenarnya mungkin telah berubah.

Metodologi tangkas fokus pada komunikasi yang kuat dan kerjasama antara semua pihak yang berkepentingan. Prinsip "Kolaborasi pelanggan atas negosiasi kontrak" berarti bahwa Anda tidak harus melalui serangkaian sign-off dan hand-off, tetapi hanya harus bekerja sama dengan pelanggan, setiap iterasi menentukan persyaratan untuk selembar puzzle dan segera membentuk tes, desain, dan kode kerja - dengan semua pemain berkomunikasi secara langsung (menghilangkan biaya dan risiko hand-off). Kode kerja dapat diuji dengan cepat oleh pelanggan, menghilangkan risiko jeda waktu. Semua aktivitas terjadi dalam pusaran kolaboratif, bukan dalam aliran menurun.

Untuk tinjauan yang sangat baik tentang apa yang coba dilakukan oleh metodologi tangkas, saya sangat merekomendasikan Pengembangan Perangkat Lunak Agile Allistair Cockburn : The Cooperative Game .

Matthew Flynn
sumber
0

Ya, itu kurang lebih benar. Sudah banyak yang ditulis dan dibahas tentang bagaimana cara melakukannya, tetapi sekelompok air terjun kecil adalah inti dari itu.

Implementasi spesifik tentang bagaimana menggunakan sekelompok air terjun kecil tidak sepele sekalipun. Misalnya, Anda tidak akan beralih dari membuat proyek besar dalam beberapa tahun ke membuat sejumlah proyek kecil. Masih ada proyek besar dengan 1-2 tahun kerja untuk dimasukkan ke dalamnya. Jadi, Anda perlu membagi proyek besar menjadi sejumlah proyek kecil. Itu mungkin tampak cukup jelas, tetapi mengisi halaman dan halaman buku.

Philip
sumber
0

Apakah itu benar atau ada lebih dari itu

Kedua. Ya itu adalah penjumlahan yang akurat dari konsep tersebut, tetapi ada banyak detail yang dirangkum. Maksud saya, hampir setiap aspek perencanaan berubah ketika Anda berencana untuk minggu depan dan bukan tahun berikutnya.

jhocking
sumber
0

Jika Anda melihat struktur statis (definisi proses) dari sebuah proyek gesit, itu memang terlihat seperti banyak air terjun kecil ya. Tetapi tujuan dari sebuah proyek gesit adalah untuk mendapatkan umpan balik yang lebih cepat dan lebih baik .

  • Anda melakukan pengembangan berbasis tes untuk segera mengetahui apakah perangkat lunak Anda masih berfungsi
  • Pelanggan ada di tempat dan melakukan tes penerimaan untuk mengetahui kapan Anda selesai
  • Anda memiliki retrospektif untuk menyesuaikan proses Anda berdasarkan apa yang berjalan dengan baik dan apa yang tidak.

The manifesto tangkas menyoroti beberapa perbedaan antara lincah dan air terjun (seperti yang dirasakan oleh mereka yang ditandatangani).

Jaap
sumber
0

Benar-benar "lincah" sering berarti air terjun 1-2 hari, bukan minggu. Itu tidak berarti Anda tidak mengikuti rencana keseluruhan, dan bahwa siklus rilis yang sebenarnya adalah 1-2 hari. Tetapi Anda harus mencoba memiliki produk yang telah diuji dan bekerja setiap hari, dan Anda dapat merilisnya - secara teori - setiap hari.

Scrum, misalnya, menggunakan sprint 4 minggu, tetapi sprint bukan hanya satu air terjun (setidaknya, seharusnya tidak menjadi). Anda dapat mengubah prioritas setiap hari setiap kali Anda melihat sesuatu tidak berjalan sesuai rencana pada awal sprint.

Doc Brown
sumber