Bagaimana cara kerja tangkas saat mengganti sistem kerja?


15

Dalam dunia Agile yang ideal, Anda dengan cepat membangun bagian kecil, tetapi berguna dari sistem akhir yang diinginkan, dan memberikannya kepada pengguna. Mereka senang, karena berguna, mereka mulai menggunakannya dan memberikan umpan balik. Anda kemudian mencari tahu apa yang harus ditambahkan ke dalamnya, membangun itu, dan ulangi sampai Anda kehabisan waktu.

Saya memiliki beberapa proyek baru-baru ini yang melibatkan penggantian beberapa jenis sistem kerja. Model di atas tidak berfungsi sama sekali: sampai Anda membangun sistem yang mencakup hampir semua fungsi sistem yang ada, pengguna tidak tertarik sama sekali. Mereka tidak akan menggunakannya.

Bagaimana Anda menerapkan Agile ketika "subset berguna terkecil" adalah "semuanya"?


3
Saya punya pertanyaan, apakah sistem baru ini merupakan cermin langsung dari set fitur yang ada, dan jika demikian, mengapa Anda mengubahnya?

Pengguna dapat menunjukkan minat atau tidak pernah mendapatkan fungsionalitas baru. Itu pilihan mereka, tetapi dalam beberapa pengaturan bisnis mereka mungkin memiliki penyelia yang berpikir sebaliknya.
JeffO

Jawaban:


14

Solusi tangkas mungkin bukan untuk menggantikan semua dalam satu waktu, tetapi untuk fase penggantian secara bertahap.

Perkenalkan sistem baru secara bertahap, sedikit demi sedikit, menjaga bagian-bagian dari sistem lama berjalan. Sistem lama tidak dimatikan sekaligus, hanya memudar. Bagian-bagian baru menyediakan fungsionalitas baru atau manfaat lainnya, sehingga pengguna senang menggunakannya. Ini juga kurang berisiko, karena Anda memiliki sistem kerja 100% setiap saat.


2
+1 bahkan tidak melihat jawaban Anda di sini sebelum saya mengatakan hal yang sama. Pemikir hebat dan semuanya;)
Michael Brown

+1 untuk menunjukkan bahwa Agile mungkin bukan pendekatan yang ideal untuk beberapa jenis implementasi kehidupan nyata.
pap

@ tepuk Ya, tangkas (TM) telah dihipnotis begitu keras sehingga ada bahaya membabi buta menggunakan satu metodologi tetap, tanpa memikirkan situasi spesifik Anda sendiri.
MarkJ

Menjaga bagian-bagian dari sistem lama berjalan menyiratkan upaya pengembangan pengeluaran untuk berintegrasi dengan sistem lama, kan?
Steve Bennett

1
@SteveBennett: Ya, benar. Itu, tentu saja, merupakan tradeoff. Tetapi hasilnya sangat mengurangi risiko, dan Anda hanya perlu mengulang bagian yang perlu diulang.
sleske

6

Alih-alih menulis ulang sistem yang ada (yang seperti yang Anda sebutkan akan membutuhkan upaya sebelum sistem baru cocok dengan fungsi yang ada), pertimbangkan pendekatan anggur mencekik . Pada dasarnya, Anda menerapkan fungsionalitas baru menggunakan pendekatan baru di atas aplikasi yang ada. Akhirnya, saat Anda mengatasi kekurangan sistem lama untuk mengatasi fungsi baru, kode baru akan sepenuhnya menggantikan yang lama.

Ini membutuhkan lebih banyak ketelitian dan upaya daripada "reboot" dari aplikasi lama. Tetapi Anda mendapatkan waktu yang lebih singkat untuk ROI. Selain itu, melalui proses ini, Anda dapat memasang kait untuk memungkinkan sistem "baru" menjadi lebih mudah dicekik oleh sistem "baru" berikutnya.


5

Melepaskan kenaikan kecil ke dunia mungkin bekerja untuk proyek-proyek greenfield tetapi meskipun begitu sejumlah kecil fitur mungkin tidak terlalu berguna.

Scrum menganjurkan bahwa setelah setiap sprint bahwa produk "Berpotensi Dapat Dikirim". Tidak harus dikirim tetapi harus memiliki kualitas produk yang dapat dikirim.

