Lima pengembang junior baru dan banyak tugas kompleks. Sekarang apa?

10

Perusahaan kami telah merekrut lima pengembang junior baru untuk membantu saya mengembangkan produk kami. Sayangnya fitur-fitur baru dan perbaikan bug yang masuk biasanya membutuhkan pengetahuan yang lebih dalam dari yang biasanya dimiliki oleh pengembang yang baru lulus (threading / concurrency, debugging bottleneck kinerja dalam sistem yang kompleks, dll.)

Mendelegasikan (dan merencanakan) tugas yang mereka (mungkin) dapat selesaikan, menjawab pertanyaan mereka, membimbing / mengelolanya, meninjau kode mereka menghabiskan seluruh waktu saya dan saya sering merasa bahwa saya dapat menyelesaikan masalah lebih sedikit waktu daripada seluruh proses pendelegasian (hanya menghitung waktu saya). Selain itu saya tidak punya waktu untuk menyelesaikan tugas-tugas yang membutuhkan pengetahuan sistem yang lebih dalam / keterampilan yang lebih maju dan sepertinya tidak akan berubah dalam waktu dekat.

Jadi, bagaimana sekarang? Apa yang harus saya lakukan untuk menggunakan waktu mereka dan waktu saya secara efektif?

mxe
sumber
1
Semua 5 Jr orang dimasukkan ke dalam proyek Anda? Apakah Anda satu-satunya dev yang mengawasi mereka?
Tyanna
@Tyanna: Ya, saya satu-satunya senior di proyek ini. Para senior lainnya dipindahkan ke proyek lain beberapa waktu lalu.
mxe
2
hal pertama yang harus dilakukan adalah menjelaskan kepada manajemen bahwa Anda akan sedikit kurang produktif ketika Anda meningkatkan pemula
jk.
Sebagai lulusan baru sendiri, saya sangat terkejut bahwa ada program di luar sana yang tidak mencakup konkurensi atau kinerja.
Daniel Joseph
+1. Satu-satunya penyesalan saya adalah bahwa saya tidak bisa membuat Anda lebih sedih.
Shivan Dragon

Jawaban:

2

Ya, Anda dapat menyelesaikan berbagai hal lebih cepat dari yang mereka bisa, itu sebabnya Anda senior dan tidak. Namun, seorang senior yang baik ingin membawa juniornya ke tingkat senior juga dan satu-satunya cara Anda dapat melakukan ini adalah dengan membiarkan mereka belajar bagaimana melakukan sesuatu.

Mentoring adalah penggunaan waktu Anda yang paling efektif, bukan coding.

Lihatlah dengan cara ini, jika Anda menghabiskan enam bulan ke depan mentoring secara efektif dan junior belajar cukup untuk menjadi pengembang menengah - maka Anda memiliki 5 pengembang tingkat menengah dan satu senior. Jika Anda melakukan semua kerja keras sendiri karena lebih cepat, dalam enam bulan Anda akan tetap memiliki 5 junior memutar-mutar ibu jari mereka (nah yang terbaik dari mereka akan pindah ke pekerjaan lain saat itu jika Anda tidak memberi mereka pekerjaan yang menantang, jadi Anda mungkin memiliki lebih sedikit atau lebih junior devlopers) dan satu senior yang terlalu banyak bekerja dan rewel.

Anda tahu interaksi kompleks apa yang biasanya ditemukan dalam bug, jadi kembangkan beberapa pelatihan khusus tentang tipe-tipe tersebut jika ada, cara memecahkan masalah dan menemukan masalah aktual dan kemudian jenis metode yang biasanya diperlukan untuk memperbaikinya. Kemudian beri mereka masalah itu saat mereka muncul. Ya, mereka akan membutuhkan waktu lebih lama untuk memperbaikinya dan Anda harus mengizinkannya dalam perkiraan waktu Anda.

