Bagaimana menangani dependensi 'eksternal' dalam scrum?

13

Jika Anda telah merencanakan sejumlah kisah pengguna untuk sprint dan satu kisah calon tergantung pada beberapa penyedia eksternal yang mengirimkan sesuatu kepada tim Anda. Misalnya penyedia layanan online menambahkan panggilan API baru ke sistem mereka atau mengaktifkan akun pengujian Anda di sistem mereka atau semacamnya.

Anda tahu itu akan datang 'segera'.

Apakah Anda melanjutkan dan menambahkan cerita ke sprint berharap mereka akan memberikan apa yang diperlukan pada waktunya bagi Anda untuk menyelesaikan cerita Anda atau apakah Anda menunggu hingga sprint berikutnya, ketika Anda tahu itu akan siap dan Anda dapat mulai segera bahkan jika itu berarti tidak memulai cerita sedini mungkin.

Jika yang pertama bagaimana Anda menangani poin cerita yang 'tidak diterima' hilang karena ketergantungan? kredit sebagian (eek!) atau ambil dagu.

TygerKrash
sumber

Jawaban:

12

Pada akhirnya itu tergantung pada apakah Anda 100% yakin bahwa penyedia eksternal akan memberikan sesuatu yang dapat Anda gunakan pada saat Anda perlu menggunakannya.

Jika Anda tidak dapat memastikan bahwa mereka akan mengirimkan tepat waktu maka jangan tambahkan cerita ke sprint. Namun, hanya karena mereka selalu mengirimkannya di masa lalu, tidak ada jaminan mereka akan mengirimkannya kali ini.

Anda harus memberi tahu pelanggan bahwa ketergantungan ini ada dan bahwa Anda harus menunggu API (atau apa pun) tersedia sebelum Anda dapat menjadwalkan pekerjaan.

Di sisi positifnya, mungkin ada aspek cerita yang bisa Anda sampaikan - yaitu memecahnya lebih jauh sampai Anda mengisolasi ketergantungan sebanyak mungkin. Ini mungkin memungkinkan Anda melakukan beberapa cerita sebelum pemasok memberikan pekerjaan mereka.

Satu hal yang dapat Anda lakukan adalah membuat antarmuka antara kode Anda dan API pihak ketiga. Anda kode ke antarmuka Anda sehingga sisa proyek dapat melanjutkan dan sampai Anda memiliki API nyata menggunakan tiruan untuk mengembalikan data contoh. Kemudian ketika API asli tiba, Anda hanya perlu mengubah kode di belakang antarmuka yang tidak akan memengaruhi aplikasi lainnya. Hanya lakukan ini jika Anda dapat menyetujui dengan pemasok API bahwa antarmuka mereka tidak akan berubah (setidaknya tidak secara drastis).

ChrisF
sumber
Apakah Anda pernah menyarankan 'memalsukan' API jika tidak terlalu banyak masalah?
JeffO
@ Jeffoff - yah itu tergantung. Jika Anda membutuhkan hasil nyata maka itu bisa menjadi masalah dan API telah diketahui berubah.
ChrisF
2
@ Jeffe Saya tidak akan memalsukan API secara terpisah, tetapi Anda bisa melihat tentang menyetujui antarmuka umum yang bisa Anda kode. Bahkan ketika komponen pihak ketiga masuk, melindungi kode Anda agar tidak langsung memanggil mereka bukanlah ide yang buruk.
Adam Lear
Jadi dalam Manajemen Proyek, ini adalah diskusi Risiko.
Jamie Clayton
12

Tim adalah satu-satunya yang membuat komitmen. Di tim kami, jika kami merasa kami sedang menunggu (misalnya) pengembang eksternal, kami telah belajar mengatakan bahwa kami tidak mau mengambil cerita. Kisah ini tidak dalam kondisi sehat untuk diambil.

Ada peluang yang sangat baik bahwa pengiriman yang terlambat, tidak terduga, atau berbeda dari sumber daya eksternal akan berarti perkiraan dan prioritas Anda mungkin berubah.