Jika Anda ingin memberi pengguna versi aplikasi tambahan maka Anda dapat mengklasifikasikannya sebagai Alpha lalu Beta lalu Lepaskan versi Kandidat sambil tetap menggunakan aplikasi Produksi nyata yang masih digunakan.

Anda mungkin menemukan bahwa fitur baru ditambahkan dan yang lama dibatalkan jika Anda memasukkan umpan balik dari pengguna.


1
+1 itulah tepatnya yang kami dekati. Meskipun seluruh ide 'memulai kembali' sangat tidak gesit. Seberapa keras Anda mencoba mempertimbangkan untuk mengganti solusi lama sedikit demi sedikit?
Kris Van Bael

@KrisVanBael yang secara teori lebih baik (dan pasti ideal) tapi itu satu lagi dari pertanyaan "itu tergantung" - beberapa solusi lama benar - benar tua (jadi orang melihat perubahan platform) atau prosesnya terhubung / terintegrasi ke dalam sistem ujung ke ujung dan "bit" bisa agak besar.
Murph

Saya bekerja di suatu tempat di mana barang asli dikirim ke pasar dengan sangat cepat dan oleh karena itu desainnya sangat buruk. Kami memiliki gagasan untuk memulai kembali dengan ide yang lebih baik tentang apa yang harus dilakukan dan mudah-mudahan kode lebih baik. Itu tidak pernah berjalan yang merupakan penyebab terbaik karena biaya untuk mendapatkan manfaat tidak layak. Jika sistem yang ada berfungsi maka lakukan perbaikan kecil terhadapnya.
aqwert

3

Saya bekerja pada garis besar penggantian aplikasi bisnis untuk jaringan tv kabel nasional besar. Pengembangan sistem baru dilakukan dengan SCRUM, itu adalah proyek pengembangan 18-24 bulan untuk mengimplementasikan kembali hampir semua sub-sistem utama; yang mendekati 10 tahun.

Ada fase perencanaan seperti 6 bulan sebelum pembangunan dimulai, tetapi juga didekati sebagai SCRUM. Di sinilah pemilik produk menulis toko dan epos tingkat tinggi setelah analisis sistem yang ada dan mewawancarai pelanggan.

Sistem yang ada sangat stabil saat masuk ke mode perawatan kritis; hanya menunjukkan masalah stopper yang diperbaiki, semuanya hanya dicatat untuk tujuan historis dan untuk memastikan masalah yang sama tidak muncul di sistem baru.

Sistem baru berevolusi seperti yang dijelaskan dalam proses Agile, itu sangat halus untuk sebagian besar. Ketika sistem penggantian mencapai fitur partity, itu tidak masuk ke produksi, tetapi ke uji coba produksi paralel. Sub-set pekerja yang tidak kritis mulai menggunakan kedua sistem, untuk memvalidasi bahwa sistem baru berperilaku seperti yang lama; dengan bug lama diperbaiki tentu saja.

Ketika sistem baru mencapai hampir 100% fitur baru lengkap, itu diluncurkan untuk menjalankan produksi paralel umum, yang berlangsung beberapa bulan.

Setelah dianggap oleh pelanggan untuk memenuhi kebutuhan mereka, sistem lama didukung, dimatikan dan duduk. Saya berasumsi mereka telah kembali bertujuan perangkat keras sistem lama karena mereka tidak pernah perlu kembali ke sistem lama setelah dipotong.


Keren. Hal penting dalam cerita ini adalah ketersediaan pekerja yang mau bekerja secara bersamaan di kedua sistem.
Steve Bennett

2

Saya masih berpikir gesit menambah banyak nilai dalam skenario ini.

Hanya saja Anda memiliki tujuan akhir yang sangat jelas yaitu 'mengganti sistem saat ini.'

Teknik dan proses yang gesit masih bisa membuat Anda sampai di sana dengan lebih efektif.

Contohnya:

Anda masih dapat menjalankan sistem secara iteratif dan dalam sprint kecil.

Anda masih dapat menggunakan teknik lincah untuk memprioritaskan pekerjaan setelah berkomunikasi dengan orang-orang kunci.

Anda masih bisa menggunakan lincah untuk merencanakan berdasarkan kecepatan yang diamati.

Anda masih dapat menggunakan teknik dan filosofi lincah seperti menyebarkan pengetahuan, TDD, pengkodean bersih untuk meningkatkan kualitas dan desain internal proyek.

