Bagaimana Anda menjelaskan kepada tim "gesit" bahwa mereka masih perlu merencanakan perangkat lunak yang mereka tulis?

50

Minggu ini di tempat kerja saya merasa gelisah lagi. Setelah melalui kelincahan standar, TDD, kepemilikan bersama, metodologi pengembangan ad hoc untuk tidak pernah merencanakan apa pun di luar beberapa cerita pengguna pada selembar kartu, secara verbal mengunyah bungkam tentang teknikalitas dari integrasi pihak ketiga iklan mual tanpa pernah melakukan sesuatu yang nyata berpikir atau karena ketekunan dan secara arsitektural menggabungkan semua kode produksi dengan pengujian pertama yang muncul di benak siapa pun selama beberapa bulan terakhir kita mencapai akhir siklus rilis dan lihatlah fitur utama yang terlihat secara eksternal yang telah kita kembangkan terlalu lambat untuk gunakan, kereta, menjadi sangat rumit dan benar-benar tidak fleksibel.

Selama proses ini "paku" dilakukan tetapi tidak pernah didokumentasikan dan tidak ada desain arsitektur tunggal yang pernah diproduksi (tidak ada FS, jadi apa-apaan ya, jika Anda tidak tahu apa yang Anda kembangkan, bagaimana Anda bisa merencanakan atau merisetnya ?) - proyek diteruskan dari pasangan ke pasangan, masing-masing hanya berfokus pada satu cerita pengguna pada satu waktu dan hasilnya tidak dapat dihindari.

Untuk mengatasinya, saya pergi dari radar, pergi (yang ditakuti) air terjun, terencana, kode dan pada dasarnya tidak menukar pasangan dan mencoba sebanyak yang saya bisa untuk bekerja sendiri - berfokus pada arsitektur yang solid dan spesifikasi daripada unit test yang akan datang nanti setelah semuanya dijabarkan. Kode sekarang jauh lebih baik dan benar-benar dapat digunakan, fleksibel dan cepat. Orang-orang tertentu tampaknya benar-benar membenci saya melakukan ini dan telah keluar dari jalan mereka untuk menyabot upaya saya (mungkin secara tidak sadar) karena itu bertentangan dengan proses suci tangkas.

Jadi bagaimana Anda, sebagai pengembang, menjelaskan kepada tim bahwa tidak "tidak gesit" untuk merencanakan pekerjaan mereka, dan bagaimana Anda memasukkan perencanaan ke dalam proses tangkas? (Saya tidak berbicara tentang IPM; Saya sedang berbicara tentang duduk dengan masalah dan membuat sketsa desain ujung ke ujung yang mengatakan bagaimana masalah harus diselesaikan secara cukup rinci sehingga siapa pun yang bekerja pada masalah tahu apa arsitektur dan pola yang harus mereka gunakan dan di mana kode baru harus diintegrasikan ke dalam kode yang ada)


sumber
26
Paragraf pertama terdengar seperti kata kasar terhadap gesit. Sisanya masih terdengar seperti kata-kata kasar, hanya terhadap anggota tim Anda yang lain. Anda mungkin ingin parafrase.
1
+1 sangat tertarik pada bagaimana orang memecahkan ini dengan cara pragmatis yang memungkinkan Anda mengambil yang terbaik dari yang ditawarkan air terjun dan lincah. Omong-omong: lincah tidak sama dengan "tidak ada desain", tetapi desain memang cenderung menjadi korban pertama dalam siklus sprint tanpa henti ...
Marjan Venema
5
Yah sampai batas tertentu saya sudah sampai ke leher dengan "gesit". Pada setiap kesempatan lincah tampaknya menghentikan siapa pun dari menulis baris kode yang layak dan semuanya dimulai dengan premis lincah "kita tidak mendokumentasikan," akibat wajarnya adalah "kita tidak merencanakan". Saya tidak ingin membenci gesit, tetapi sejauh yang saya bisa lihat selama itu mendorong orang untuk tidak merencanakan perangkat lunak mereka maka itu adalah kontra terbaik produktif dan paling berbahaya berbahaya.
9
@Marjan Venema - itu adalah keprihatinan saya. Saya yakin bahwa lincah tidak pernah berarti "tidak ada desain" seperti "jangan mengoptimalkan secara prematur" tidak berarti "jangan menulis kode yang efisien". Tetapi itu tampaknya merupakan interpretasi pasar massal terhadapnya. Cara tangkas menekankan komunikasi itu hebat, dan perubahan yang sangat menyegarkan, tetapi bagi saya kelihatannya di dunia yang gesit peranti lunak itu sendiri lebih merupakan renungan.
9
Sudah jelas bahwa Anda frustrasi dengan penerapan prinsip tangkas yang buruk, tetapi ini tampaknya seperti kata-kata kasar yang disamarkan sebagai pertanyaan. Agar lebih jelas: Agile lebih menyukai "menanggapi perubahan setelah mengikuti rencana", yang berarti bahwa "sementara ada nilai dalam item di sebelah kanan , kami lebih menghargai item di sebelah kiri." Sangat mungkin untuk menilai mengikuti rencana terlalu sedikit , yang tampaknya menjadi masalah di sini.
Rein Henrichs

