Bagaimana kita bisa membuat gesit menyenangkan bagi pengembang yang suka secara pribadi, secara mandiri memiliki potongan besar dari awal hingga akhir


52

Kami kira-kira tengah melalui transisi kami dari air terjun ke tangkas menggunakan scrum; kami telah berubah dari tim besar dalam silo teknologi / disiplin menjadi tim lintas fungsi yang lebih kecil.

Seperti yang diharapkan, perubahan menjadi gesit tidak cocok untuk semua orang. Ada beberapa pengembang yang mengalami kesulitan menyesuaikan diri dengan gesit. Saya benar-benar ingin membuat mereka tetap terlibat dan tertantang, dan pada akhirnya menikmati datang bekerja setiap hari. Mereka adalah orang-orang yang cerdas, bahagia, dan termotivasi yang saya hormati pada tingkat pribadi dan profesional.

Masalah mendasarnya adalah ini: Beberapa pengembang terutama dimotivasi oleh kegembiraan karena mengambil bagian dari pekerjaan yang sulit, memikirkan desain, memikirkan masalah potensial, kemudian memecahkan masalah sepotong demi sepotong, dengan hanya interaksi minimal dengan yang lain, selama perpanjangan periode waktu. Mereka umumnya menyelesaikan pekerjaan dengan tingkat kualitas tinggi dan tepat waktu; pekerjaan mereka dapat dipelihara dan cocok dengan arsitektur keseluruhan. Transisi ke tim lintas-fungsional yang menghargai interaksi dan tanggung jawab bersama untuk pekerjaan, dan pengiriman fungsionalitas kerja dalam interval yang lebih pendek, tim berevolusi sedemikian rupa sehingga seluruh tim mengetuk masalah yang sulit diselesaikan. Banyak orang menganggap ini sebagai perubahan positif; seseorang yang suka mengambil masalah dan mengatasinya secara mandiri dari awal hingga akhir kehilangan kesempatan untuk bekerja seperti itu.

Ini bukan masalah dengan orang yang terbuka untuk berubah. Tentu saja kita telah melihat beberapa orang yang tidak suka perubahan, tetapi dalam kasus yang saya khawatirkan, individu-individu adalah pemain yang baik, benar-benar terbuka untuk berubah, mereka berusaha, mereka melihat bagaimana anggota tim lainnya berubah dan mereka ingin menyesuaikan diri. Ini bukan kasus seseorang yang sulit atau obstruksionis, atau ingin menimbun karya yang paling menarik. Mereka hanya tidak menemukan kesenangan dalam pekerjaan seperti dulu.

Saya yakin kita tidak bisa menjadi satu-satunya tempat yang belum membahas ini. Bagaimana orang lain mendekati ini? Jika Anda seorang pengembang yang termotivasi dengan secara pribadi memiliki sejumlah besar pekerjaan dari ujung ke ujung, dan Anda telah menyesuaikan diri dengan cara kerja yang berbeda, apa manfaatnya bagi Anda?


7
There’s a great story of a manager of a Coca-Cola plant whose numbers were far better than his peers. When asked what his “secret” was, he said simply that rather than take a best practice and modify it to meet what the plant did, he instead modified the plant to match the best practice.Anda tidak melakukan kelincahan sampai Anda mengerti mengapa Anda melakukannya.
Tidak ada yang

Tunjukkan pada mereka bahwa kolaborasi itu lebih menyenangkan, karena dengan begitu mereka akan menulis kode yang lebih baik, belajar lebih banyak dan memiliki lebih sedikit masalah.

Meskipun detailnya khusus untuk pemrograman, ini adalah masalah umum di tempat kerja dalam mengelola perubahan dan akan lebih baik ditanyakan di tempat kerja.
mattnz

FYI, selain tanggapan di bawah ini, hal lain yang perlu diingat adalah lincah tidak berarti Anda tidak dapat mengirim Facebook atau WhatsApp. Ini berarti "bagaimana" yang Anda kirim berbeda, tetapi individu dapat memiliki bagian yang besar. Misalnya, dalam satu kasus, saya memiliki sistem penyebaran yang besar, dan tonggak sejarah kapal kami adalah setiap dua minggu. Pengiriman dan proses seharusnya tidak berdampak pada desain fitur, pengembangan dan pelepasan, dll. (Kecuali tentu saja, mekanika).
Omer Iqbal

Jawaban:


22

Saya akan mengatakan bahwa ada sangat sedikit toko perangkat lunak yang cukup beruntung untuk memiliki perbedaan langka di mana Agile benar-benar tidak masuk akal sebagai metodologi. Jika seluruh tim Anda terdiri dari pengembang perangkat lunak yang benar-benar luar biasa dengan pemahaman mendalam tentang aspek bisnis dan umur panjang dengan perusahaan dan satu sama lain, dan jika persyaratan bisnis dan kebutuhan klien Anda biasanya selalu sama dan jarang mengalami perubahan di tengah-tengah lepaskan maka Anda beruntung bisa bekerja di lingkungan yang langka di mana Agile mungkin benar-benar SAKIT.

Ini dirancang untuk menjadi pendekatan yang paling efektif di tengah-tengah kebutuhan bisnis dan pelanggan yang kacau dan terus berubah, berevolusi atau mengubah sumber daya proyek, dan tenggat waktu yang ketat atau bergeser. Lingkungan seperti itu menguraikan malapetaka tertentu untuk pengembangan air terjun yang khas karena rentan terhadap perubahan tim pada pertengahan proyek, rentan terhadap perubahan persyaratan, dan sangat rentan terhadap perubahan tanggal.