Jika Anda memiliki orang yang benar-benar 'tidak tertarik' pada proyek dan tidak terlibat dengan proyek sampai mereka memiliki pengganti yang sempurna, Anda memiliki masalah yang lebih besar terlepas dari apakah Anda menggunakan air terjun, gesit, atau memang proses apa pun.


1

Ini bekerja sama, tetapi pendekatan ini akan lebih sulit untuk menjual kepada pengguna yang sudah ada. Mereka mungkin tidak menginginkan sistem baru dan mereka tidak ingin diinterupsi dengan pengujian berkala. Mereka ingin menunggu selama mungkin dan kemudian mengujinya pada akhirnya. Sebagian besar pengguna merasakan hal ini sampai batas tertentu, tetapi terserah mereka yang bertanggung jawab untuk mendidik mereka. Dalam pikiran mereka, Anda bekerja dengan aplikasi yang sudah ada, jadi Anda harus tahu apa yang seharusnya dilakukan, mengapa repot-repot?

Buat mereka mengerti bahwa Anda tidak ingin melakukannya dengan cara ini karena Anda pikir itu akan menyenangkan dan Anda merasa kesepian menggunakan proses air terjun. Ini akan membuat aplikasi yang lebih baik dalam jangka panjang.

Titik penjualan utama mungkin untuk menerapkan satu perubahan itu selama membangun aplikasi baru yang selalu mereka inginkan, tetapi tidak pernah bisa masuk ke sistem lama.


0

Jika saya memiliki mobil tua yang sudah rusak yang harus saya kendarai untuk mulai bekerja, dan saya pergi ke dealer untuk membeli mobil baru. Model yang saya inginkan kehabisan stok sehingga mereka harus memesannya dari pabrik dan akan diperlukan beberapa saat sebelum masuk.

Dealer kemudian dengan itikad baik memutuskan untuk memberi Anda blok mesin mobil sampai mobil yang Anda pesan telah masuk. Apa yang harus Anda lakukan dengan mesin mobil? Tentu saya bisa menghubungkan beberapa komponen untuk mengujinya dan membuatnya bekerja, tetapi itu benar-benar tidak membantu saya untuk bekerja besok di mana mobil tua yang berkarat melakukannya.

Memang ada perbedaan yang sangat jauh antara membangun mobil dan membangun perangkat lunak khusus, tetapi mari kita abaikan itu demi argumen. Inti dari cerita ini bukanlah untuk bingung bahwa klien tidak menemukan gunanya untuk perubahan tambahan ketika mereka sudah memiliki perangkat lunak yang cukup baik untuk menyelesaikan pekerjaan sekarang. Itu sudah memenuhi kebutuhan mereka untuk saat ini.

Itu bukan untuk mengatakan bahwa Agile bukan bagian penting dari proses di sini karena memungkinkan umpan balik terus menerus kepada klien tentang status proyek. Mereka dapat memastikan bahwa kemajuan sedang dibuat sebelum tonggak utama dan hasil. Mereka dapat mengidentifikasi potensi masalah dan masalah sebelumnya sebelum menjadi kesalahan yang terlalu mahal untuk diperbaiki.

Mungkin sebagai pelanggan mobil Anda hanya ingin melihat dan mengevaluasi mesin untuk memastikan bahwa Anda memang akan mendapatkan apa yang Anda harapkan. Ups, saya sebenarnya menginginkan mesin 6 silinder, bukan mesin 4 silinder! Bukankah aku sudah memberitahumu sebelumnya? Tidak masalah, mari lakukan perubahan ke pesanan pabrik.

Jual ide kepada klien bahwa adalah kepentingan terbaik mereka untuk menggunakan rilis perangkat lunak baru bukan sebagai pengganti dulu tetapi untuk mengevaluasi dan memastikan bahwa mereka senang dengan setiap langkah di sepanjang jalan.


Ya, tapi pengalaman saya sejauh ini, mengikuti metafora, bahwa pelanggan mobil tidak tahu apa-apa tentang mesin, dan tidak bisa memberi tahu Anda apa pun yang berguna dari melihat satu. Ketika mereka dalam mode hipotetis, umpan baliknya sangat dangkal "oh, sepertinya itu akan melakukan apa yang kita inginkan" dan Anda tidak mendapatkan banyak sampai mereka benar-benar menggunakannya untuk pertama kalinya untuk memecahkan masalah nyata.
Steve Bennett
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.