Haruskah kita mengadopsi metodologi yang gesit ketika menulis ulang aplikasi yang sudah ada dari awal?


8

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?


10
Anda kehilangan saya di "kami akan menulis ulang produk kami yang sudah ada dari awal." Silakan baca permata tua ini sebelum melanjutkan "Hal-hal yang tidak boleh Anda lakukan, bagian 1": joelonsoftware.com/articles/fog0000000069.html
JohnFx

2
Menggunakan metodologi yang tidak Anda ketahui tanpa alasan kuat adalah risiko yang tidak dapat dibenarkan. Adalah baik bahwa Anda menemukan tentang Agile, pastikan Anda menemukan alasan bagus mengapa Anda memilihnya daripada teknik lain.
NoChance

2
Salah satu manfaat utama Agile adalah merespons perubahan. Agaknya menulis ulang produk Anda yang sudah ada akan memakan waktu cukup lama. Apakah Anda benar-benar percaya bahwa persyaratan tidak akan berubah selama waktu itu?
TrueWill

1
@ TrueWill - Bagaimana metodologi perangkat lunak 'merespons perubahan'? Itu tidak masuk akal. Bukan AI ...? Lol.
Anonim

Tempat kerja saya adalah contoh yang baik untuk mengadopsi metode Agile tanpa menulis ulang, tetapi mengambil langkah-langkah tambahan kecil.
Yam Marcovic

Jawaban:


10

apakah layak untuk terjun ke dunia Agile?

Iya.

Bukankah gesit lebih berguna ketika Anda tidak memiliki semua persyaratan di muka dan Anda mendapatkan kebutuhan Anda secara bertahap ??

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.

apa praktik terbaik untuk merancang basis data? Katakanlah dalam iterasi pertama kami, kami hanya membuat sistem masuk (pengguna dapat masuk, keluar dll).

Sungguh iterasi pertama yang mengerikan.

Apakah kita hanya perlu membuat tabel Pengguna tanpa khawatir tentang tabel lain? Dan tabel lain akan berevolusi karena produk kami akan maju?

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).


2
Saya pikir pernyataan Anda "itu satu-satunya cara untuk membuat kemajuan" adalah asumsi bukan fakta yang sebenarnya.
NoChance

@Emmad Kareem: "Ada lagi yang membutuhkan asumsi aneh". Anda dapat menyebutnya "kemajuan" jika Anda mau. Namun, saya sampaikan bahwa asumsi aneh tidak benar-benar maju. Asumsi acak sebagai cara untuk membuat "kemajuan" hanyalah dithering acak. Ini tidak meneruskan kemajuan menuju kesimpulan yang pasti. Itu hanya aktivitas acak, beberapa persen di antaranya berada di arah yang benar. Sisa dari kegiatan ini hanya asumsi yang tidak valid ketika persyaratan dikumpulkan.
S.Lott

@Emmad Kareem: Membantu memberikan koreksi yang ingin Anda lihat. "bukan fakta yang sebenarnya" tidak memberi tahu saya cara memperbaikinya, bukan?
S.Lott

2
Terimakasih atas klarifikasinya. Maksud saya adalah Agile hanya satu metodologi di antara banyak metodologi lainnya, dan mengatakan bahwa "itu satu-satunya cara" kedengarannya seperti asumsi. Pandangan pribadi Anda tentu saja dihormati.
NoChance

@Emmad Kareem: "Agile hanya satu metodologi di antara banyak metodologi lainnya". Agile bukan metodologi tunggal. Ini adalah pendekatan yang mengarah ke berbagai metodologi. Ada banyak metodologi lain yang tidak dapat dan tidak berfungsi dengan persyaratan yang tidak lengkap. Ada banyak metodologi Agile, semua yang melakukan pekerjaan dengan persyaratan tidak lengkap.
S.Lott

1

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?

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.

Bukankah gesit lebih berguna ketika Anda tidak memiliki semua persyaratan di muka dan Anda mendapatkan kebutuhan Anda secara bertahap ??

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?

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?

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)


1

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?

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.


0

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.


0

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?

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.


0

Agile adalah tentang produktivitas dan fleksibilitas . Mengapa Anda menulis ulang aplikasi Anda? Alasannya bisa:

  1. Mengubah platform (dari Windows ke Linux misalnya)
  2. Mengubah bahasa (mis. Dari ASP.NET ke PHP)
  3. Jumlah refactoring sangat tinggi, yang membuat penulisan ulang menjadi opsi penghematan biaya
  4. Bisnis telah banyak berubah, jadi, Anda sebenarnya membuat aplikasi baru (lagu baru, berdasarkan tema yang sama, jika Anda mau)

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.


0

apakah layak untuk terjun ke dunia Agile?

Mungkin. Mencoba sesuatu yang baru bisa berisiko, terutama jika itu baru bagi semua orang. Saya pribadi menemukan Agile berguna ketika dilakukan dengan benar .

Bukankah gesit lebih berguna ketika Anda tidak memiliki semua persyaratan di muka dan Anda mendapatkan kebutuhan Anda secara bertahap ??

Mungkin bermanfaat dalam membantu mengarahkan persyaratan jika Anda belum memilikinya. Namun, itu tidak berarti utilitasnya terbatas hanya pada persyaratan mengemudi.

apa praktik terbaik untuk merancang basis data?

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.


0

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.


0

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.