Jawaban:

51

Saya pikir (dan saya mungkin akan mengambil risiko di sini) bahwa SEMUA proyek harus memiliki sedikit air terjun klasik: Analisis awal dan fase spesifikasi sangat penting. Anda harus tahu apa yang Anda lakukan, dan Anda harus memilikinya secara tertulis. Mendapatkan persyaratan secara tertulis itu sulit dan memakan waktu, dan mudah dilakukan dengan buruk. Itulah mengapa begitu banyak orang melewatkannya - alasan apa pun akan berlaku: "Oh, kami gesit sehingga kami tidak perlu melakukan itu." Sekali waktu, sebelum gesit, itu adalah "oh saya benar-benar pintar dan tahu bagaimana menyelesaikan ini, jadi kita tidak perlu melakukan itu." Kata-katanya telah sedikit berubah tetapi lagu itu pada dasarnya sama.

Ini tentu saja semua omong kosong: Anda harus tahu apa yang harus Anda lakukan - dan spesifikasi adalah sarana yang digunakan pengembang dan klien untuk mengkomunikasikan apa yang dimaksudkan.

Setelah Anda tahu apa yang harus Anda lakukan - buat sketsa sebuah arsitektur. Ini adalah bagian "ambil gambar besar dengan benar". Tidak ada solusi ajaib di sini, tidak ada cara yang benar, dan tidak ada metodologi yang akan membantu Anda. Arsitektur adalah SINTESIS dari suatu solusi, dan mereka datang dari jenius yang sebagian diilhami, dan sebagian pengetahuan yang diperoleh dengan susah payah.

Pada setiap langkah ini akan ada iterasi: Anda menemukan sesuatu yang salah atau hilang, dan perbaiki. Itu debugging. Itu hanya dilakukan sebelum kode apa pun ditulis.

Beberapa melihat langkah-langkah ini membosankan, atau tidak diperlukan. Sebenarnya, kedua langkah ini adalah yang paling penting dari semuanya dalam menyelesaikan masalah apa pun - salah paham dan semua yang mengikuti akan salah. Langkah-langkah ini seperti fondasi bangunan: Lakukan kesalahan dan Anda memiliki Menara Miring Pisa.

Setelah Anda memiliki APA (itu spec Anda) dan BAGAIMANA (itulah arsitektur - yang merupakan desain tingkat tinggi) maka Anda memiliki tugas. Biasanya banyak sekali.

Hancurkan tugas-tugas sesuai keinginan Anda, alokasikan sesuai keinginan Anda. Gunakan metodologi apa pun dalam seminggu yang Anda sukai, atau yang cocok untuk Anda. Dan selesaikan tugas-tugas itu, mengetahui ke mana Anda menuju dan apa yang perlu Anda capai.

Sepanjang jalan akan ada jejak palsu, kesalahan, masalah yang ditemukan dengan spesifikasi dan arsitektur. Ini mendorong hal-hal seperti: "Yah, semua perencanaan itu hanya buang-buang waktu." Yang juga banteng. Itu hanya berarti Anda memiliki KURANG kotor untuk berurusan dengan nanti. Ketika Anda menemukan masalah dengan hal-hal awal hari tingkat tinggi, FIX THEM.

