Saya bekerja untuk perusahaan berbasis produk kecil. Kami akan menulis ulang produk kami yang sudah ada dari awal. Kami berencana untuk mengadopsi metodologi Agile untuk pengembangan kami. Sekarang pertanyaan saya adalah karena kita memiliki semua persyaratan bahkan sebelum memulai proyek (karena kita sedang menulis ulang produk yang ada), apakah layak untuk terjun ke dunia Agile? Bukankah tangkas lebih berguna ketika Anda tidak memiliki semua persyaratan di muka dan Anda mendapatkan kebutuhan Anda secara bertahap?
Kedua, katakanlah jika kita beralih ke Agile, apa praktik terbaik untuk merancang basis data? Katakanlah dalam iterasi pertama kami, kami hanya membuat sistem masuk (pengguna dapat masuk, keluar dll). Apakah kita hanya perlu membuat tabel Pengguna tanpa khawatir tentang tabel lain? Dan tabel lain akan berevolusi karena produk kami akan maju?
Jawaban:
Iya.
Salah.
Ketika Anda tidak memiliki semua persyaratan, itulah satu - satunya cara untuk membuat kemajuan. Hal lain membutuhkan asumsi aneh yang pada akhirnya akan terbukti salah. Agile hanya membuat lebih sedikit asumsi aneh.
Ketika Anda memiliki semua persyaratan, Anda masih harus mengikuti semua prinsip Agile.
Baca ini sebelum melanjutkan lebih lanjut: http://agilemanifesto.org/
Semua poin ini benar terlepas dari seberapa banyak Anda mengetahui persyaratannya.
Anda masih mendapat manfaat dari menggunakan metode Agile seperti Scrum, karena Anda akan memiliki harapan yang lebih realistis.
Sungguh iterasi pertama yang mengerikan.
Iya. Anda membuat basis data secara bertahap.
Anda melakukan semuanya secara bertahap.
Anda memprioritaskan berdasarkan pada apa yang menciptakan nilai paling besar bagi pengguna . Pertimbangan teknis tidak aneh (dan konyol).
sumber
Ya, meskipun saya bayangkan kemungkinan ada lebih dari beberapa perubahan yang mungkin terjadi pada bagaimana aplikasi saat ini dirancang karena ini akan menjadi waktu untuk membersihkan berbagai hutang teknis dalam memiliki desain yang lebih bersih mengingat informasi yang diketahui sekarang.
Seberapa yakin Anda bahwa persyaratan itu tidak akan berubah saat Anda membangun aplikasi lagi? Apakah Anda yakin bahwa desain yang diambil tidak akan pernah di refactored?
Ada banyak opsi berbeda di sini. Lakukan cukup untuk membuatnya bekerja. Jika tabel Users adalah semua yang diperlukan, bagus. Jika ada beberapa tabel lain yang ingin dimiliki seseorang sehingga DB berada dalam bentuk yang lebih normal, maka itu mungkin membuatnya lebih baik untuk melakukannya. Anda tidak akan menjadi sempurna pertama kali dan Agile adalah tentang mencoba dan memperbaiki jenis metodologi karena setelah Anda menunjukkan apa yang Anda miliki, pengguna akan sering mendapatkan umpan balik yang membuat Agile terus-menerus pergi ... (Juga di mana yang baru persyaratan akan datang karena orang kemudian dapat mulai meminta barang juga)
sumber
Sebuah perusahaan kecil (manajemen) yang berencana untuk menggunakan praktik lincah berada dalam posisi awal yang bagus karena biasanya pengembang yang mendorong adopsi. Saya akan merekomendasikan Anda mengidentifikasi para pemimpin yang bersedia untuk terus mendorong adopsi di tingkat tim (Pelatihan, pelembagaan, dll.)
Dengan persyaratan di tangan, tanyakan kepada pengguna Anda apa yang ingin mereka lihat dalam satu iterasi. Lalu, sampaikan. Lakukan lagi iterasi berikutnya dan lagi. Pengguna yang dapat menyentuh pekerjaan Anda lebih awal akan membantu memperbaiki persyaratan saat Anda pergi. Jika Anda tidak memiliki proses otomatis di tempat sekarang atau tim tidak memahami pengembangan berkelanjutan maka jadwalkan waktu untuk memastikan mereka melakukannya.
sumber
Agile berlaku untuk setiap proyek pengembangan, dan tidak khusus untuk proyek greenfield lengkap yang belum memiliki persyaratan yang ditentukan. Manajemen proyek yang gesit membuat proyek Anda belajar sendiri , dan meningkatkan diri dengan mengambil langkah-langkah kecil, meninjau langkah-langkah Anda sesering mungkin dan meningkatkan langkah-langkah Anda selanjutnya. Ada banyak blog di Agile sekitar. Google adalah temanmu ...
Mengenai pertanyaan spesifik Anda tentang pengembangan database Agile, Anda berada di jalur yang benar. Anda dapat mengembangkan manajemen pengguna tanpa memedulikan sisanya pada awalnya. Itu mungkin akan berakhir di beberapa pengerjaan ulang ketika Anda mendapatkan lebih lanjut dalam proyek, tetapi itu dapat dianggap sebagai biaya untuk melakukan iterasi yang difokuskan kecil. Beberapa pendekatan tengah akan menyelidiki model basis data Anda sedikit lebih awal dan membuat beberapa desain yang dapat bekerja beberapa sprint di depan. Dengan begitu, Anda akan memiliki lebih sedikit pengerjaan ulang.
sumber
Berhati-hatilah dalam melakukan pendekatan ini secara berlebihan. Ini bisa seperti membangun rumah dan mencoba menyelesaikan satu kamar mandi sepenuhnya saat fondasinya masih terbenam. Kemungkinan Anda harus benar-benar mengulang bagian yang signifikan dari pekerjaan Anda jika fondasi aplikasi Anda, database dan model objek yang mendasarinya, tidak matang atau cukup stabil untuk mendukung struktur.
Juga, ingat bahwa mengatakan Anda menggunakan Agile / Scrum tidak memaafkan Anda untuk menggunakan praktik rekayasa perangkat lunak yang baik seperti pengujian unit yang tepat dan database yang solid dan desain objek. Ketika Agile salah diterapkan, ia dapat dengan mudah jatuh ke dalam kode dan memperbaiki proyek spiral kematian yang bisa sangat menyakitkan atau bahkan tidak mungkin untuk pulih.
sumber
Agile adalah tentang produktivitas dan fleksibilitas . Mengapa Anda menulis ulang aplikasi Anda? Alasannya bisa:
Dalam salah satu alasan ini, Anda tidak akan mengirimkan produk Anda dalam semalam, dan tentu saja itu akan memakan waktu.
Memiliki jaminan simpanan produk hanya merupakan salah satu item yang tangkas merekomendasikan. Apa yang Anda katakan tentang mengetahui seluruh bisnis berarti bahwa Anda sudah memiliki banyak PBI dalam jaminan produk Anda.
Tetapi bukankah lebih baik Anda mengirimkan bagian dari produk baru Anda di akhir setiap sprint? Bukankah itu akan membuat Anda lebih gesit dan responsif terhadap perubahan. Misalnya, bayangkan Anda mencoba membuat aplikasi baru ini indah. Bukankah baru diketahui setelah 10 bulan bahwa desain baru Anda tidak dapat diterima? Bukankah itu akan menjadi latihan yang baik jika Anda diberi tahu setelah 2-3 minggu tentang itu?
Jawaban saya untuk pertanyaan Anda adalah:
Pengembangan lincah pasti memiliki banyak hal untuk ditawarkan, bahkan untuk aplikasi yang ditulis ulang.
sumber
Mungkin. Mencoba sesuatu yang baru bisa berisiko, terutama jika itu baru bagi semua orang. Saya pribadi menemukan Agile berguna ketika dilakukan dengan benar .
Mungkin bermanfaat dalam membantu mengarahkan persyaratan jika Anda belum memilikinya. Namun, itu tidak berarti utilitasnya terbatas hanya pada persyaratan mengemudi.
Iteratif. Gunakan migrasi basis data.
Saran
Jika Anda ingin melakukan Agile itu bagus. Saya akan mencoba dan mencari seseorang yang telah melakukannya sebelumnya untuk membantu Anda melalui proses.
Orang-orang sering mengabaikan langkah refactoring ketika mereka pertama kali mencoba Agile. Tidak. Itu akan membunuh proyek.
Pikirkan dalam irisan vertikal (fitur) alih-alih lapisan. Terapkan irisan vertikal sehingga Anda memiliki sistem kerja setelah kartu fitur pertama selesai. Setelah berfungsi, tetap berfungsi dan tambahkan saja dengan setiap kartu fitur.
sumber
Kami telah menggunakan Agile pada proyek yang mengharuskan pemindahan dari aplikasi lama ke aplikasi baru dan arsitektur baru. Situasi kami sedikit berbeda karena kami berusaha tidak hanya mengulang aplikasi yang sudah ada (digunakan secara internal oleh departemen penjualan, keuangan, sumber, dan gudang kami), tetapi kami juga berusaha meningkatkan pengalaman masing-masing departemen. Satu tantangan yang kami lihat menggunakan gesit adalah nilai bisnis untuk memindahkan bagian dari fungsionalitas untuk unit bisnis tertentu tinggi, tetapi bagian lain rendah. Karena itu kami menemukan diri kami membuat aplikasi baru dan menjaga aplikasi lama tetap berjalan saat kami bertransisi. Kami mengalami masalah dalam mendapatkan bisnis untuk melihat nilai dalam berkonsentrasi pada pemindahan satu "pelanggan" ke aplikasi yang sama sekali baru. Namun kami mendapatkan banyak cerita bernilai tinggi dalam sprint kami. Saya pikir segera kita akan datang ke gelas segera, ketika kita harus meyakinkan bisnis bahwa kita perlu fokus pada satu unit pada suatu waktu.
Jadi, untuk menjawab pertanyaan awal, ya lincah adalah cara yang baik untuk pergi. Bersiaplah untuk beberapa dependensi untuk muncul dan membimbing beberapa keputusan tim di sepanjang jalan.
sumber
Yang paling penting adalah proses scrum akan bermanfaat bagi Anda. Maksud saya jika pekerjaan Anda akan lebih baik, ambil saja. Tetapi Anda tidak akan pernah tahu kecuali Anda mencobanya.
Poin lain adalah bahwa tidak perlu mengambil proses scrum oleh buku. Ambil saja hal-hal yang akan berhasil untuk Anda. Tim kami misalnya tidak memiliki papan scrum. Karena kita tidak membutuhkannya.
Sedangkan untuk desain, Anda harus mencoba mendesain sedemikian rupa sehingga perubahan di masa depan tidak akan memakan banyak waktu. Sistem Anda harus kuat.
sumber