Di mana belajar keterampilan baru masuk ke Agile?

32

Saya memulai sebuah perusahaan perangkat lunak keuangan dan dalam prosesnya saya telah mempelajari prinsip dan metode Agile dan satu aspek pengembangan yang belum saya temui adalah di mana sesuai dengan kebutuhan terus menerus bagi pengembang untuk mempelajari keterampilan dan teknologi baru dalam pengembangan. proses.

Sebelum bekerja pada perangkat lunak keuangan selama beberapa tahun terakhir, saya menghabiskan sebagian besar karir saya sebagai programmer grafis 3d yang bekerja pada permainan video dan GIS dan perangkat lunak biometrik dan saya selalu sederhana harus terjun dari tebing ke hal-hal dan mencari tahu bagaimana terbang. Walaupun saya selalu berhasil, saya yakin saya tidak akan hidup selama yang saya miliki jika saya tidak bunuh diri dengan bekerja 100 jam seminggu dan berbulan-bulan sekaligus.

Sekarang saya memulai perusahaan perangkat lunak yang tidak memiliki permintaan inovatif yang kuat dari grafik 3d, saya ingin membangun pendekatan yang lebih holistik untuk pengembangan.

Mungkin lincah tidak membahas hal ini, tetapi jika ya, saya belum menemukan di mana dan saya akan menghargai pengetahuan atau keahlian atau pengalaman yang dimiliki seseorang dengan ini.

Anton Bursch
sumber
5
Lihat norvig.com/21-days.html
Basile Starynkevitch
1
Pembelajaran dan R&D dapat dipertanggungjawabkan dalam perencanaan sprint, secara implisit atau eksplisit. Ini juga baik untuk proses pembelajaran untuk tidak memiliki hasil yang mudah diukur (misalnya itu bukan bagian dari Tujuan Sprint). Lihat Incrementalism: pchiusano.github.io/2017-05-17/incrementalism.html "Kemajuan nyata tidak terlihat seperti kemajuan pada awalnya."
KolA
1
Dari pengalaman saya, solusi paling sederhana adalah menyesuaikan beban kerja dalam sprint yang sesuai, jika Anda 2 hari libur untuk pelatihan, sama seperti saat Anda sedang berlibur. Beberapa organisasi menambahkan cerita pengguna buatan untuk pelatihan ke sprint, tetapi secara pribadi saya tidak melihat adanya keuntungan.
Simon

Jawaban:

43

Ini sebenarnya tidak ada hubungannya dengan Agile, atau bahkan dengan Rekayasa Perangkat Lunak. Ini hanya berlaku untuk perusahaan mana pun dalam bisnis apa pun: Anda perlu menyisihkan waktu untuk pelatihan. Periode.

Agile memiliki gagasan tentang "langkah berkelanjutan", yang berarti bahwa, pada titik mana pun, tim tidak boleh bekerja lebih keras daripada apa yang dapat dipertahankan untuk jumlah waktu yang tidak terbatas. Yaitu tidak ada "waktu krisis". Ini perlu dihormati dengan pelatihan juga. Jadi, ini merupakan langkah berkelanjutan bagi tim Anda "tidak lebih dari 5 jam tanpa istirahat, tidak lebih dari 9 jam per hari, tidak lebih dari 40 jam per minggu", dan Anda ingin memberikan 10% waktu untuk pelatihan, maka Anda perlu merencanakan proyek Anda selama 36 jam minggu.

Tapi sekali lagi, ini tidak ada hubungannya dengan Agile, itu hanya akal sehat dan matematika sekolah dasar.

Secara pribadi, saya akan berpikir bahwa sesuatu seperti membiarkan selama setengah jam per hari, satu setengah hari per minggu, dan satu minggu penuh per kuartal akan memungkinkan tim untuk memperoleh potongan pengetahuan yang berbeda ukuran dengan cepat dan dengan kecepatan yang stabil.

Ada juga beberapa praktik Agile yang membantu dengan transfer pengetahuan, yaitu untuk memperlancar perbedaan tingkat pengetahuan di seluruh tim:

  • retrospektif harian
  • retrospektif per sprint
  • retrospektif per proyek
  • pemrograman pasangan
  • pemasangan ping-pong (menukar driver dan navigator setelah setiap langkah dari siklus merah-hijau-refactor)
  • pasangan bebas (tidak ada pasangan tetap, pasangan ditugaskan secara acak dan diganti setiap pagi dan makan siang)
  • jumlah anggota tim yang ganjil (jika Anda melakukan pemrograman berpasangan, biarkan satu anggota tim bebas untuk belajar)
  • pemrograman gerombolan (varian pada pemrograman berpasangan di mana seluruh tim menggunakan satu komputer dan layar, anggota tim yang ditunjuk hanyalah "juru ketik" dan yang lain memberi tahu dia apa yang harus ditulis)
  • tim promiscuous (pengembang ditugaskan secara acak ke tim setiap hari / setiap sprint)