(Dan pada masalah sampingan di sini: Ada godaan besar yang telah saya lihat berulang kali untuk mencoba memenuhi spesifikasi yang mahal, sulit, atau bahkan tidak mungkin. Jawaban yang benar adalah dengan bertanya: "Apakah implementasi saya rusak, atau apakah specnya rusak? "Karena jika masalah dapat diselesaikan dengan cepat dan murah dengan mengubah spec, maka itulah yang harus Anda lakukan. Kadang-kadang ini bekerja dengan klien, kadang tidak. Tapi Anda tidak akan tahu apakah Anda jangan tanya.)

Akhirnya - Anda harus menguji. Anda dapat menggunakan TDD atau apa pun yang Anda suka tetapi ini bukan jaminan bahwa pada akhirnya, Anda melakukan apa yang Anda katakan akan Anda lakukan. Ini membantu, tetapi itu tidak menjamin. Jadi, Anda perlu melakukan tes akhir. Itulah sebabnya hal-hal seperti Verifikasi dan Validasi masih menjadi hal besar dalam sebagian besar pendekatan manajemen proyek - baik itu pengembangan perangkat lunak atau pembuatan buldoser.

Ringkasan: Anda membutuhkan semua hal membosankan di muka. Gunakan hal-hal seperti Agile sebagai sarana pengiriman, tetapi Anda tidak dapat menghilangkan pemikiran kuno, menentukan, dan desain arsitektur.

[Apakah Anda serius berharap untuk membangun gedung 25 lantai dengan menempatkan 1000 pekerja di lokasi dan menyuruh mereka membentuk tim untuk melakukan beberapa pekerjaan? Tanpa rencana. Tanpa perhitungan struktural. Tanpa desain atau visi bagaimana tampilan bangunan. Dan dengan hanya mengetahui bahwa itu adalah sebuah hotel. Tidak - tidak juga.]

dengan cepat_now
sumber
11
+1. +10 jika aku bisa. Jika Anda tidak memiliki ide yang baik tentang apa yang Anda akhirnya bangun - yang hanya dapat berasal dari beberapa pekerjaan desain muka, bahkan jika Anda memodifikasi desain itu nanti - maka paradigma pengembangan yang Anda ikuti adalah "membuang omong kosong di dinding dan lihat tongkat apa ".
Semut
5
-1. Saya tidak suka spesifikasi terperinci karena orang / klien berubah pikiran setiap saat, yang membuat spesifikasi dan desain di muka tidak ada gunanya, apalagi boros. Jadi, alih-alih membuang waktu "mengumpulkan persyaratan" dan yang lainnya, Anda harus membuat perangkat lunak yang berfungsi yang Anda tunjukkan kepada klien Anda sesegera mungkin, sehingga Anda bisa mendapatkan umpan balik nyata untuk langkah selanjutnya. Alih-alih membuat tebakan dan spekulasi. Adapun "spesifikasi adalah alat komunikasi": Saya lebih suka berbicara dengan klien saya dan bekerja secara iteratif, tapi hei, masing-masing menurut saya sendiri.
Martin Wickman
6
+1. +10 jika saya bisa memberi +1. Saya seorang pengisap total untuk perangkat lunak bangunan seperti membangun analogi bangunan karena memang demikian adanya. Ya perangkat lunak tidak fisik, ya dilakukan dengan benar itu bisa sangat modular dan dipisahkan. Tetapi membuatnya sangat modular dan terpisah sangat sulit; itulah yang membutuhkan waktu dan perencanaan. Saya menyadari bahwa akan selalu ada dua kubu dalam rekayasa perangkat lunak: mereka yang berpikir perencanaan adalah buang-buang waktu dan mereka yang tidak. Dan Anda tahu saya juga menyadari bahwa orang-orang tidak mengubah kamp, ​​yah tidak juga. Saya telah bekerja di lingkungan yang sangat terencana dan ...
6
Saya SETUJU dengan Anda, tetapi apa yang Anda gambarkan benar-benar gesit. Agile mengatakan "tidak ada desain besar di muka", bukan "tidak ada desain". Ini dikatakan sebagai tanggapan terhadap proyek raksasa waterfall raksasa perusahaan kaku dahulu kala. Bukan sebagai alasan untuk tidak merancang dan menemukan arsitektur yang baik untuk kode Anda. Intinya adalah untuk tidak menghabiskan minggu atau bulan melakukan SEMUA desain sebelum Anda mulai coding, karena Anda merancang AKAN salah, dan semakin jauh Anda perhatikan dan memperbaikinya, semakin baik. Dapatkan umpan balik cepat, beralih, tingkatkan, dll.
sara
5
Kai - Saya melihat Agile digunakan sebagai alasan untuk tidak melakukan spesifikasi, tidak ada perencanaan, hanya menyelam. Dan itu benar-benar salah.
cepat_now
36