Saya merasakan anggota tim Anda yang berharga yang tidak lagi menemukan sukacita dalam pekerjaan mereka. Mereka sangat baik mungkin orang-orang yang sangat berbakat yang memikat diri mereka dalam pekerjaan mereka tetapi pada akhirnya, sejumlah faktor di luar kendali terbaik mereka masih dapat membunuh proyek. Cara terbaik untuk mendekati pengembangan fitur adalah mereka kehilangan sikap dan ekspresi individu dan berpikir dalam hal pendekatan tim.

Jika Anda menemukan bahwa ini tidak berfungsi untuk mereka maka Anda dapat menemukan penggunaan khusus untuk mereka. Jika mereka sangat berbakat dan berpengalaman, lihat apakah mereka akan tertarik pada peran arsitektur, meletakkan desain tingkat tinggi, pendekatan, bereksperimen dengan teknologi baru dan mengembangkan praktik terbaik. Mintalah orang-orang ini mengendalikan dan meninjau dokumentasi desain.

Jika ini masih tidak sesuai dengan mereka maka mungkin mereka bekerja secara terpisah pada refactoring teknis yang sangat kompleks pada cabang terpisah, sangat melibatkan prototipe dan bukti konsep, atau pekerjaan perintis lainnya yang kadang-kadang perlu dilakukan tetapi tidak cocok di ruang lingkup satu proyek atau rilis.


Terima kasih atas jawaban anda. Saya pikir dalam setidaknya satu kasus kami tertarik pada saran terakhir Anda ketika kami bisa. Kita harus berpikir tentang bagaimana proyek yang dilakukan sendiri oleh satu orang tidak menggagalkan banyak kepemilikan komunitas yang telah kita kembangkan, tetapi tampaknya itu sepadan.
Kris

4
Jika Anda akan melakukan itu dengan beberapa orang maka perhatikan bagaimana itu mempengaruhi moral orang lain yang benar-benar melakukan pekerjaan proyek. Mereka mungkin merasa Anda memberikan keuntungan khusus atau perlakuan istimewa kepada orang yang mengeluh.
maple_shaft

Selain itu, berhati-hatilah untuk membuat semua orang terlibat dan berkomunikasi satu sama lain, bahkan jika beberapa anggota bekerja di trailblazing. Contoh: semua orang menghadiri rapat harian dan perencanaan; trailblazers harus memberikan gambaran tentang pekerjaan mereka dan mendemonstrasikan hasil mereka secara teratur (mungkin kurang sering daripada tim Agile, tetapi masih dua mingguan atau bulanan), menjaga agar tim lead mendapatkan informasi tentang hambatan yang dilihat oleh trailblazer (sehingga yang terakhir tidak t terus mengejar jalan buntu). Penafian: Saya orang yang persis seperti ini dan saya pikir itu bisa bekerja dengan sangat baik.
rwong

1
Di sisi lain, jika tenaga kerja pengembangan perusahaan terutama terdiri dari perintis jalan, dan itu adalah konsensus mereka bahwa mereka tidak akan beradaptasi dengan gaya pengembangan Agile, maka mungkin tenaga kerja ini akan mengalami banyak kesulitan mengadopsi praktik pengembangan Agile. Pendekatan lain perlu dicari. Karena trailblazers suka bereksperimen , karyawan baru perlu didatangkan untuk mengurus kebutuhan produksi sehingga perusahaan dapat memonetisasi R&D-nya.
rwong

44

Mereka hanya tidak menemukan kesenangan dalam pekerjaan seperti dulu.

Benar.

Itu adalah gejala besar bahwa Anda salah melakukannya.

Agile seharusnya tidak memaksakan orde baru yang buruk pada orang.

Agile harus mengizinkan tim untuk mengatur diri sendiri dengan cara yang membuatnya paling efektif.

Organisasi mandiri berarti manajemen tidak memaksakan aturan aneh. Itu tidak memaksakan jadwal yang buruk dan itu tidak memaksakan interaksi yang tidak perlu.

Beberapa pengembang terutama dimotivasi oleh kegembiraan karena mengambil bagian dari pekerjaan yang sulit, memikirkan desain, memikirkan masalah potensial, kemudian memecahkan masalah sepotong demi sepotong, dengan interaksi minimal dengan yang lain, selama periode waktu yang panjang

Mengapa mereka tidak bisa terus melakukan ini?

Mengapa mengubahnya?

Baca Manifesto Agile beberapa kali.

Manifesto Agile berkata

Individu dan interaksi atas proses dan alat

Tidak dikatakan memaksa orang untuk bekerja dengan cara yang tidak nyaman dan tidak produktif.

Jika Anda memaksa orang terlalu banyak "interaksi" bernilai rendah, maka Anda sudah melangkah terlalu jauh.

Bekerja dengan perangkat lunak melalui dokumentasi yang komprehensif.

Apakah mereka melakukan ini? Kemudian tinggalkan mereka sendiri.

Kolaborasi pelanggan atas negosiasi kontrak.

Apakah kamu sudah melakukan ini? Maka jangan berubah.

Menanggapi perubahan setelah mengikuti rencana.

Di mana orang-orang ini sudah bisa merespons perubahan? Jika demikian, maka mereka sudah tangkas. Mereka tidak perlu berubah.


Saya benar-benar yakin kami melakukan beberapa hal yang salah. Kami tidak menganggap gesit sebagai seperangkat aturan yang harus Anda terapkan dengan cara tertentu untuk menjadi benar. Kami telah membuat keputusan untuk menyingkirkan batasan-batasan tertentu yang dulu kami miliki, dan telah melakukan segala daya kami untuk menyatukan tim, memberi mereka pekerjaan untuk dilakukan, memberi mereka beberapa batasan untuk bekerja di dalam, dan membiarkan mereka sendirian untuk melakukannya. Tentu saja ada kendala yang harus kita tangani; misalnya, tim yang menghasilkan materi yang bergantung pada tim lain. Sebisa mungkin, kami membuat masalah seperti ini untuk diselesaikan oleh tim. ...
Kris

