Beberapa informasi latar belakang
Saya bagian dari tim pengembang perangkat lunak internal. Terdiri dari
- 5 pengembang (dengan pengalaman mulai dari 2 hingga 5 tahun, saya salah satunya)
- 3 staf implementasi (mereka melakukan penyebaran dan pelatihan perangkat lunak)
- dan 1 manajer proyek.
Kami mengembangkan banyak proyek kecil hingga menengah, dan jadwal mereka biasanya tumpang tindih. Pembangunan berjalan seperti ini:
- "Klien" memberi kami satu set persyaratan awal
- Kami mengembangkan sistem sesuai spesifikasi tersebut
- Sajikan sistem tersebut ke "klien"
- "Klien" memberi kami persyaratan tambahan berdasarkan presentasi tersebut
- Ulangi 2-4 sampai "klien" kehabisan persyaratan baru atau tanggal target penyebaran sudah dekat
- Mengatur dan menggunakan sistem
Ini, bersama dengan fakta bahwa itu adalah "klien" yang menangani tenggat waktu sebagian besar waktu (yang merupakan bendera merah, dari apa yang saya lihat di sini di Programmer dan PM.SE) dan kami tidak mengikuti arahan metodologi pengembangan yang pasti. untuk pengkodean koboi, hampir tidak dapat dipelihara kode, dan bug yang melewati produksi, antara lain. Itu sebabnya kami memilih untuk mengadopsi metodologi berbasis Agile seperti Scrum.
Mengapa scrum?
Itu adalah inisiatif manajer kami, dan semua orang tampaknya menyetujuinya, mengingat situasi kami saat ini.
Masalah dengan Scrum
Beberapa elemen Scrum memiliki konflik dengan pengaturan kami saat ini yang tidak dapat kami atasi dengan mudah, terutama sifat "jack-of-all-trade" dari pengembang Agile. Tim penempatan tidak tahu cara memprogram, dan pengembang memiliki keterampilan komunikasi dan pelatihan di bawah rata-rata. Dan lineup ini tidak akan benar-benar berubah dalam waktu dekat.
Pertanyaan
Apakah itu mempengaruhi efektivitas Scrum sebagai metodologi? Apakah perubahan lain perlu dilakukan untuk mengkompensasi? Atau akan lebih baik untuk meninggalkan pemikiran sama sekali dan berpikir tentang metodologi yang berbeda?
sumber
Jawaban:
Sebenarnya, cara kerja Anda saat ini tidak jauh dari Scrum seperti yang mungkin Anda pikirkan.
Di Scrum, Anda juga mendapatkan serangkaian persyaratan awal, mengimplementasikannya, dan mendemonstrasikan hasilnya, dan berdasarkan demonstrasi, persyaratan baru dapat diberikan kepada Anda atau pemangku kepentingan dapat memutuskan bahwa produk tersebut cukup baik sehingga tidak diperlukan pengembangan lebih lanjut.
Dalam situasi Anda, "klien" yang Anda bicarakan dapat diberi peran sebagai Pemilik Produk di Scrum (mereka tampaknya sudah mengisi peran itu dengan menetapkan prioritas dalam suatu proyek dan memutuskan kapan siap untuk diluncurkan).
Satu perubahan besar bisa menjadi panjang iterasi. Di Scrum, iterasi harus berlangsung antara 1 dan 4 minggu.
Adapun komposisi tim dan fall-of-all-trade fallacy: Scrum tidak mengharuskan semua orang menjadi jack-of-all-trade. Scrum hanya mensyaratkan bahwa tim secara keseluruhan memiliki semua kompetensi yang diperlukan untuk mendapatkan produk dari daftar persyaratan menjadi sesuatu yang telah / dapat digunakan.
Dalam situasi Anda, saya dapat dengan mudah melihat tim per proyek yang terdiri dari satu atau lebih pengembang (kebanyakan melakukan pekerjaan implementasi dan pengujian) dan anggota "staf implementasi" yang sebagian besar berfokus pada pembuatan manual dan materi pelatihan untuk fitur-fitur yang para pengembang sekarang menerapkan.
Setelah klien / Pemilik Produk memberi lampu hijau untuk penempatan, pekerjaan untuk tim scrum sebagian besar akan selesai, sehingga pengembang dapat pergi ke proyek lain (dan hanya tersedia jika diminta untuk memperbaiki masalah setelah penempatan) dan implementasi staf dapat beralih untuk melakukan pelatihan dan mendukung peluncuran.
Fakta bahwa ada tenggat waktu bukanlah masalah nyata, asalkan ada cukup fleksibilitas dalam fungsi apa yang dibutuhkan dalam rilis itu.
sumber
Anda meminta alternatif jadi saya akan mengatakan Pemrograman eXtreme (XP). Secara khusus saya pikir pemrograman pasangan mungkin membantu Anda di sini.
Dengan memasangkan orang-orang dengan keterampilan yang berbeda bersama, tidak masalah pada keterampilan apa: membuat kopi, menguji, melatih dll. Anda dapat menyebarkan keterampilan di sekitar tim.
Tapi sejujurnya itu tidak terdengar seperti SCRUM yang jauh untuk Anda. Bagian dari SCRUM adalah fleksibel dan menemukan yang terbaik untuk tim Anda. Bagian dari XP adalah menghormati tim Anda dan beradaptasi. Mungkin dalam 100 tahun ke depan kita mungkin memiliki profesi yang lebih berkembang dengan aturan keras dan cepat (walaupun saya ragu) tetapi untuk sekarang, melakukan apa yang sesuai untuk Anda adalah semua yang kami miliki. Yang penting adalah memiliki loop umpan balik. Jika sesuatu tidak berfungsi, maka tim perlu mendiskusikan hal itu dan mencoba hal-hal baru sampai mereka menemukan sesuatu yang berhasil.
sumber
Bagaimana cara membuat Scrum bekerja untuk tim dengan peran yang ditentukan?
Lakukan saja. Menurut panduan scrum, setiap orang adalah pengembang tetapi di planet bumi ini, orang yang berbeda akan membawa hal-hal yang berbeda ke meja. Saya hampir mati ketika saya menyarankan bahwa beberapa orang benar-benar penguji sementara yang lain menulis perangkat lunak.
Beberapa hal yang mungkin ingin Anda atasi:
Sprint
Sepertinya Anda memiliki fase pengembangan awal diikuti oleh serangkaian sprint yang seolah-olah. Pertimbangkan untuk memecah ini. Tidak hanya klien akan melihat sesuatu lebih awal, Anda akan mendapatkan perasaan yang lebih baik untuk tonggak pengembangan saat mereka terjadi.
Memperbaiki tenggat waktu
Ini muncul berkali-kali dan memang merupakan duri yang gigih di sisi devs tempat saya bekerja saat ini. Scrum menetapkan perkiraan untuk sprint - tidak lebih. Ya, Anda mungkin mencapai target setelah serangkaian sprint tetapi setelah klien melihat versi awal, ruang lingkup cenderung merayap secara signifikan. Ini bukan masalah itu sendiri, tetapi klien harus disadarkan bahwa pekerjaan lebih lanjut akan dilakukan dalam sprint kemudian dan melebihi dan di atas persyaratan yang diketahui.
sumber
Situasi Anda mungkin lebih cocok untuk Kanban, karena Anda bisa mulai dengan yang Anda miliki dan beralih dari sana. Ini berarti Anda tidak akan memiliki pengenalan big bang yang mengganggu proyek Anda saat ini - mulailah dengan memvisualisasikan tugas di papan tulis dan mengadopsi beberapa praktik seperti retrospektif dan rapat harian.
Anda harus sedikit lebih berhati-hati daripada dengan Scrum karena itu tidak terlalu preskriptif: sehingga ia cenderung untuk kembali ke apa pun yang terjadi sebelumnya alih-alih menanamkan pola pikir tangkas yang tepat.
sumber
Scrum tidak bekerja dengan baik dengan proyek terpisah yang tumpang tindih, karena Anda tidak memiliki sekelompok orang yang bekerja pada proyek untuk sprint lengkap. Karenanya konsep seperti verbositas dll mungkin hanya akan membuat Anda tertekan.
Tetapi pertama-tama mengambil cerita yang memberikan biaya / manfaat terbaik kepada klien, dan mengimplementasikannya termasuk pengujian otomatis penuh, ke kualitas yang cukup baik untuk digunakan, sebelum mengerjakan cerita selanjutnya adalah konsep yang berguna. Demikian juga mengharuskan semua kode yang ditulis untuk sebuah cerita untuk ditinjau oleh pengembang lain sebelum cerita itu dianggap "selesai".
Saya berasumsi staf implementasi Anda harus menulis dokumen pelatihan dan referensi, mereka dapat ditulis (draft pertama) untuk setiap cerita sebelum kode ditulis, sehingga menjadi tes penerimaan.
Saya berharap Anda akan menemukan bahwa pada awal setiap proyek di mana masukan dari staf implementasi akan sangat membantu bagi para pengembang, mereka 100% berkomitmen untuk penyebaran proyek sebelumnya. Oleh karena itu pertimbangkan jika staf implementasi dapat mengerjakan penulisan cerita dan dokumentasi pengguna untuk proyek selanjutnya, sementara pengembang menulis kode untuk proyek saat ini.
“Pengembangan yang didorong oleh perilaku” dengan staf implementasi yang menulis contoh yang digunakan dalam pengujian dapat bekerja.
Jadi ada sedikit Scrum yang akan membantu Anda, tetapi cobalah untuk bersandar dari Scrum daripada menggunakan Scrum.
sumber