Gagasan pemrograman pasangan sangat bagus. Pasangkan dengan yang berbeda untuk setiap masalah yang benar-benar canggih. Bahkan jika mereka belum cukup tahu untuk menyelesaikan masalah, memiliki junior di keyboard saat Anda memberi tahu mereka apa yang harus dicoba dalam hal mencari penyebabnya akan membantu mengajari mereka proses pemecahan masalah. Tentu saja, jangan hanya berharap mereka mengambil keputusan. jelaskan apa yang Anda ingin mereka cari dan mengapa. Mintalah ide-ide mereka dan dengarkan mereka. Jelaskan mengapa ide mereka bukanlah pilihan yang baik jika tidak. Gunakan metode pengajaran Sokrates dengan mengajukan pertanyaan-pertanyaan terkemuka. Mereka akan mengingat lebih baik solusi yang mereka buat sendiri melalui pertanyaan-pertanyaan utama Anda daripada yang Anda didiktekan kepada mereka tanpa penjelasan. Mereka juga akan mengingat lebih baik jika mereka benar-benar mengetik solusi daripada hanya menonton Anda mengetiknya.

Begitu junior telah membantu Anda memecahkan kelas masalah tertentu sebagai bagian dari pasangan dengan Anda, Anda dapat memasangkannya dengan orang lain pada saat kelas masalah muncul dan hanya tersedia untuk konsultasi, tidak berdiri di atas bahu mereka sementara mereka mencoba berbagai hal.

Anda memiliki lima orang baru yang sangat sulit. Anda harus bersikap adil terhadap mereka semua dan merotasi dengan siapa Anda berpasangan atau memberikan panduan. Jangan main favorit. Tapi Anda juga harus menjadi orang yang memberikan "cinta yang kuat" jika seseorang tidak berhasil dan membuat kemajuan. Anda mungkin perlu memanggil satu atau lebih dari mereka dan memberi tahu mereka bahwa mereka perlu meningkatkan dan mengapa Anda merasa mereka tidak berhasil. Beberapa orang akan membiarkan Anda melakukan semua pekerjaan jika Anda berpasangan dan Anda tidak bisa; membiarkan ini hanya karena itu lebih mudah. Jika orang tersebut tidak dapat melakukan pekerjaannya, itu lebih baik bagi mereka dan jauh lebih baik untuk tim Anda jika Anda tidak membawanya begitu jelas bahwa mereka tidak dapat atau tidak akan belajar menjadi lebih mandiri.

Ingat, Anda mendapatkan apa yang Anda harapkan. Jika Anda tidak berharap banyak, Anda tidak akan mendapatkan banyak. Harapkan mereka bersinar dan kebanyakan dari mereka akan memenuhi standar Anda.

HLGEM
sumber
20

Pemrograman Pair terdengar seperti kemungkinan besar di sini.

  • Beri empat dari mereka dua yang lebih sederhana dari bug ini, biarkan mereka berpasangan dan minta masing-masing pasangan mengatasi salah satunya.
    • Frasa permintaan ini dengan, "Bisakah Anda mencari tahu apa yang menyebabkan ini?". Jangan sampai mereka mulai berpikir tentang cara memperbaikinya.
    • Begitu mereka memiliki tingkat penjelasan, kemudian tanyakan kepada mereka bagaimana hal itu bisa diperbaiki. Dengan cara ini mereka tidak akan kewalahan dengan tugas besar sekaligus. Biarkan mereka pergi dan bereksperimen dengan kode jika belum, dan begitu mereka memiliki rencana - bahkan yang tidak jelas - Anda dapat membimbing mereka menuju solusi yang baik.
  • Yang lain, Anda bisa berpasangan dan mulai mengerjakan salah satu yang lebih sulit dengannya. Ini mungkin lebih sulit mengingat pengalamannya dengan kode, tetapi ia juga akan mendapat manfaat dari seseorang yang berpengalaman menjalaninya.
    • Saya pikir fitur baru mungkin cara yang baik untuk melakukan ini, mengingat pengalaman Anda. Anda dapat menunjukkan kepadanya API yang ada saat fitur baru dikembangkan.

Untuk anekdot / contoh saran ini berfungsi: Ini adalah bagaimana saya diperkenalkan ke bagian hairiest dari basis kode yang saya kerjakan - dengan pengembang yang relatif baru saya dipasangkan, kami akhirnya melakukan sesuatu seperti ini:

  • Kami diberi bug, dan setelah sekitar 10 menit perkenalan, disuruh mencoba dan mencari tahu apa yang sedang terjadi.
  • Sekitar satu jam, kami berpencar dan menggali dua pemikiran yang berbeda.
  • Sekitar dua jam setelah itu, saya mengetahui secara umum bagaimana kode itu bekerja, tetapi tidak tahu persis di mana output buruk dihasilkan. Dia mencari tahu bagaimana itu dihasilkan, dengan menggali ke dalam data mentah dan yang didenormalkan, tetapi tidak dapat menemukan kode.
  • Kami memasangkan kembali dan mengikuti jalur kode bersama, dan mendapatkan jawaban yang tepat. Dari ini, kami melakukan brainstorming dengan manajer kami beberapa solusi yang mungkin, dan akhirnya menerapkannya nanti.

