Saya baru-baru ini bergabung dengan ruang peretas muda yang masih dalam proses pengaturannya sendiri. Kami beruntung karena ruang memiliki beberapa proyek internal yang perlu dikerjakan dan tidak ada kekurangan relawan untuk mengerjakannya.
Ada beberapa diskusi tentang bagaimana mengatur proyek-proyek ini. Pengalaman profesional saya yang terbaru adalah dengan Scrum, jadi saya mempertimbangkan untuk mengajukan pendekatan Scrum untuk proyek perangkat lunak kami, tetapi saya tidak yakin itu akan cocok.
Meskipun saya telah melihat Scrum bekerja dengan baik untuk tim penuh waktu kecil, sifat organisasi ini berbeda:
- Para anggotanya adalah sukarelawan . Beberapa siswa penuh waktu. Lainnya bekerja penuh waktu. Kita tidak dapat mengharapkan tingkat kontribusi konstan dari siapa pun karena kehidupan nyata mereka diprioritaskan.
- Sementara hampir semua orang memiliki pengalaman bertahun-tahun menulis perangkat lunak, tidak banyak anggota yang melakukannya secara profesional atau dalam tim.
- Tidak ada Pemilik Produk . Persyaratan untuk proyek-proyek ini ditentukan oleh komite. Anggota komite ini juga akan mengerjakan implementasinya. Ini berarti kita tidak akan memiliki Pemilik Produk tunggal, khusus, dan berdedikasi.
- Kami tidak memiliki tenggat waktu (lunak atau keras). Proyek-proyek akan selesai ketika mereka selesai.
Ini adalah perbedaan yang cukup signifikan, tetapi saya tidak yakin mereka akan menjadi penghambat penerapan Scrum. Saya pikir beberapa penyesuaian kecil dapat mengatasi rintangan ini:
- Jika kita mengubah Sprint menjadi memiliki ukuran titik-cerita yang tetap, tetapi durasi yang cair (waktu), kita masih bisa mendapatkan manfaat dari rilis berulang tanpa memberikan tekanan pengiriman yang tidak realistis pada sukarelawan dev.
- Kita bisa membuang grafik burndown dan perhitungan kecepatan . Jika saya mengerti dengan benar, ini adalah alat dan metrik yang berfungsi sebagai jembatan antara tim pengembang dan Manajemen. Mereka melayani untuk melaporkan kemajuan dalam bentuk yang bermakna bagi pengembang dan pemangku kepentingan. Mengingat kami tidak memiliki siapa pun untuk melapor (tidak ada Manajer Proyek, tidak ada Pemilik Produk, dan tidak ada pemangku kepentingan dari luar) saya percaya kami dapat membatalkan ini sama sekali.
Hal-hal yang saya pikir dapat kita manfaatkan dari yang tidak akan memerlukan penyesuaian:
- The Persyaratan Mengumpulkan pertemuan (s). Di mana semua orang duduk di sekitar meja dan membahas Kisah Pengguna, membuat sketsa pengolok UI, dan membangun Product Backlog.
- Retrospektif Sprint . Ini akan menjadi cara yang menarik bagi kita untuk berkumpul pada proses pengembangan yang bekerja untuk kita sebagai tim sukarelawan.
Hal yang saya tidak yakin tentang:
- Bagaimana Seharusnya Stand-up harian diperlakukan? Saya bertanya-tanya apakah mereka akan memiliki banyak nilai di lingkungan kita. Pemahaman saya tentang ritual stand-up adalah bahwa itu membantu komunikasi dengan menyebarkan informasi secara alami ke seluruh tim. Mempertimbangkan fakta bahwa Sprint kita kemungkinan akan memberikan kompleksitas yang jauh lebih sedikit daripada Sprint rata-rata, mungkin ada sedikit kebutuhan untuk mengikuti perkembangan / perkembangan semua anggota tim lainnya.
- Haruskah saya mendorong untuk hal-hal XP seperti Integrasi Berkelanjutan, Ulasan Kode, dan TDD? Saya khawatir ini akan banyak meminta. Saya akan lebih tergoda untuk membawa konsep-konsep ini ke dalam proyek-proyek masa depan begitu orang lebih akrab dengan Scrum dan bekerja sebagai sebuah tim.
Pertanyaan saya:
Bisakah Scrum diadaptasi ke lingkungan berbasis sukarelawan?
Dan, apakah pendekatan saya yang direncanakan sejauh ini berjalan ke arah yang benar?
sumber
Jawaban:
Lihatlah ke Kanban. Ini lebih tepat daripada SCRUM untuk kendala Anda.
Sunting: SCRUM adalah (sangat kasar) jaminan simpanan dengan sprint dan upacara untuk memastikan bahwa volume pekerjaan 'sedang berlangsung' tetap terkendali dan memiliki sesuatu yang solid di akhir setiap sprint. Jika Anda meninggalkan upacara dan irama sprint, Anda berakhir dengan Kanban: jaminan simpanan dan penekanan kuat pada pembatasan pekerjaan 'sedang berlangsung' secara langsung dan dengan memastikan semua yang ditandai 'selesai' dilakukan alih-alih dengan memaksakan stabilitas di akhir setiap sprint.
Anda masih mendapatkan manfaat tangkas: rilis kapan saja, fleksibilitas, beberapa ukuran prediktabilitas - meskipun SCRUM dapat membuat Anda sedikit lebih jauh pada aspek itu - dan tanpa upacara atau aspek SCRUM yang tidak cocok dengan longgar, tim didistribusikan tanpa komitmen . Tangkapan? Membolos upacara memerlukan lebih banyak disiplin, sehingga Anda BENAR-BENAR perlu memperhatikan tes, kualitas kode, pekerjaan saat ini sedang berlangsung, dan memastikan bagian atas tumpukan (barang siap diambil oleh orang-orang) cukup dielaborasi.
Anda dapat memiliki jaminan simpanan berdasarkan suara, meskipun dalam pengaturan sukarela beberapa orang hanya mengerjakan apa pun yang mereka inginkan.
(Dan ya, semua ide TDD, CI, ulasan, dan pemrograman rekan adalah ide bagus).
sumber
Untuk mengatasi perbedaan yang Anda perhatikan terlebih dahulu:
Mengenai adaptasi yang Anda usulkan, terutama ketika bekerja dengan sukarelawan, saya akan sangat menyarankan untuk mempertahankan panjang sprint tetap. Dengan begitu, para relawan tahu pasti untuk periode mana mereka memberikan komitmen mereka.
Saya juga tidak akan segera membuang grafik burndown. Mereka juga dapat berguna bagi tim itu sendiri untuk melihat bagaimana mereka melakukan komitmen mereka. Saya akan menyerahkannya kepada tim untuk memutuskan untuk menyimpan atau menyingkirkan mereka. Hal yang sama berlaku untuk perhitungan kecepatan. terutama dengan variasi besar dalam manhours yang tersedia setiap sprint, mereka dapat terbukti sangat berguna (terutama jika Anda menghitung jumlah poin yang diselesaikan per manhour) dalam memperkirakan sprint mendatang.
Mengenai standup harian, mereka akan tetap berguna dalam pengaturan Anda, jika hanya untuk memberitahukan apa yang dilakukan semua orang atau memiliki masalah dengan (dan itu tidak tergantung pada kompleksitas). Tetapi mungkin lebih sulit untuk mewujudkan standup harian, jadi Anda mungkin perlu berkompromi di sana.
Praktik XP yang Anda sebutkan dapat diperkenalkan atau tidak terlepas dari penggunaan Scrum dan juga dapat diusulkan selama retrospektif.
sumber
Itu mengejutkan saya bahwa tidak ada yang menunjukkannya, tetapi proyek Anda tampaknya seperti kebanyakan proyek open-source. Jika Anda memeriksa beberapa proyek sumber terbuka yang lebih populer, Anda mungkin menemukan beberapa inspirasi. Dan saya pikir Anda harus melupakan SCRUM dan berpikir tentang ini dari perspektif lincah umum.
Agile adalah segalanya tentang komunikasi dan kolaborasi. Ada alasan mengapa ada 2 poin dari 4 dalam Agile Manifesto membicarakannya.
Dan cara Anda menggambarkan proyek Anda, akan sulit untuk memiliki komunikasi tatap muka dengan semua orang yang mengerjakan proyek, sesuatu yang didorong oleh Agile dan SCRUM. Jadi hal pertama yang akan saya fokuskan adalah membangun saluran komunikasi untuk seluruh tim (baik sukarelawan dan komite produk). Hal-hal seperti wiki, forum, konferensi video dan jaminan simpanan, tugas dan sistem pelacakan bug adalah cara yang bagus untuk memastikan semua orang tahu apa yang terjadi dan apa yang perlu dilakukan.
Hal kedua yang saya perhatikan adalah tidak hanya menyisir bagian-bagian teknologi yang gesit. Banyak yang percaya (termasuk saya sendiri) bahwa merekalah yang membuat pekerjaan gesit, bukan sisi proses. Peninjauan kode adalah pekerjaan penting dan sebagian besar sumber terbuka dengan meminta seseorang yang mengetahui proyek tersebut meninjau komitmen / dorongan untuk memastikan kualitas yang cukup tinggi dipertahankan. TDD praktis diberikan untuk setiap proyek gesit. Ini memastikan setiap perubahan pada kode tidak merusak fungsi sebelumnya yang bahkan lebih penting dalam kasus Anda ketika sukarelawan tidak dapat diganggu untuk memperbaiki kesalahan dan kesalahan orang lain. Ini juga membuat peninjauan kode lebih mudah karena peninjau dapat melihat dalam pengujian fungsionalitas apa yang ditambahkan dan dengan menjalankannya ia memastikan fungsionalitas benar-benar berfungsi sebagaimana dimaksud. Integrasi berkelanjutan sama dengan TDD.
Hal terakhir adalah saya percaya Anda harus memiliki setidaknya beberapa orang yang mengerjakan proyek penuh waktu. Orang-orang itu harus memiliki peran spesifik:
sumber
Anda tidak dapat menyesuaikannya dengan cara yang Anda gambarkan dan masih menyebutnya SCRUM. tetapi menurut saya, Anda dapat menggunakan Scrum seperti berikut untuk pengaturan yang telah Anda jelaskan.
sumber
Saya mungkin menyarankan pendekatan yang berbeda. Karena Anda berurusan dengan sukarelawan, Anda memiliki beberapa hal untuk dipertimbangkan. Tim Anda mungkin akan memiliki pergantian yang tinggi, hidup akan menghalangi dan orang-orang akan terganggu. Dari yang tersisa beberapa akan berkontribusi secara konsisten tetapi tidak terlalu banyak, maka terakhir Anda akan memiliki kelompok hardcore yang benar-benar menenggelamkan gigi ke dalam proyek. Saya membuat banyak asumsi tentang tenaga kerja Anda di sini dan jika Anda merasa penilaian saya tidak mencerminkan orang-orang yang bekerja sama dengan Anda, jangan abaikan sisanya.
Sekarang Anda membutuhkan strategi yang akan memungkinkan orang yang tidak melakukan banyak pekerjaan untuk dapat bekerja secara mandiri, mereka hanya punya banyak waktu untuk mendedikasikan ini dan Anda tidak ingin membuat mereka menghabiskan sebagian besar dari itu dalam komunikasi. Orang-orang yang lebih terlibat harus bertanggung jawab untuk integrasi dan mengeluarkan ide-ide yang lebih kompleks.
Ini membuat saya berpikir tentang proses pengembangan yang lebih terfokus pada kerangka dan prototipe kawat.
Anda dapat memiliki kumpulan item pekerjaan yang tersedia dan mendorong orang untuk menulis bingkai kawat untuk itu. Anda dapat menggunakan ini sebagai Pelacak Peluru (istilah yang dipinjam dari programmer Pragmatis) untuk mengasah gagasan dan memberikan inspirasi bagi orang untuk membangun. Dari sana Anda dapat menularkan ide-ide sukses menjadi prototipe, sekali lagi ini adalah proyek yang sangat kecil yang dirancang untuk membantu orang mempelajari lebih lanjut tentang proyek tersebut. Setelah itu, Anda sekarang memiliki bagian kecil dari ide-ide solid yang telah dibangun oleh banyak orang yang dapat Anda serahkan kepada beberapa tim yang sedikit lebih aktif dan mereka dapat bekerja untuk mengintegrasikan ide-ide itu ke dalam sistem Anda.
sumber
Saya pikir Kanban akan lebih cocok untuk situasi ini.
Scrum memiliki beberapa hal yang tidak sesuai. Pengukuran waktu atau ruang lingkup tidak perlu dan setiap orang yang berkembang memiliki visi produk yang sama dari rapat. Akuntabilitas dan mengikuti rencana singkat dengan konsistensi adalah tujuan bisnis.
Kanban menawarkan banyak keuntungan yang sama seperti Scrum tanpa kekurangannya. Ini dapat memberi Anda prototyping cepat. Prototipe dapat dijalankan sebelum pertemuan. Ini juga memberikan TDD untuk kode yang dapat diubah dan tes regresi. Pemrograman pasangan dapat memudahkan pendatang baru dan tidak tetap masuk ke basis kode dengan mentransfer pengetahuan.
Kanban juga memiliki keunggulan unik. Jika visi tentang apa yang dilakukan pengguna dikembangkan secara paralel, Kanban bekerja dengan baik. Bukti itu adalah kesuksesan untuk program bisnis kecil. Juga, untuk hari-hari dengan beberapa sukarelawan seperti tiga orang, Kanban akan tetap bekerja dengan baik. Scrum, meski ringan pasti akan terlalu banyak pita kuning.
sumber