Kami tidak berharap untuk meletakkan pena kami suatu hari nanti dan berkata "yay, transisi kami selesai, kami bekerja seperti ini sekarang", karena kami berharap itu berkembang selamanya. Dalam setiap kasus di mana pengembang berjuang untuk menikmati pekerjaan, mereka dikelilingi oleh orang lain yang sekarang lebih menikmati pekerjaan. Tim diberdayakan untuk menyelesaikan masalah sendiri, mengatur diri sendiri untuk menyelesaikan masalah dengan cara yang menurut mereka terbaik. Sungguh luar biasa melihat bagaimana orang bereaksi terhadap ini. "Kita tidak bisa gesit! Itu berarti kita harus berinvestasi selama ini untuk menjadi bla, dan mendapatkan bla yang beres, dan itu akan menghabiskan biaya!" "Ya? Oke, lakukan saja." ...
Kris

1
@Kris: "kadang-kadang individu dalam tim tidak lagi merasa dihargai dengan cara yang biasa mereka lakukan". Benar. Itu karena banyak hal telah berubah. Anda mungkin ingin mempertimbangkan bahwa penjelasan panjang kepada saya (orang asing) mungkin tidak membantu seperti diskusi panjang dan mendalam dengan orang-orang yang sebenarnya memiliki masalah yang sebenarnya. "Individu dan interaksi atas proses dan alat". Bicaralah pada mereka. Apa yang tidak mereka sukai? Perbaiki apa yang ingin diperbaiki. Jika mereka ingin menghapus "Agile", maka lanjutkan dengan Agile dan buat mereka menghasilkan jadwal yang ketat. Terus mengizinkan perubahan pada jadwal.
S.Lott

1
@ Kris: "mereka tidak melihat bahwa itu perlu diperbaiki. Mereka mungkin tidak melihat tempat mereka di dalamnya lagi". Itu bertentangan. Itu kedengarannya seperti dua monolog paralel: mereka memiliki masalah serius dan manajemen mengatakan kepada mereka bahwa keluhan mereka tidak sesuai dengan tujuan organisasi secara keseluruhan. Kedengarannya seperti tidak ada bagian dari manifestasi Agile telah dibaca atau dipahami oleh salah satu pihak. Mereka tidak benar-benar "berinteraksi". Yang tidak puas tidak diizinkan mengajukan perbaikan. Jadi mereka tidak melihat bahwa itu bisa diperbaiki.
S.Lott

1
Besar +1 untuk "Tidak dikatakan memaksa orang untuk bekerja dengan cara yang tidak nyaman dan tidak produktif." Salah satu alasan saya menghindar dari semua metodologi - terutama ketika mereka menjadi populer sampai menjadi fashionable - adalah justru mentalitas pemotong kue yang hampir selalu mereka hasilkan pada mereka yang menerapkannya.
HANYA SAYA PENDAPAT benar

23

perusahaan saya berusaha (dan masih berusaha setelah bertahun-tahun mencoba) untuk melakukan transisi yang sama dan sejauh ini secara pribadi, saya belum melihat banyak keberhasilan dengan itu. Selama transisi ini, saya banyak membaca tentang pengembangan lincah dan berbagai cara / aspek / kekhawatiran / teknik dan satu hal yang saya sangat setuju adalah bahwa pengembangan lincah murni paling cocok ketika seluruh tim terdiri dari orang-orang senior, berkualitas tinggi (atau setidaknya semua orang dari level yang sama).

Rilis terakhir saya berada di tim "gesit" yang memiliki pengembang IMHO terlalu banyak dengan tingkat keterampilan di semua tempat dan kami berusaha untuk melibatkan semua orang dalam proyek yang sama. Itu adalah bencana. Kami lebih banyak berbicara / berdebat daripada bekerja, dan pada akhirnya apa yang dihasilkan oleh tim adalah pekerjaan biasa (baca Peopleware atau Mythical Man Month tentang mengambil rata-rata). Lupakan pola desain, lupakan kopling rendah atau pemecahan kode menjadi kelas dan metode kecil. Lupakan tentang mencoba membuat sesuatu yang menarik karena a) yang tidak dapat dijelaskan dan dipahami oleh semua anggota tim (setidaknya tidak pada waktu yang tepat) dan b) karena kami gesit, apa pun yang saya mulai iterasi ini, orang lain yang sama sekali tidak mengerti akan berlanjut di iterasi berikutnya. Sendiri,

Saya benar-benar benci kenyataan bahwa saya tidak bisa melakukan apa pun dengan template C ++, atau menulis beberapa library framework level rendah yang keren (tapi agak rumit) yang akan membuat hidup kita jauh lebih mudah. Bagaimana hal seperti itu dapat dilakukan ketika tidak ada orang lain di tim yang mampu membaca file header STL tetapi kita semua seharusnya mengerjakan satu hal pada satu waktu. Seluruh proyek akhirnya menjadi fitur paksa oleh fitur karena itulah yang tampaknya tangkas menekankan.

Pada saat yang sama, ada beberapa (sangat sedikit) orang di perusahaan saya yang saya benar-benar ingin bekerja bersama dan berbagi semua kode saya.