Saya masih kagum bahwa banyak orang berpikir bahwa TDD berarti menulis unit test terlebih dahulu. Tidak, itu berarti menulis tes yang Anda perlukan sebelum menulis kode. Tes ini sebenarnya dapat berupa tes unit, uji integrasi, uji end-to-end dan tentu saja tes kinerja (well, Anda mungkin tidak akan menulis tes kinerja sebelum kode diuji tetapi itu tidak berarti Anda tidak boleh menulisnya sama sekali). Jenis tes yang dibutuhkan harus terlihat dari definisi yang dilakukan untuk cerita pengguna. Jika salah satu kriteria penerimaan untuk cerita pengguna mengatakan bahwa fitur harus memberikan hasil dalam 500ms dengan 50 pengguna bersamaan maka cerita pengguna tidak dapat dianggap selesai sampai Anda memiliki tes kinerja yang akan membuktikan bahwa kriteria penerimaan ini dipenuhi. Setelah Anda memiliki tes otomatis, Anda dapat memeriksa setiap hari bahwa itu lulus saat Anda menambahkan fitur lainnya.

Ini lebih terdengar seperti kriteria penerimaan Anda tidak didefinisikan dengan benar dan karena itu Anda tidak dapat menguji kinerja Anda. Masih bisa terjadi bahwa aplikasi berkinerja buruk setelah Anda menyebarkannya ke lingkungan nyata dan menggunakannya di bawah beban berat tetapi itu selalu dapat dianggap sebagai kegagalan persyaratan (jika persyaratan tidak didefinisikan, pengembang tidak mempertimbangkannya ketika bekerja pada kode) atau tim pengembangan (pengujian tidak memadai terhadap persyaratan yang ditentukan).

Hal lain yang menarik adalah bahwa pengembang di tim Anda berfokus pada cerita pengguna tunggal. Agile adalah tentang komunikasi sehingga pengembang harus mengomunikasikan apa yang dibutuhkan cerita pengguna dan bagaimana hal itu memengaruhi aplikasi lainnya - kolaborasi adalah suatu keharusan. Tes harus mencakup hal itu juga sehingga jika satu pengembang merusak fungsionalitas yang diperlukan untuk cerita pengguna lain, itu harus terlihat dalam pengujian otomatis. Jika Anda masih merasa itu tidak cukup atau tidak berhasil, Anda bisa memperkenalkan pertemuan arsitektur di mana seluruh tim bekerja sama dan membahas arsitektur aplikasi. Biasanya cukup untuk mengadakan pertemuan sekali seminggu.

Banyak hal dari proses air terjun diganti dengan komunikasi dan tes otomatis. Tidak ada yang mengatakan bahwa Anda tidak dapat menulis dokumentasi atau desain tingkat tinggi! Anda dapat dan banyak tim menggunakan misalnya Wiki untuk itu.

Ladislav Mrnka
sumber
7
+1 jawaban bagus. Kisahnya adalah tujuannya - itu adalah puncak gunung es, tempat untuk percakapan masa depan, langkah pertama dalam perjalanan; itu bukan seluruh perjalanan! Deskripsi tes adalah persyaratan, kasus penggunaan, dan kriteria penerimaan digabungkan. Desain tidak diabaikan, desain terbatas pada cerita dan tes, tetapi lakukan desain sebanyak yang Anda butuhkan . Siapa pun yang melewatkan desain dan mengklaim bahwa itu adalah cara lincah yang tidak mengerti (baca buku XP lagi), tidak mau (pengodean kode yee-haw!), Atau hanya malas . Dan memberi Agile nama yang buruk.
Steven A. Lowe
16

[Produk kami] terlalu lambat untuk digunakan, kereta, menjadi sangat rumit dan benar-benar tidak fleksibel.

Itu tidak ada hubungannya dengan lincah, itu pertanda programmer tidak melakukan pekerjaan mereka dengan benar.