Pemrograman pasangan dan pemrograman massa tidak hanya menyediakan tinjauan kode terus menerus tetapi juga berbagi pengetahuan berkelanjutan. Pemasangan ping-pong mencegah satu orang "memonopoli keyboard". Pasangan promiscuous menyebarkan pengetahuan melalui seluruh tim, tim promiscuous menyebarkan pengetahuan ke seluruh perusahaan, dan memastikan bahwa setiap pengembang mengetahui setiap proyek dan setiap basis kode; itu juga akan mengarah pada standardisasi tingkat tinggi dalam basis kode. Sementara fokus utama retrospektif adalah untuk memberikan umpan balik pada proses pengembangan dan beradaptasi sesuai, itu juga dapat digunakan untuk mengkomunikasikan masalah yang tidak biasa dan bagaimana menyelesaikannya.

Tidak perlu dikatakan bahwa majikan harus menyediakan perpustakaan yang luas, berlangganan ACM, Springer, IEEE, dll., Serta kamar-kamar yang tenang untuk dipelajari dan kamar-kamar yang lebih besar untuk diajar. Banyak papan tulis dan flipboard, serta Proyektor di mana saja tentu saja masuk akal secara umum, bukan hanya untuk pelatihan.

Jörg W Mittag
sumber
5
Saya percaya semua ini benar. Begitu juga master scrum kami yang memberi kami waktu 5 jam. Jira tidak mengerti apa itu 5 jam sehari dan itu membuat perencanaan kami menjadi mimpi buruk. Pahami apa yang bisa dilakukan oleh alat tangkas Anda sebelum Anda menggunakannya untuk menerapkan ide-ide akal sehat yang sempurna ini.
candied_orange
6
'pemrograman monster' terdengar sangat menyiksa.
user2818782
4
@ user2818782: Sangat menyenangkan, dengan cara yang sama menjalankan balap tiga kaki bisa menyenangkan jika Anda tidak menganggapnya terlalu serius dan jangan mencoba melakukannya terlalu lama. Perlakukan saja itu sebagai latihan membangun tim / berbagi pengetahuan yang konyol dan jangan berharap itu menghasilkan banyak (atau apa pun) kode kerja aktual.
Ilmari Karonen
1
@IlmariKaronen: AFAIK, Seattle Ruby Brigade mempraktikkan pemrograman massa sejak lebih dari sepuluh tahun, dan secara konsisten menghasilkan beberapa kode Ruby yang paling berguna, paling canggih, paling bersih, paling indah, dan tercepat di luar sana dengan laju yang menakjubkan. Tentu saja itu hanya bukti anekdotal, dan bahkan faktanya hanya anekdot bekas. Tapi itu setidaknya satu contoh implementasi yang sukses. Ada beberapa kesaksian lagi di situs web Pemrograman Mob orang-orang yang telah mencobanya dan menemukan bahwa itu bekerja dengan baik untuk mereka.
Jörg W Mittag
@candied_orange benar - benar-benar ada pengaturan di jira untuk mengatakan berapa hari dalam sehari?
jk.
8

Saya akan setuju dengan sebagian besar dari apa yang dikatakan Jörg W Mittag , tetapi tidak dengan pernyataan bahwa "ini tidak benar-benar ada hubungannya dengan Agile". Sejumlah teknik Agile mendukung pembelajaran dan pengembangan individu dan tim.

Metode Agile cenderung didasarkan pada kenaikan atau aliran kontinu. Dalam kedua kasus, pekerjaan dipesan berdasarkan faktor-faktor pertimbangan seperti prioritas, nilai, dan ketergantungan. Karena fokusnya adalah pada pekerjaan jangka pendek, tim dapat mengidentifikasi pengetahuan yang diperlukan untuk disampaikan dan, jika kurangnya pengetahuan adalah masalah, rencanakan untuk memperoleh pengetahuan itu tepat waktu. Visibilitas dan transparansi juga cenderung menjadi aspek kunci dari berbagai metode Agile, sehingga pemangku kepentingan dapat melihat apa yang sedang dikerjakan tim dan bagaimana mereka bekerja untuk meningkatkan kemampuan mereka dalam memberikan nilai. Ketika pembelajaran ekstensif diperlukan, itu dapat direncanakan dalam waktu dekat atau iterasi saat ini.