Tapi sekarang Anda menghadapi pilihan. A) Ambil semua pengembang senior baik Anda yang menghasilkan kode berkualitas tinggi dan masukkan ke dalam tim mereka sendiri dan masukkan sisanya ke tim yang terpisah. Atau B) mencoba menyeimbangkan tim dan menempatkan yang baik dengan yang tidak begitu baik. Dalam (A) masalahnya adalah bahwa salah satu tim Anda akan berkinerja buruk dan tidak akan mengambil keterampilan / kebiasaan yang baik dari orang baik. Dalam (B) orang baik Anda (dalam lingkungan lincah murni) akan merasa frustrasi dan akan mulai mengerjakan resume mereka. Milik saya up-to-date.

Jadi apa yang harus kamu lakukan?

Saya tidak tahu apakah ini solusi yang tepat. Tanyakan saya lagi sekitar satu tahun atau lebih. Tetapi bagaimana jika alih-alih "gesit murni" Anda membentuk sebuah tim, tetapi dengan jelas mengidentifikasi orang mana yang lebih berpengaruh (desain, ulasan kode ...) dan memastikan orang itu memahami hal itu dan diberi imbalan karena tanggung jawab ekstra. Ketika anggota tim mulai bekerja bersama, kenali orang-orang yang mengambil kebiasaan / praktik baik dan tingkatkan ke tingkat yang sama dengan orang-orang baik Anda. Mudah-mudahan ketika orang menghabiskan satu atau dua rilis bekerja bersama, mereka akan belajar apa yang dipikirkan orang lain dan bagaimana mereka bekerja, sehingga mereka akan lebih kompatibel untuk bekerja dalam kode yang sama pada saat yang sama. Tetapi sampai itu terjadi, jika Anda hanya melemparkan orang ke dalam proyek, itu akan menjadi frustrasi (sekali lagi, hanya pendapat saya).

Beberapa pemikiran saya didasarkan pada bagaimana saya memulai secara profesional dalam perangkat lunak. Ketika saya masih co-op, saya bekerja dengan seorang pria yang merupakan mentor saya. Dia mengajari saya segalanya, mulai dari kode etik hingga desain bagus hingga membaca ribuan baris kode yang tidak Anda tulis. Pada awalnya kami tidak berada pada level yang sama dan akan menggelikan jika kami ditempatkan dalam tim yang gesit dan diberi tahu bahwa kami dapat mengerjakan kode satu sama lain. Namun seiring berjalannya waktu (beberapa tahun), kami mulai berpikir sangat mirip. Saya dapat memahami kode nya dengan pandangan sederhana dan dia mengatakan kepada saya beberapa kali bahwa dia sama sekali tidak punya masalah (dan terkejut oleh itu) menavigasi kode saya yang belum pernah dia lihat sebelumnya. Ini butuh waktu bertahun-tahun, bukan sesuatu yang terjadi dalam semalam. Setelah mengalami bencana demi bencana di lingkungan yang gesit dalam beberapa tahun terakhir,

Ini sebenarnya bukan jawaban tapi ini merangkum pengalaman / pengamatan saya. Saya ingin melihat apa yang orang lain katakan tentang ini.


3
Komentator: komentar dimaksudkan untuk mencari klarifikasi, bukan untuk diskusi panjang. Jika Anda punya solusi, tinggalkan jawaban. Jika solusi Anda sudah diposting, harap perbarui. Jika Anda ingin mendiskusikan pertanyaan ini dengan orang lain, silakan gunakan obrolan . Lihat FAQ untuk informasi lebih lanjut.

8

Apa itu Agile?

Apakah itu:

  • seperangkat aturan yang harus Anda ikuti untuk mencapai apa yang dimaksud dengan pembuat aturan?

  • pendekatan tebakan terbaik untuk menyelesaikan sesuatu dalam kekuatan, persyaratan, dan keterbatasan Anda?

Jika Anda berpikir Agile adalah yang pertama, dan Anda selalu mengikuti setiap aturan Scrum dan terus-menerus khawatir apakah Anda melakukannya dengan benar atau tidak, mungkin tautan ini akan memberi Anda sedikit pencerahan.

Jika Anda berpikir lebih banyak tentang yang kedua, maka selamat - Anda 'mendapatkan' Agile. Metodologi Agile apa pun hanya bisa menjadi saran tentang bagaimana cara menyelesaikan sesuatu. Jika ada aspek dari metode lincah yang Anda pilih tidak terasa tepat untuk Anda, maka Anda memiliki kewajiban untuk berhenti menggunakannya, mengubahnya atau menjadi gesittentang itu. Yang penting adalah Anda mencapai sesuatu, bahwa Anda tidak ditahan oleh batasan buatan - bukan hanya hal-hal yang kita semua tahu dan cintai dari masa air terjun lama kita di mana PM akan merepotkan Anda untuk diagram terdokumentasi lengkap yang tidak akan pernah ada baca hanya karena "itulah yang dikatakan proses untuk dilakukan", tetapi juga dari kendala apa pun yang Anda gunakan. Jika scrum harian terasa seperti kendala maka jangan berkedip memilikinya! Membabi buta memilikinya karena aturan mengatakan demikian tidak lebih gesit daripada cara lama.

Sekarang jika Anda memiliki beberapa pria yang menyelesaikan sesuatu dengan dikunci di sebuah ruangan dengan hanya satu galon cola dan menetas untuk pizza, maka manfaatkan fakta itu. Berikan mereka beberapa bagian dari sistem yang kebanyakan mandiri dan kunci mereka. Ketika sudah selesai, maka Anda harus membuat mereka mengintegrasikan pekerjaan itu (atau membuat orang lain melakukannya jika mereka mau) dengan seluruh sistem.