Satu ide dasar tangkas adalah bahwa tim memiliki kontrol penuh atas proses. Itu berarti mereka harus menyetujui jumlah perencanaan, dokumentasi, pengujian dan bagaimana mereka berurusan dengan refactoring. Semua kekuatan itu hebat, tetapi itu juga datang dengan tanggung jawab dan ini mungkin di mana tim Anda gagal. Mereka menerima kebebasan mereka, tetapi mengabaikan tanggung jawab mereka.

Pada akhirnya itu hanya masalah menjelaskan tentang kualitas kode dan mencoba menyepakati cara untuk meningkatkan dan mempertahankannya. Praktek pemrograman normal berlaku, sungguh.

Kiat pro: gunakan "Definisi Selesai" Anda untuk menegakkan ini. Pastikan semua orang menyetujuinya dan letakkan itu terlihat untuk semua orang. Gunakan itu sebagai penjaga gerbang yang ketat untuk memutuskan apakah sebuah cerita selesai atau tidak. Bahkan mungkin untuk menambahkan persyaratan non-fungsional (seperti kinerja) ke daftar itu juga.

Martin Wickman
sumber
1
"Mereka menerima kebebasan mereka, tetapi mengabaikan tanggung jawab mereka" mungkin seharusnya sebuah spanduk di dinding lincah "Apakah Anda menerima Tanggung Jawab Anda bersama dengan Kebebasan Anda?"
Andy Dent
Jawaban yang bagus, bolehkah saya menyarankan menambahkan bahwa ketika Anda menggunakan DoD sebagai kontrak dengan cara ini, itu juga menjadi pusat retrospektif? Bagaimana DoD ini membantu atau menghambat kami dalam menambah nilai bagi pelanggan kami?
Graham Lee
11

Ya. Rekan tim Anda adalah idiot. Proyek Anda tersedot karena Agile. Merasa lebih baik? Oke, mari kita lanjutkan. : P

Saya pikir Anda dan tim Anda akan dapat berkomunikasi dengan lebih efektif tentang apa yang salah jika Anda kurang berkonsentrasi pada nama-nama Metodologi M Anda dan lebih banyak tentang mengapa perangkat lunak yang Anda tulis begitu lambat dan bermasalah. Jangan gunakan istilah Agile atau air terjun sama sekali. Mereka jelas dimuat secara emosional di kantor Anda.

Agile terkadang bekerja. Tidak berhasil untuk tim Anda saat ini. Beberapa orang akan mengatakan itu karena Anda salah Agile. Lagipula, Agile bekerja, jadi jika Anda melakukannya dengan benar itu akan berhasil, bukan? Masa bodo.

Kedengarannya tidak ada yang tidak setuju ada kegagalan, tetapi Anda tidak akan memenangkan teman, memengaruhi orang, atau melakukan yang lebih baik lain kali jika Anda menyalahkan metodologi. Itu mungkin tidak ada hubungannya dengan apa yang sebenarnya salah.

Alih-alih, berkonsentrasilah pada menjabarkan penyebab paling langsung dari kegagalan dan bekerja bersama tim untuk memastikan mereka tidak terjadi lagi. Ini akan membutuhkan keterampilan orang.

Berbicara tentang keterampilan orang, Anda tidak perlu terkejut bahwa tim Anda tidak menghargai Anda membuat mereka terlihat buruk dengan melakukan semua pekerjaan mereka dan melakukannya lebih baik daripada yang mereka lakukan. Dengan melakukan ini "di bawah radar" Anda mungkin telah merusak beberapa hubungan sekarang Anda harus membangun kembali untuk menjadi anggota tim yang efektif.

Saya pikir cara terbaik untuk melihat situasi seperti ini adalah dengan mempertimbangkan hasil total jangka panjang tim secara keseluruhan. Anda mungkin telah menghemat minggu ini, tetapi Anda mungkin telah melakukan yang lebih baik dalam jangka panjang untuk perusahaan Anda dengan membangun tim yang lebih baik .

Saya mengatakan semua hal ini kepada Anda, tetapi saya pikir Anda mungkin sudah tahu sebagian besar dari mereka dan bisa menjelaskannya kepada orang lain jika Anda tidak begitu dekat dengan situasi ini.

PeterAllenWebb
sumber
9