Begitu individu-individu dalam sebuah tim memperoleh pengetahuan, ada teknik seputar berpasangan dan mengeruk. Pair Programming adalah praktik utama dalam Extreme Programming yang telah diterapkan pada metode lain juga dan dirancang untuk, antara lain, memfasilitasi pembelajaran. Mobbing menerapkan ini ke lebih dari hanya dua orang. Kolaborasi erat dan fungsionalitas lintas tim berarti tidak ada silo dan informasi ini disebarluaskan.

Bahkan dengan kemampuan untuk merencanakan dan melaksanakan pembelajaran apa yang perlu untuk pekerjaan segera, memiliki anggota tim yang berpengetahuan sangat penting. Memiliki orang-orang dengan beberapa tingkat pengetahuan yang ada tentang alat, teknologi, dan domain akan memungkinkan mereka untuk lebih terinformasi ketika mengambil tugas belajar dan lebih efektif ketika menyebarkan pengetahuan kepada anggota tim lainnya.

Thomas Owens
sumber
2
Terpilih, terima kasih telah mengisi bagian yang kosong. Memang, loop umpan balik singkat membuat penargetan keterampilan yang diperlukan lebih mudah, dan transparansi memungkinkan untuk dengan mudah menunjukkan kepada pemangku kepentingan baik kebutuhan maupun manfaatnya.
Jörg W Mittag
5

Rencanakan bukti tugas konsep untuk sprint di mana Anda ingin menganggarkan waktu untuk mempelajari keterampilan. Tetap fokus pada sesuatu yang sangat spesifik, seperti belajar cara membuat tabel HTML yang dapat diakses. Simpan penjadwalan bukti tugas konsep sampai Anda telah mempelajari keterampilan yang dibutuhkan untuk cerita. Berikan masing-masing tugas POC beberapa poin cerita dan tanggal jatuh tempo sehingga Anda dapat dengan tepat menandai waktunya, dan menunjukkan kemajuan di akhir sprint.

Jadi bagaimana jika sebuah cerita seharusnya hanya 5 poin untuk pengembang berpengalaman? Mungkin dibutuhkan 3-4 tugas dengan masing-masing 8 poin. Setelah tugas-tugas POC tersebut, cerita mungkin masih hanya 5 poin, tetapi setidaknya Anda menyisihkan waktu untuk mempelajari keterampilan baru sehingga cerita 5 poin bukan 40 poin - bahkan jika tugas cerita dan POC menambah hingga 40 poin.

Greg Burghardt
sumber
4

Scrum memiliki ide 'lonjakan'. Jika tim mengambil teknologi atau kemampuan baru, lonjakan adalah cerita untuk merangkum pekerjaan itu. Jadi, sementara cerita gesit adalah sedikit fungsionalitas yang berfokus pada pengguna, output dari lonjakan adalah dokumentasi dari apa yang telah dipelajari, dan rincian pekerjaan untuk mempraktikkannya dalam aplikasi nyata.

Dalam praktiknya, saya telah menemukan bahwa ini adalah cara yang baik untuk mengelola setidaknya pelatihan skala kecil - cukup untuk mempercepat para devs dengan sistem atau kerangka kerja baru sambil tetap memberi pertanggungjawaban pada jadwal.

Dan Monego
sumber
3

Saya tidak melihat ini dalam jawaban lain, jadi saya ingin menambahkan bahwa banyak organisasi memulai guild, atau cabang, atau Pusat Keunggulan di sekitar bidang keterampilan. Ini bisa berupa topik luas seperti teknologi atau yang spesifik seperti React Native Development. Itu semua tergantung pada apakah minat untuk berpartisipasi ada di perusahaan Anda.

Terlepas dari itu, kelompok-kelompok ini sering kali memiliki tugas membantu orang-orang dalam kelompok tumbuh secara profesional. Ini menciptakan ruang terpisah di luar pekerjaan untuk memperkuat dan memperluas keterampilan bagi kedua orang yang menggunakan keterampilan itu setiap hari dan bahkan orang-orang di luar disiplin yang tertarik pada pelatihan silang. Ini bukan satu-satunya solusi untuk masalah ini, tetapi tampaknya menjadi semakin umum.