Alistair Cockburn menggambarkan ini dalam metodenya. Jika Anda memiliki "praktisi level 3", maka metode tangkas yang valid sempurna adalah sebagai berikut:

“Tempatkan 4-6 orang di ruangan dengan workstation dan papan tulis dan akses ke pengguna. Mintalah mereka memberikan perangkat lunak yang sudah berjalan dan diuji kepada pengguna setiap satu atau dua bulan, dan jika tidak biarkan mereka sendiri. "

Karena Anda memiliki campuran orang, Anda perlu mencari cara untuk membuat mereka bekerja bersama secara konstruktif, dan itu berarti 1 ukuran cocok untuk semua pendekatan mungkin tidak akan menjadi sangat efisien. Jadi, Anda perlu membagi tugas, sambil memastikan bahwa tujuan bersama ditekankan. Tidak apa-apa mengirim orang-orang itu ke kode, tetapi mereka harus disadarkan tentang bagaimana barang-barang mereka akan menjadi bagian integral dari sisa pekerjaan tim dan bahwa gagal untuk mencapai itu adalah kegagalan dari apa pun yang mereka hasilkan . Begitu mereka memahami itu (yaitu mereka tidak bisa hanya melakukan apa pun yang mereka inginkan dan memberikan sesuatu yang tidak dapat digunakan) maka pekerjaan Anda selesai.


4

Katakanlah gesit bukan untuk semua orang dan gesit bukan untuk setiap proyek. Pada saat yang sama tangkas adalah istilah yang sangat luas dan Scrum hanya satu implementasi dari proses tangkas - entah bagaimana saya bisa mengatakan implementasi dengan mungkin kendala yang paling yang mencoba untuk mengatur proses standar dengan langkah-langkah yang terkenal.

Area lain untuk dipikirkan adalah apa tujuan tangkas? Apakah gesit tentang cara kerja pengembang? Mungkin - beberapa metodologi memang mengarah ke sana. Tapi lincah itu sendiri mencakup area di luar pembangunan. Agile lebih tentang mengarahkan seluruh proses, cara bagaimana interaksi bekerja, cara Anda mengirimkan produk yang bekerja dengan fitur paling penting tepat waktu dan cara Anda mengendalikan sumber daya, bagaimana Anda melihat di mana dalam proyek Anda saat ini, dll.

Ada beberapa metodologi yang tidak mencoba mengubah apa pun dari proses pengembangan Anda - Scrum bukan satu-satunya. Semua metodologi tangkas menekankan perbaikan berkelanjutan. Anda akan mendeteksi beberapa langkah yang tidak efisien dalam proses Anda dan Anda akan mencoba untuk memperbaikinya / mengubahnya - itu adalah cara yang gesit. Periksa metodologi gesit populer lainnya - Kanban.

Anda / Perusahaan Anda telah memutuskan untuk menggunakan Scrum dan itu dapat menyebabkan fakta bahwa beberapa orang tidak akan menyukainya dan pergi. Anda harus berurusan dengan masing-masing pengembang Anda secara terpisah. Anda harus membicarakannya dengan masing-masing dan Anda harus mencoba menemukan beberapa minat yang memungkinkan mereka menikmati pekerjaan lagi.

Mereka dapat memiliki peran sebagai mentor, mereka dapat mengajar orang lain, menunjukkan kepada mereka bagaimana cara memperbaiki kode untuk arsitektur yang lebih baik ketika bekerja secara iteratif. Mereka dapat membentuk bersama beberapa penggunaan cetak biru arsitektur global di seluruh proyek. Mereka juga dapat bekerja pada pembuktian konsep, berpartisipasi dalam RFI (permintaan informasi) ketika pelanggan membuat pertanyaan untuk memikirkan kelayakan persyaratan. Mereka dapat bekerja berpasangan dengan pengembang yang kurang terampil dan melakukan tugas kompleks bersama, dll. Nilai utama mereka harus dalam menggunakan keterampilan mereka dan memungkinkan orang lain belajar dari mereka.

Scrum dan lincah secara global memang entah bagaimana menekan individu dan memprioritaskan tim - tim memberikan aplikasi, bukan individu. Gagasan ini didasarkan pada kenyataan bahwa Anda tidak akan pernah memiliki tim di mana setiap orang memiliki keahlian dan pengalaman yang sama.

Jika transisi Anda ke Scrum akan berhasil, mereka akan melihat bahwa keseluruhan proses telah meningkat, waktu pengiriman berkurang, kualitas telah meningkat dan pelanggan lebih puas. Mereka masih percaya bahwa aplikasi yang dikembangkan sendiri jauh lebih buruk daripada yang seharusnya tetapi itu intinya - pelanggan tidak menginginkan kode terbaik yang pernah ditulis. Pelanggan menginginkan kode kerja minimal / termurah / paling cepat dikembangkan yang memenuhi persyaratan mereka. Jika kekerasan sudah cukup untuk itu maka jadilah itu. Ini adalah sesuatu yang dapat menyebabkan masalah bagi pengembang dengan keterampilan tinggi, tetapi ini bukan kegagalan yang gesit, melainkan tempat di mana tuntutan bisnis dan perfeksionisme saling bertentangan.


2

Ini akan menguntungkan seluruh tim jika Anda mengambil beberapa masalah utama dan menyerahkannya kepada pengembang yang hebat. Semua orang bisa mendapatkan kecepatan setelahnya dan belajar sesuatu dalam prosesnya. Hanya saja, jangan membangun seluruh aplikasi dengan cara ini.

Anda tidak mempermudah kode ke penyebut umum terendah. Anda berhasil mengejar pengembang yang lebih baik.


2