Jika Anda ingin menambahkan kutipan tipis ke diskusi Anda, Eisenhower punya yang bagus:

"Rencana bukan apa-apa; perencanaan adalah segalanya."

http://www.brainyquote.com/quotes/quotes/d/dwightdei149111.html

Maksudnya Anda harus berharap untuk mengubah rencana Anda, jadi jangan terlalu banyak memberi nilai pada rencana itu sebagaimana adanya, tetapi pada saat yang sama proses perencanaan akan dengan tajam memfokuskan energi Anda dengan cara yang krusial. Anda harus membuat rencana sebelum dapat mengujinya dan memperbaikinya.

jhocking
sumber
9

+1 Ini adalah deskripsi terbaik tentang gesit perusahaan yang saya baca baru-baru ini.

Setiap orang yang bergaul dengan gesit menunjukkan bahwa hal itu tidak pernah dimaksudkan untuk ini, tetapi begitu semua orang terjebak dalam metrik, inilah yang Anda dapatkan dari tim yang tidak memiliki hasrat tentang kualitas produk dan keduanya terobsesi dengan menguji cakupan di atas segalanya atau dengan memenuhi tenggat waktu mingguan yang dapat diberikan, terlepas dari sudut mana mereka telah memasukkan orang lain karena hanya itu yang membuatnya hingga ke tingkat manajemen setiap minggu.

Saya belum pernah melihat ini diperbaiki dengan sesuatu yang kurang dari re-org. Jika Anda adalah perusahaan kelas menengah dengan tidak ada yang istimewa untuk menarik orang-orang yang sangat bersemangat maka bahkan itu tidak akan memperbaikinya kecuali manajemen berikutnya kadang-kadang mengubah metodologi.

Agile hanya bekerja dengan baik di organisasi org dimana tim pengembang cukup peduli untuk membuat produk yang bagus meskipun ada pekerjaan tambahan tanpa akreditasi yang diperlukan. Secara efektif mereka harus cukup peduli untuk menjadikannya baik pada waktu mereka sendiri, berjuang untuk perbaikan (dan bersedia membakar banyak waktu tambahan untuk mengulangi tes dalam beberapa kasus TDD)

Anda jelas-jelas peduli tentang pengiriman produk yang bagus, mereka jelas-jelas peduli untuk melakukan serangkaian gerakan dan menerima gaji untuk terus membersihkan kekacauan yang mereka buat.

Saya akan mencari pekerjaan yang kurang menjengkelkan di tempat lain apakah itu gesit atau tidak.

Jika Anda benar-benar terbakar pada gesit ada banyak tempat yang masih melakukan metodologi lain. Hampir semua yang ada dalam penawaran atau kontrak misalnya.

Tagihan
sumber
1
Itu sebenarnya definisi terburuk dari gesit yang saya baca. Pengembang tidak perlu melakukan pekerjaan ekstra dan tidak terakreditasi. Juga, hanya idiot yang bekerja di waktu mereka sendiri. Waktu yang dihabiskan untuk menguji kode adalah waktu yang diinvestasikan dengan baik.
BЈовић
Tidak bisa setuju lagi, Agile, ketika berubah menjadi binatang buas yang sering menjadi birokrasi tingkat perusahaan adalah yang paling gesit mungkin. Dalam lingkungan non-perusahaan lain yang berwarna pita tim hanya akan melakukan hal-hal itu baik sebagai cerita, atau sebelum berkomitmen untuk cerita. Ketika Agile menjadi indikator metrik perusahaan, fleksibilitas biasanya merupakan hal pertama yang harus dilakukan.
Bill
4

Saya cenderung menggunakan semacam hibrida. Rencana keseluruhan adalah air terjun, tetapi ada tangkas dalam eksekusi.

Dugaan saya adalah bahwa jika situasinya seburuk yang Anda katakan, tim Anda tidak benar-benar menggunakan gesit, mereka hanya menjadi malas atau tidak disiplin. Agile bukan tentang tidak merencanakan, ini hanya tentang menjadi fleksibel, dan, yah, tangkas.