Sejak itu saya mewarisi pemeliharaan seluruh bagian basis kode, karena saya benar-benar satu-satunya yang mengerti cara kerjanya lagi (pengembang asli yang masih ada bahkan tidak sepenuhnya ingat).

Izkata
sumber
+1. Satu-satunya masalah adalah membagi 5 orang menjadi pasangan 2 ;-)
Doc Brown
@DocBrown Nah, 5 pengembang yang tidak berpengalaman + 1 pengembang berpengalaman berarti Anda dapat membuat 3 kelompok 2 (lihat poin utama kedua). Mungkin menjadi lebih banyak tutorial tentang apa jenis kode (UI, logika bisnis, dll) pergi di mana, tetapi dia akan belajar hal-hal yang berbeda dari yang lain 4. Kemudian pada set tugas berikutnya, putar.
Izkata
7

Ajari mereka. Tetapkan tugas-tugas yang mudah diselesaikan.

Sederhananya, masalahnya adalah bahwa tenaga kerja tersebut tidak cukup terampil untuk menjadi sangat produktif dengan tugas yang mereka miliki. Dengan demikian, Anda dapat 1) meringankan tugas 2) mencoba meningkatkan keterampilan tenaga kerja.

Masalah serupa hampir selalu terjadi (sampai batas tertentu) setiap kali orang baru bergabung dengan tim dan mulai bekerja pada basis kode yang dia tidak punya pengalaman. Ini menjadi lebih dari masalah jika alat dan metodologi tidak diketahui. Dengan melatih orang tersebut untuk menjadi lebih terbiasa dengan alat dan metodologi, masalahnya dapat diringankan lebih cepat.

Namun, menyelesaikan masalah semacam itu membutuhkan waktu - seseorang tidak bisa hanya berharap orang lain mengetahui segalanya atau mempelajari semuanya dalam satu saat. Mungkin memperkenalkan beberapa buku tentang konkurensi, pengoptimalan perangkat lunak, dan metodologi umum yang dibutuhkan akan menjadi awal yang baik.

zxcdw
sumber
3

Kedengarannya Anda bukan bagian dari keputusan perekrutan. Buat penilaian yang adil terhadap kemampuan mereka untuk menangani tugas saat ini. Tuliskan laporan dengan rekomendasi (pelatihan eksternal dan tugas-tugas seperti itu selama tidak mempengaruhi waktu pengiriman Anda), kirim laporan ke manajer Anda yang mungkin mulai berbicara dengan siapa pun yang mempekerjakan orang-orang itu. Satu orang baru dapat diserap dalam tim tetapi 5 orang baru sekaligus, kedengarannya tidak bagus kecuali Anda memiliki toko santai. Apa pun yang Anda lakukan jangan mencoba mengajar mereka pada waktu proyek Anda kecuali ini diperhitungkan dalam rencana.

Sunting: Mungkin tepat untuk menyebutkan Hukum Brook dalam situasi ini.

Tidak ada kesempatan
sumber
2

Mungkin Anda dapat meluangkan waktu untuk menciptakan lingkungan kotak pasir di mana Anda dapat membuangnya untuk mengatasi beberapa masalah sulit tanpa membahayakan. Mintalah mereka menguji solusi mereka selengkap mungkin. Letakkan lebih dari 1 pada masalah yang sama.

Semua hal ini memberi mereka kemungkinan untuk mendapatkan keterampilan yang cukup untuk menjadi berguna, ditambah mereka membutuhkan lebih sedikit waktu Anda. Tentu saja jika Anda memilikinya (kebanyakan) tenggelam atau berenang dan mereka cukup banyak tenggelam maka Anda harus memikirkan kembali sesuatu.

Dalam profesi pemrograman, orang-orang yang sebagian besar tidak dapat belajar sendiri mungkin tidak sepadan dengan usaha yang diperlukan untuk mengajar mereka. Tapi saya pikir mereka mungkin akan mengejutkan Anda dengan seberapa baik mereka maju ketika Anda mengurangi bantuan.

psr
sumber
Ini sepertinya buang-buang waktu jika lingkungan kotak pasir belum ada.
Ramhound