Sudah ada banyak diskusi tentang apa yang "lincah" atau tidak dan banyak perasaan, pengalaman, dan keraguan pribadi tentang proses lincah yang dibagikan di sini, tetapi saya belum benar-benar melihat jawaban aktual untuk pertanyaan itu. Pertanyaan aslinya adalah bagaimana membuat para pengembang top Anda termotivasi ketika mereka melihat kode mereka bahwa mereka telah menulis pada tingkat artform murni, dan menginvestasikan keringat dan darah mereka ke dalam, diretas oleh orang lain dan "rusak". Perhatikan bahwa, gesit atau tidak, ini akan terjadi di beberapa titik, itu hanya lebih terlihat sekarang karena mereka masih bekerja pada kode pada saat yang sama dengan yang lain, alih-alih ada handoff khas untuk mendukung, pada titik mana mereka tidak akan melihat perubahan itu dilakukan.

Apa yang akan saya lihat sebagai kuncinya di sini adalah memperluas tanggung jawab para pengembang ini dan membantu mereka mengubah fokus mereka ke gambaran yang lebih besar. Mungkin itu berarti judul baru, seperti Arsitek Perangkat Lunak, atau Pimpinan Tim, atau Insinyur Perangkat Lunak Senior. Kemudian tunjukkan pada mereka bahwa ini adalah peluang untuk memiliki dampak yang lebih besar, tidak hanya pada satu proyek pada satu waktu, tetapi di berbagai proyek. Rasa kepemilikan masih bisa ada, tetapi fokus mereka seharusnya tidak lagi pada memberikan satu proyek besar, tetapi pada membantu mengatur bar untuk SEMUAproyek. Bantu mereka memasukkan keinginan kuat mereka untuk membangun sesuatu yang hebat, tetapi alihkan fokus untuk membangun praktik rekayasa perangkat lunak perusahaan Anda, dan pengembang lainnya. Alih-alih ngeri membayangkan rekan kerja mereka meretas kode mereka menjadi beberapa bagian, ini bisa menjadi kesempatan bagi mereka untuk naik ke level berikutnya dan membimbing rekan tim mereka dan membawa mereka ke level mereka.


Hai - maksud saya tidak terkait dengan melihat kode seseorang diretas oleh anggota tim lainnya. Saya telah melihat "Apa yang telah Anda lakukan pada kode saya !! Aargh!" Hal beberapa kali, di air terjun dan lincah, tapi itu masalah yang berbeda. Ini tentang orang-orang yang merasa tidak dapat mengambil pekerjaan dan bekerja secara mandiri untuk menyelesaikannya.
Kris

1
Ok, jawaban saya mungkin agak marah oleh diskusi yang terjadi di sini, tetapi jika ini adalah orang-orang yang mampu yang merasa kurang memiliki kepemilikan sekarang, saya pikir itu masih berlaku untuk membantu mereka mengubah fokus mereka ke sesuatu yang lain mereka dapat memiliki kepemilikan dan masih menjadi kontributor utama bagi tim.
Joel C

2

Saya akan mencoba mengilustrasikan beberapa aspek yang belum ditangani oleh jawaban lain dan itu, IMO, penting.

Masalah mendasarnya adalah ini: Beberapa pengembang terutama dimotivasi oleh kegembiraan karena mengambil bagian dari pekerjaan yang sulit, memikirkan desain, memikirkan masalah potensial, kemudian memecahkan masalah sepotong demi sepotong, dengan hanya interaksi minimal dengan yang lain, selama perpanjangan periode waktu. Mereka umumnya menyelesaikan pekerjaan dengan tingkat kualitas tinggi dan tepat waktu; pekerjaan mereka dapat dipelihara dan cocok dengan arsitektur keseluruhan.

Pengembang semacam ini mungkin merasa sulit untuk beradaptasi dengan lingkungan yang gesit dan sikap mereka sering dianggap sebagai "keengganan untuk berubah", mungkin terkait dengan ego atau menjadi kuno.

Apa yang sering diabaikan adalah bahwa untuk menyelesaikan masalah yang kompleks seseorang perlu menangani banyak informasi, dan bahwa ini mungkin memerlukan banyak analisis, berpikir, mencoba, membuat sketsa solusi, membuangnya, mencoba yang lain. Masalah yang sedemikian rumit mungkin memerlukan beberapa jam hingga beberapa minggu kerja fokus hingga Anda memiliki solusi tuntas.

Salah satu pendekatan adalah bahwa pengembang mengambil spesifikasi masalah, pergi ke kamarnya, dan kembali dua / tiga minggu kemudian dengan solusi. Kapan saja (bila diperlukan), pengembang dapat memulai beberapa interaksi dengan anggota tim lain atau dengan pemangku kepentingan (mengajukan pertanyaan tentang masalah tertentu) tetapi sebagian besar pekerjaan dilakukan oleh pengembang yang ditugaskan tugas.

Apa yang terjadi dalam skenario lincah? Tim memecah masalah menjadi potongan-potongan kecil (cerita pengguna) setelah analisis cepat (perawatan). Harapannya adalah bahwa cerita pengguna tidak tergantung satu sama lain tetapi sering kali ini tidak terjadi: untuk memecah masalah yang kompleks menjadi bongkahan yang benar-benar independen, Anda akan membutuhkan pengetahuan yang biasanya Anda dapatkan setelah mengerjakannya selama beberapa hari. Dengan kata lain, jika Anda dapat memecah masalah yang rumit menjadi bagian-bagian kecil yang mandiri, itu berarti Anda pada dasarnya sudah menyelesaikannya dan Anda hanya memiliki pekerjaan tekun yang tersisa. Untuk masalah yang membutuhkan, katakanlah, tiga minggu kerja, ini mungkin akan menjadi kasus selama minggu kedua, tidak setelah beberapa jam perawatan dilakukan pada awal sprint.