richard
sumber
Saya cenderung berpikir itu juga. Saya yakin bahwa lincah yang sebenarnya bukan tentang tidak merencanakan, hanya saja itu adalah salah satu interpretasinya.
Ada dunia perbedaan antara modal- "A" Agile dan huruf kecil- "a" lincah.
Aaronaught
Pssst ... jangan beri tahu orang yang gesit, karena begitulah hampir semua orang terjun melakukannya karena berfungsi. Mereka masih percaya bahwa SEMUA pengembang air terjun membangun dokumen monolitik tanpa menulis kode apa pun sampai akhir dan pada setiap langkah semuanya salah karena tidak ada implementasi.
Dunk
4

Kami memiliki masalah yang sama dengan beberapa staf.

Pada dasarnya "Saya tidak tahu sampai saya menulisnya" adalah pernyataan favorit. Jadi kami pergi sebaliknya, kami bekerja dengan klien untuk menentukan kiriman dengan poin sign off. Yang terakhir adalah "sekarang tulis kode untuk melakukan X".

Jika kita memiliki "tulis desain / pengujian / rencana dll" dalam sprint yang sama seperti "lakukan kode yang menyenangkan dan menarik" maka bagian pertama tidak pernah terjadi ...

TETAPI jika saya menempatkan "Anda tidak bisa melakukan kode yang menyenangkan dan menarik sampai Anda mengatakan apa yang akan Anda buat dan klien telah keluar" kemudian

  • Anda pertama-tama mendapatkan penerimaan yang menggerutu, dan beberapa air mata dan saya harus melakukan banyak pekerjaan mengisi kekosongan dan usaha ekstra ...
  • maka Anda mendapatkan pengakuan fajar ketika Anda bertanya kepada mereka "jadi bagaimana prosesnya" yang lebih baik untuk mencoba versi pertama di atas kertas
  • maka Anda memiliki kasus uji yang dapat dilihat oleh pengembang, dan Anda dapat menunjukkan dengan tepat apa yang diharapkan dari "apa yang dilakukan".
  • maka klien yang keluar dari pengembangan memiliki tingkat penolakan 80% lebih sedikit ...
  • ditambah Anda menyaksikan semua pengembang berjalan memegang dokumen desain dan berbicara satu sama lain di atas desain ... mereka mulai benar-benar mendapatkannya.
  • Kemudian Anda mencari cara untuk memecah rencana proyek menjadi potongan-potongan berukuran gigitan dan membuat proses keluar dari itu.

Bagian tangkas datang ketika klien kemudian berubah dari rencana dan Anda dapat beradaptasi dalam siklus 2 minggu TIDAK terbang di kursi celana Anda dan menebusnya sepanjang jalan.

Dalam kasus kami, "desain besar muka" dipecah menjadi 9 tahap (rilis produksi aktual) dengan rata-rata 5 subtasi. Para perancang dan pengembang berpacu satu sama lain, perancang menjadi 1-3 substage di depan para pengembang ... terlalu jauh dan penemuan dalam pengembangan terlalu banyak merusak desain, terlalu dekat dan menyesuaikan untuk mendesain biaya terlalu banyak seperti sebelumnya. sudah menerapkan "set in stone" dalam pengembangan. Setiap subtase bernilai 2-4 sprint untuk 1 pengembang.

Dalam proyek yang lebih kecil, kami hanya meminta pengembang yang sama mendesain terlebih dahulu> keluar> faktur> kembangkan> keluar> faktur ... dalam siklus.

Masalah penamaan tes

Pengujian memiliki banyak wajah, secara resmi ada sekitar 7 kategori tes masing-masing dengan sub bagian ... salah satunya adalah "menulis tes unit otomatis".

Itu nama yang buruk untuk memiliki "tes pengembangan pertama" murni karena pengembang memahami tentang apa "tes" artinya dalam konteks ini mereka melihat tes sebagai menulis kode aktual untuk pengujian terhadap antarmuka untuk implementasi. Ketika itu tidak benar-benar sama sekali ... Anda dapat melakukan ini ketika menulis kode tetapi benar-benar "memvalidasi desain terhadap kasus penggunaan dan cerita pengguna SEBELUM mulai menulis kode" ... dilakukan dengan benar ini menghapus banyak dari masalah yang biasanya ditemukan selama pengembangan sementara masih dalam versi "kertas yang dapat dibuang" jauh lebih murah.

Robin Vessey
sumber
3