Daniel
sumber
1

Beberapa yang lain telah menyebutkan aspek, tetapi saya hanya ingin berbagi bagaimana saya menyesuaikan pengembangan pribadi dalam lingkungan yang gesit.

1. Pengembangan berkelanjutan

Ini yang paling mudah, kurangi kapasitas Anda di setiap sprint hingga Anda punya cukup waktu untuk melakukan pengembangan berkelanjutan. Bagian yang sulit biasanya melekat pada rencana Anda, dan juga melakukan pengembangan jika ada lebih banyak tugas lain yang harus diambil. Jika Anda memiliki keadaan darurat, Anda dapat mengorbankan waktu ini sekarang dan kemudian, tetapi sebaliknya tidak.

Karena Anda mengurangi kapasitas Anda, apa pun yang Anda lakukan dalam kategori ini agak di luar perhatian langsung dari anggota tim lain, dan mereka mungkin tidak punya banyak alasan untuk khawatir tentang hal itu atau memperbarui perencanaan khusus di setiap sprint individu.

2. Upaya yang lebih besar selama sprint

Apa yang saya temukan adalah bahwa jika Anda telah merencanakan sesuatu dengan dampak yang lebih besar (misalnya pelatihan 2 hari selama sprint), Anda harus memperbarui sprint untuk mencerminkan hal ini. Saya tidak yakin apa solusi teoretis untuk ini, tetapi saya sering melihat bahwa orang-orang hanya meletakkan tugas tugas pelatihan di papan tulis untuk memastikan terlihat bahwa seseorang sibuk dengan ini.

Bergantian Anda dapat memperbaiki kapasitas sprint dari sprint tertentu, tetapi kecuali orang-orang melihat dengan sangat hati-hati pada kinerja / efisiensi terukur Anda, saya akan tinggal jauh dari ini. Terutama di tim yang baru, stabilitas mungkin lebih berharga daripada akurasi.

Dennis Jaheruddin
sumber
1

Agile adalah seperangkat filosofi, lihatlah manifesto, itulah ALL Agile, jadi ketika Anda mengatakan bagaimana Agile bisa menyelesaikan masalah saya, saya sarankan untuk belajar (banyak) lebih banyak tentang Agile. Mari kita lakukan implementasi Agile yang konkret: SCRUM. Dalam SCRUM kami memiliki konsep Sprint dan paku. Melalui dua artefak ini, adalah mungkin untuk mencapai menciptakan anggaran untuk pembelajaran.

Jika Anda melihat sprint sebagai diagram lingkaran, Anda dapat membagi prioritas berdasarkan topik, satu topik tersebut dapat ... mempelajari keterampilan baru!

Spike adalah tugas penelitian tentang sprint yang melibatkan penilaian kelayakan sesuatu yang biasanya melalui pembelajaran.

Terakhir, hal yang telah Anda lakukan masih di atas meja dan Anda dapat belajar SAAT melakukan apa pun yang sedang Anda kerjakan, pada titik mana Anda dapat mencoba meningkatkan poin cerita / kapasitas untuk mengatasi tantangan teknis.

RandomUs1r
sumber
1

Mengutip Manifesto Agile itu sendiri:

Individu dan interaksi atas proses dan alat
Perangkat lunak yang
bekerja dengan dokumentasi yang komprehensif Kolaborasi pelanggan atas negosiasi kontrak
Menanggapi perubahan setelah mengikuti suatu rencana

Penekanan adalah milikku, menyoroti bagian-bagian yang mungkin paling berlaku untuk Anda.

Pada dasarnya, pengembang lincah yang terlatih dengan baik dapat merespons perubahan lingkungan yang jauh lebih baik daripada mereka yang membiarkan keahlian mereka membatu.

Jika saya dapat menambahkan definisi lincah saya sendiri, kami juga dapat membawa "kolaborasi pelanggan" ke dalam campuran. Saya menemukan definisi lincah terbaik untuk menjadi berdasarkan pada ide kelincahan - jika pelanggan (atau lingkungan) berubah secara radikal, seberapa baik Anda mengatasinya? Jika Anda mengembangkan lingkungan kolaborasi pelanggan, mereka akan memiliki kepentingan pribadi dalam tim Anda mengetahui apa yang mereka lakukan.

Cort Ammon - Reinstate Monica
sumber