Jadi, setelah sprint telah direncanakan, tim bekerja pada potongan masalah yang berbeda yang mungkin memiliki ketergantungan satu sama lain. Ini menghasilkan banyak overhead komunikasi yang mencoba mengintegrasikan solusi yang berbeda yang mungkin sama-sama baik tetapi berbeda satu sama lain. Pada dasarnya, pekerjaan trial-and-error didistribusikan ke semua anggota tim yang terlibat, dengan overhead komunikasi tambahan (meningkat secara kuadratik). Saya pikir beberapa masalah ini diilustrasikan dengan sangat baik dalam artikel ini oleh Paul Graham, khususnya poin 7.

Tentu saja, berbagi pekerjaan antara anggota tim mengurangi risiko yang terkait dengan satu anggota tim yang meninggalkan proyek. Di sisi lain, pengetahuan tentang kode dapat dikomunikasikan dengan cara lain, misalnya menggunakan ulasan kode atau memberikan presentasi teknis kepada rekan kerja. Dalam hal ini, saya tidak berpikir ada peluru perak yang berlaku untuk semua situasi: kepemilikan kode bersama dan pemrograman pasangan bukan satu-satunya pilihan.

Selanjutnya, "pengiriman fungsionalitas kerja dalam interval yang lebih pendek" menghasilkan gangguan pada alur kerja. Ini mungkin OK jika potongan fungsi adalah "tambahkan tombol batal di halaman login" yang dapat diselesaikan pada akhir sprint, tetapi ketika Anda mengerjakan tugas yang kompleks Anda tidak ingin gangguan seperti itu: seperti mencoba mengendarai mobil 100 km secepat yang Anda bisa dan berhenti setiap 5 menit untuk memeriksa seberapa jauh yang Anda dapatkan. Ini hanya akan memperlambat Anda.

Tentu saja, memiliki pos-pos pemeriksaan yang sering dimaksudkan untuk membuat proyek lebih dapat diprediksi, tetapi dalam beberapa kasus gangguan bisa sangat membuat frustasi: orang hampir tidak dapat memperoleh kecepatan bahwa sudah waktunya untuk berhenti dan menyajikan sesuatu.

Jadi, saya tidak berpikir bahwa sikap yang dijelaskan dalam pertanyaan hanya terkait dengan ego atau penolakan terhadap perubahan. Mungkin juga beberapa pengembang menganggap pendekatan penyelesaian masalah yang dijelaskan di atas lebih efektif karena memungkinkan mereka untuk memiliki pemahaman yang lebih baik tentang masalah yang mereka selesaikan dan tentang kode yang mereka tulis. Memaksa pengembang seperti itu untuk bekerja dengan cara yang berbeda dapat mengakibatkan pengurangan produktivitas mereka.

Juga, saya tidak berpikir bahwa memiliki beberapa anggota tim bekerja secara terpisah pada masalah yang spesifik dan sulit bertentangan dengan nilai-nilai lincah. Bagaimanapun, tim harus mengatur diri sendiri dan menggunakan proses yang mereka temukan sebagai yang paling efektif selama bertahun-tahun.

Hanya 2 sen saya.


1
Some developers are primarily motivated by the joy of taking a piece of difficult 
work, thinking through a design, thinking through potential issues, then solving
the problem piece by piece, with only minimal interaction with others, over an 
extended period of time

Sepertinya mereka adalah "Lone Rangers". Dalam Scrum kanonik, orang-orang ini tidak bisa masuk Tim (mereka kehilangan sedikit "interaksi").

Jika mereka bukan "Lone Rangers", maka ada harapan. Jika Anda melakukan Scrum dengan benar, mereka harus menjadi bagian dari desain fitur yang akan mereka kerjakan (selama Perencanaan Sprint). Ini adalah satu-satunya waktu yang mereka butuhkan untuk berinteraksi dengan orang lain. Anda bahkan dapat "menugaskan" semua cerita yang terkait dengan satu fitur itu kepada mereka.

Selama Sprint, mereka hanya akan "diganggu" oleh Scrum harian ... sampai Anda dapat membuktikan kepada mereka (dengan tindakan, bukan dengan kata-kata) bahwa itu akan hanya 15 menit dari waktu mereka, dan hanya untuk menjamin bahwa semuanya berjalan dengan lancar. Tetap dekat dengan tiga pertanyaan dan kebanyakan orang akan berhenti mematuhi.

Di tim kami, kami memiliki grup khusus hanya untuk peningkatan kinerja. Kami tidak melihat mereka terlalu banyak, hanya pada awal sprint untuk berbicara tentang perubahan yang akan dilakukan, dan pada akhirnya di retrospektif. Mereka memiliki "pemimpin scrum" mereka sendiri yang melapor ke tim Scrum of Scrum. Saya dapat memberitahu Anda, mereka menikmati diri mereka sendiri.


3
-1 - untuk mengasumsikan orang-orang yang sangat produktif adalah penjaga sendirian karena mereka tidak peduli dengan pendekatan gesit. Apakah Anda pernah mendengar ungkapan "Menghasilkan potensi seseorang" atau "Menikmati tantangan". Mungkin mereka melewatkan itu sambil mempraktikkan pendekatan gesit.
Dunk