Salah satu elemen kunci dari Agile adalah ide perbaikan berkelanjutan, dan gagasan bahwa seluruh tim memiliki proyek. Jadi pendekatan yang benar adalah dengan meninjau masalah dengan tim, dan meminta tim memutuskan bagaimana cara memperbaikinya.

Salah satu anggota tim pergi sendiri, mengabaikan semua prinsip Agile dan melakukan hal-hal dengan caranya sendiri dapat menghasilkan sejumlah kecil kode yang bekerja dengan baik tetapi tidak benar-benar memajukan seluruh proyek dengan cara yang positif.

Dave
sumber
Suara saya seperti memajukan proyek ini adalah tepat apa itu lakukan. "Ulasan dengan tim" sebenarnya bukanlah solusi, itu hanya cara menunda solusi dan menyebarkan tanggung jawab.
Aaronaught
Tim sudah bertanggung jawab atas hasilnya. Yang mereka butuhkan adalah seseorang berkata, "Kami mengacaukan, bagaimana kami mengubah metodologi kami?" Lalu mereka memperbaikinya.
Dave
2
Saya mendapat kesan bahwa apa yang dibutuhkan oleh tim khusus ini adalah bagi para anggotanya untuk belajar bagaimana berpikir untuk diri mereka sendiri daripada mengikuti secara membabi buta proses yang tidak mereka pahami. Berbicara tidak akan menghasilkan apa-apa jika sudah menjadi ruang gema.
Aaronaught
2

Salah satu cara untuk membuatnya bekerja adalah dengan membuat T-Map yang mencakup semua sprint back-log Anda

Peta-T

Setiap tim memiliki utas, masing-masing sprint adalah titik. Itu semua terkait bersama (di situlah tim Anda tampaknya jatuh). Sematkan ini di suatu tempat, dan dapatkan magnet untuk mewakili pasangan / subteam. Mereka bahkan bisa 'berlomba'. Tetapi semua orang tahu di mana mereka dan tim lain berada. Letakkan dependancies di sini jika ada.

Intinya di sini adalah Anda menyampaikan proses total tetapi juga memecahnya menjadi sprint. Bahkan jika hanya sprint pertama yang diletakkan di sana, dan periode lainnya kosong, ini harus menjadi peta jalan yang sangat baik untuk menyelesaikan proyek.

Pureferret
sumber
1

Anda memiliki dua masalah: bentuk yang tidak memadai pada persyaratan dan arsitektur yang buruk.

Persyaratan

Anda membutuhkan tujuan akhir keseluruhan dan peta jalan terperinci tentang cara menuju ke sana.

Di dunia air terjun, tujuan akhirnya adalah spesifikasi fungsional, dan peta jalan bagaimana menuju ke sana adalah rencana proyek.

Dalam dunia gesit, salah satu caranya adalah menangkapnya dalam kisah pengguna epik. Kemudian roadmap adalah kisah pengguna yang mendetail yang menyempurnakan detail epik.

Saya tidak pernah benar-benar senang dengan cerita itu, karena kisah epik tidak pernah menangkap cukup daging untuk menyampaikan gagasan lengkap. Jadi apa yang saya cenderung gunakan adalah dokumen persyaratan sistem tingkat tinggi bersama dengan satu atau dua kisah pengguna epik. Setelah itu, roadmap adalah kisah pengguna yang terperinci.

Yang menyenangkan tentang memiliki dokumen persyaratan sistem adalah bahwa kemudian kriteria penerimaan untuk banyak cerita pengguna dapat ditarik keluar.

Pikirkan dokumen persyaratan sistem tingkat tinggi sebagai "lembar potong" yang mungkin digunakan pemasaran untuk menjual produk kepada pelanggan yang mengerti teknis.

Arsitektur

Salah satu hal yang "potong lembar" memberi Anda adalah itu menempatkan batas pada sistem yang Anda desain. Itu memungkinkan Anda membuat keputusan, sejak awal, tentang arsitektur yang akan digunakan.

Jika tim Anda memiliki dokumen seperti itu sejak awal, Anda tidak harus melalui kesulitan merancang ulang sistem nanti.


Sebenarnya, masalah ketiga yang Anda miliki adalah komunikasi yang buruk. Komunikasi adalah jalan dua arah (atau multi arah antara banyak orang). Namun, itu hanyalah kegagalan manusia dan (kadang-kadang) upaya manusia super untuk menjadi benar.

Peter K.
sumber