Sampai Anda memiliki semua info, tim tidak boleh begitu naif untuk berpikir bahwa mereka dapat menyelesaikan cerita. Jika mereka mengatakan mereka bisa, maka itu datang terlambat, dalam format yang diharapkan, atau tidak sama sekali, mereka telah mengecewakan semua orang.

Kedengarannya kasar tetapi saya ingin menyampaikan maksud saya.

Kieren Johnstone
sumber
4

Dalam Scrum ada definisi selesai dan ada definisi siap untuk cerita pengguna. Dalam situasi seperti milik Anda, penting untuk memiliki definisi siap yang dipahami dan disepakati oleh semua pemangku kepentingan. Sebagai contoh tampaknya sangat masuk akal untuk memiliki garis dalam definisi Anda siap seperti:

  • Semua API eksternal yang dibutuhkan untuk cerita harus dikirimkan dan diuji.

Jika Anda membutuhkan API ini untuk menambah nilai pada produk Anda, hal yang logis adalah menunggu sampai kita benar-benar memiliki API ini untuk memulai pekerjaan kami. Sementara itu kita bisa melakukan AS lain yang menambah nilai produk, saya benar-benar tidak suka AS ini dengan implementasi tiruan dan sejenisnya, jika tidak ada nilai nyata bagi pelanggan tidak ada AS, buang-buang waktu dan sumber daya .

AlfredoCasado
sumber
Tidak ada Definisi Siap dalam kerangka kerja Scrum . Ini adalah tambahan, kadang-kadang gerbang fase tradisional, yang digunakan beberapa organisasi.
Alan Larimer
2

Jika Anda menunggu sesuatu yang belum Anda ketahui daripada Anda tidak dapat merencanakannya bahkan jika Anda 100% yakin itu akan dikirim besok. Mengapa? Karena jika Anda tidak mengetahuinya, Anda bahkan tidak dapat memperkirakan kerumitannya dan jika Anda tidak dapat memperkirakannya Anda tidak dapat merencanakannya.

Jika Anda mendefinisikan beberapa "antarmuka" / "kontrak" dimuka yang harus diikuti oleh perusahaan eksternal Anda dapat merencanakannya dan membuat tiruan layanan di sisi Anda. Pengembangan Anda akan menggunakan layanan tiruan sehingga mereka tidak akan bergantung pada pengiriman eksternal. Masih pengembangan dengan mock harus direncanakan untuk sprint di mana layanan nyata akan dikirim karena fitur dikembangkan dan diuji terhadap mock tidak selesai - itu harus diuji dengan layanan nyata untuk dipertimbangkan selesai pada akhir sprint.

Ladislav Mrnka
sumber
2

Komunikasi dan Perjanjian

Dua sistem diintegrasikan oleh programmer, bukan oleh metodologi itu sendiri. Jika perusahaan telah memutuskan untuk mengintegrasikan sistem eksternal, akan ada kontrak antara (minimum) 2 entitas. Kontrak harus memastikan bahwa integrasi terjadi . Konsekuensinya, jika kesepakatan antar perusahaan, tidak memerlukan kolaborasi teknis antara kedua departemen, masalahnya bukan pada metodologi pengembangan. Masalahnya adalah metodologi bisnis (pada dasarnya kontrak) .

Karena itu, itu harus dianggap sebagai risiko selama perencanaan kasus - kasus tersebut dan mempertimbangkan bahwa Anda tidak tahu kecepatan tim, Anda harus bermurah hati dengan margin tersebut.

Bagaimana seorang Manajer Proyek dapat mengelola ketergantungan pada tim eksternal?

/pm/1400/how-can-a-project-manage-manage-a-ddependency-on-an-external-team

marcocs
sumber
1

Jika tidak tergantung pada tim Anda dan Anda dapat melakukan tugas-tugas lain, saya sarankan Anda hanya mengambilnya ketika sudah siap. Sekalipun Anda memiliki layanan web, skema, antarmuka, dan / atau kontrak mockup, itu mungkin masih putus (ingat Hukum Murphy?).

Pedro Polonia
sumber