Saya tidak menganggap itu. Bel saya dipicu oleh "dengan interaksi minimal dengan orang lain" yang merupakan definisi dari Lone Ranger. Terkadang Lone Ranger seperti itu karena mereka suka seperti itu. Ada tempat untuk mereka tetapi tempat itu tidak dalam tim Agile ("Interaksi atas Proses"). Kadang-kadang, Lone Rangers seperti itu karena mereka tidak menyukai politik, "praktik" dan birokrasi PM yang hanya merampok semua kesenangan dari pemrograman. Dalam hal itu, mengubah lingkungan dengan cara lincah mencoba akan mengubah mereka dari menjadi Lone Rangers untuk bersenang-senang dalam tim.
Soronthar

0

Jika Joe (pengembang Pahlawan Anda) agak fleksibel, maka saya tidak melihat masalah:

Seperti yang dikatakan di atas, biarkan tim mengatur diri sendiri: Jika beberapa masalah dapat diatasi dengan membiarkan Joe mengunyahnya sendiri, maka Anda akan mengharapkan tim pengorganisasian diri yang berpikiran terbuka untuk mencapai kesimpulan itu sendiri.

Satu-satunya tantangan yang masih ada dalam beberapa kendala yang diberlakukan Scrum:

  1. Memberikan fungsionalitas secara berkala: Jika Anda membiarkan Joe mengunyah masalah selama berbulan-bulan, tanpa menunjukkan apa pun sampai akhir, maka Joe memang tidak gesit: Ia menyandera pemilik produk dan tidak memberinya kesempatan untuk menspesifikasi ulang bagian dari produk. Dengan latihan ini juga ada risiko bahwa dia terlambat, dan tidak ada yang memperhatikannya. (Tetapi menurut deskripsi Anda itu tidak begitu mungkin). Ramuan: Apakah terlalu banyak meminta dari Joe, duduk bersama dengan PO, memecah cerita pengguna dan menyetujui kiriman menengah, lebih disukai (tetapi tidak harus) dengan nilai pengguna?

  2. Menghormati prioritas yang ditetapkan oleh pemilik produk: Jika potongan kode dimiliki oleh para ahli, maka Anda berisiko situasi di mana evolusi produk ditentukan oleh ketersediaan masing-masing ahli, daripada prioritas komersial: Anggota tim lainnya mungkin bekerja pada fitur yang kurang penting, sedangkan 3 fitur teratas sedang macet karena "hanya Joe yang bisa melakukannya". Itu buruk. Pada saat itu, tim harus (sementara) mengubah kebiasaan mereka dan membagi pekerjaan Joe dengan lebih banyak anggota tim.

Singkatnya: Jika Joe, pahlawan-pengembang, setuju dengan PO bagaimana ia akan menunjukkan kemajuan setiap sprint, maka tim dapat menugaskan cerita tertentu kepadanya dan meninggalkannya sendirian. Tetapi jika PO memiliki terlalu banyak pekerjaan untuk Joe, dan tidak cukup untuk tim (atau sebaliknya), maka Joe dan tim harus beradaptasi, bukan PO.


Juga tim mungkin harus bertanya pada diri sendiri apakah ada kekurangan keterampilan dalam tim, ketika mempertimbangkan bahwa Joe hanya "sebagian tersedia" untuk tim.
rwong

-1

Aturan untuk tim gesit harus disesuaikan agar sesuai dengan tim - ini bisa benar-benar kustomisasi pribadi; Sebagai contoh, saya bekerja di tim di mana aturannya adalah:

Semua Kode harus ditulis oleh pasangan, kecuali David dapat menulis kode sendiri.

David adalah pengembang / arsitek senior, yang bekerja terutama pada tooling yang akan digunakan orang lain dalam kode mereka sendiri. Dia sangat memiliki kode yang dia tulis. Itu dapat dipelihara dan diuji, dan semua orang di tim tahu bahwa dia mungkin adalah pembuat kode terbaik di sana, dan bahwa tim akan dilayani sebaik-baiknya dengan membiarkannya membangun kerangka kerja tertentu dan menyajikannya sebagai lengkap untuk tim.

Saya tidak punya jawaban untuk introvert varietas taman, tetapi untuk introvert luar biasa, tim akan dengan senang hati mengambil aturan yang berbeda untuk mendapatkan manfaat.


Mengingatkan saya pada kode berpakaian di satu perusahaan di masa lalu saya. Staf pemasaran bersikeras bahwa pengembang harus memiliki kode berpakaian karena marketroid kadang-kadang ingin menunjukkan area pengembangan kepada pelanggan. Dengan bantuan para bos muncul dengan kode pakaian pengembang: "Tidak ada pengembang yang bisa bekerja dengan pakaian. Kecuali Debbie." Ini membantu ketika perusahaan dijalankan oleh peretas ....
HANYA SAYA PENDAPAT benar

Apakah Anda menganggap seseorang yang membutuhkan waktu dan konsentrasi untuk mengerjakan masalah yang sulit adalah seorang introvert? Tidak bisakah seseorang perlu berkonsentrasi untuk mengerjakan hal-hal yang sulit dan tidak ingin terganggu?
Giorgio

Saya bersiap untuk menulis jawaban saya sendiri, di mana saya menyoroti kriteria untuk penilaian kinerja untuk "spesialis dalam tim tangkas": Alih-alih membayar untuk "mengumpulkan jumlah pengetahuan yang tak tergantikan", spesialis harus dibayar berdasarkan "kemampuan mereka untuk tingkatkan keseluruhan (domain khusus) pengetahuan seluruh tim ".
rwong

@ rwong: Saya tidak berpikir Anda harus gesit untuk itu: tim mana pun yang menggunakan proses pengembangan apa pun dapat mengambil untung dari distribusi pengetahuan yang lebih baik di antara anggota tim.
Giorgio
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.