Bagaimana memastikan perusahaan Anda tidak tenggelam jika programmer Anda memenangkan lotre [ditutup]

28

Saya memiliki beberapa programmer di bawah saya, mereka semua melakukannya dengan sangat hebat dan sangat cerdas. Terima kasih banyak.

Tetapi masalahnya adalah bahwa masing-masing dari mereka bertanggung jawab untuk satu area inti, yang tidak ada orang lain di tim yang memiliki ide foggiest tentang apa itu. Ini berarti bahwa jika salah satu dari mereka dikeluarkan, perusahaan saya sebagai bisnis sudah mati karena tidak dapat diganti.

Saya berpikir tentang membawa programmer baru untuk melindungi mereka, kalau-kalau mereka ditabrak bus, atau mengundurkan diri atau apa pun. Tapi saya takut itu

  1. Pemrogram lama mungkin secara aktif menolak gagasan transfer pengetahuan, takut bahwa cadangan mungkin mengurangi nilai mereka.
  2. Saya tidak memiliki sistem untuk memfasilitasi transfer teknologi antara pengembang yang berbeda, jadi bahkan jika saya meminta mereka untuk melakukannya, saya tidak yakin mereka akan melakukannya dengan benar.

Pertanyaanku adalah,

  1. Bagaimana memasukkannya ke programmer lama sedemikian mereka akan setuju
  2. Sistem apa yang Anda gunakan, untuk memfasilitasi "cadangan" semacam ini? Saya dapat memahami bahwa Anda dapat melakukan tinjauan kode, tetapi apakah ada cara sederhana untuk melakukan ini? Saya pikir kami belum siap untuk pemeriksaan penuh, check-in dengan review kode check-in.
Graviton
sumber
4
Anda selalu dapat menyebutkan bahwa memiliki redundansi di area tertentu memungkinkan Anda untuk MENJAGA area itu daripada harus mencari area lain. Ini berlaku untuk pengetahuan pemrograman juga sehingga itu benar-benar membuat pekerjaan mereka lebih aman sehingga orang lain tahu apa yang mereka ketahui.
1
Pada satu pekerjaan, kami memiliki kolam lotere kantor. Manajer bersikeras bergabung, dengan alasan bahwa dia tidak ingin terjebak di sana jika kita semua ditebus.
David Thornley
3
Jeff? Apa itu kamu! Sialan kamu lebih baik tidak mencoba membunuh kita!
2
Mengapa di dunia ini judulnya diubah - "ditabrak bus" adalah sebuah ide yang dikenal luas, topik ini memiliki nama sendiri dan artikel Wikipedia: Nomor bus . Anda tidak mendengar orang berbicara tentang "nomor lotere" tim mereka .
Nicole
1
@Carra sayangnya pertanyaannya tidak sama - Anda tidak dapat membujuk seseorang yang telah ditabrak bus untuk tetap tinggal karena cinta permainan! :)
Nicole

Jawaban:

19

Bagaimana memasukkannya ke programmer lama sedemikian mereka akan setuju

Sampaikan masalah secara terbuka kepada mereka, tentu saja sedemikian rupa sehingga mereka tidak melihatnya sebagai ancaman, lebih merupakan kesempatan untuk membuat tim dan proyek bekerja lebih baik. Misalnya "Saya ingin orang lain tahu apa yang Anda tahu jika Anda dipecat" jelas merupakan pendekatan yang salah :-) "Saya ingin memastikan kelancaran proyek bahkan jika beberapa dari Anda pergi berlibur atau jatuh sakit " jauh lebih baik.

Biasanya para pengembang sendiri mengalami masalah itu sendiri setiap kali beberapa dari mereka sedang berlibur dan mereka perlu melindungi mereka. Selain itu, pengembang yang baik merasa bertanggung jawab atas proyek yang sedang mereka kerjakan, sehingga mereka mungkin akan setuju dengan ide ini. Namun, beri mereka waktu untuk berdiskusi dan (mudah-mudahan) berkomitmen pada ide tersebut. Juga, izinkan mereka menyampaikan pendapat tentang bagaimana dan dengan siapa mereka membagikan pengetahuan mereka di dalam tim. Mungkin ternyata Joe merasa OK untuk bekerja (dan berbagi pengetahuannya) dengan Jim, tetapi tidak dengan Jack dll.

Sistem apa yang Anda gunakan, untuk memfasilitasi "cadangan" semacam ini? Saya dapat memahami bahwa Anda dapat melakukan tinjauan kode, tetapi apakah ada cara sederhana untuk melakukan ini? Saya pikir kami belum siap untuk pemeriksaan penuh, check-in dengan review kode check-in.

Di tim kami, selain dari tinjauan kode / desain, kami menggunakan

  • Rotasi tugas dan bidang tanggung jawab di antara anggota tim (masing-masing dari kita memiliki bidang tanggung jawab utamanya, tetapi setiap saat, kita melakukan tugas di bidang yang lebih dikenal oleh anggota tim lain)
  • Sesi transfer pengetahuan tatap muka (biasanya ketika tugas-tugas di atas memerlukan, tetapi juga sebelum seseorang meninggalkan tim)
  • Tim / proyek wiki

Peninjauan kode itu sendiri mungkin tidak cukup karena di banyak daerah biasanya ada lebih banyak hal untuk diketahui pengembang daripada apa yang dapat langsung dibaca dari kode. Dengan kata lain, ada model domain juga. Anda dapat membaca apa kode sebenarnya, tetapi tanpa model, Anda tidak akan tahu mengapa .

Péter Török
sumber
Team/project wiki, bisakah Anda menguraikan hal ini? Dan juga, face-to-face knowledge transfer sessionsapakah Anda mengadakan sesi semacam ini secara teratur pada waktu yang ditentukan?
Graviton
@Graviton, kami berusaha untuk mendokumentasikan desain dan implementasi sistem kami (warisan) pada wiki proyek. Ini lebih mudah untuk diedit dan diperbarui (oleh anggota tim mana pun) kemudian mis. Dokumen Word yang terpisah, dan juga memungkinkan tautan gratis di antara halaman mana pun. Transfer pengetahuan kami lakukan ketika diperlukan, pada alat tertentu atau bagian dari proyek.
Péter Török
Knowledge transfers we do on when needed, itu mungkin selama staf mengundurkan diri? Bukankah waktu yang dibutuhkan untuk ini agak terlalu pendek?
Graviton
@ Graviton, tidak, apa yang saya maksudkan adalah setiap kali sebagian dari kita diberi tugas pada area yang lebih dikenal oleh orang lain. (Saya akan menambahkan ini ke daftar di atas, karena ini sebenarnya cara terbaik untuk membuat "cadangan pengetahuan".)
Péter Török
12

Salah satu cara untuk memotivasi mereka untuk membagikan pengetahuan mereka adalah dengan meminta mereka untuk membuat presentasi singkat tentang pekerjaan mereka kepada orang lain. Programmer biasanya sangat bangga dengan pekerjaan mereka, dan ini akan menjadi kesempatan untuk memamerkannya. Presentasi adalah kesempatan yang baik untuk membuat mereka menunjukkan beberapa keanehan yang jarang diketahui oleh orang luar.

Juga, mengapa tidak hanya terbuka tentang hal itu dan beri tahu semua orang bahwa Anda semua harus membuat skema berbagi pengetahuan jika seseorang ditabrak bus. Saya tidak melihat ini sebagai tidak masuk akal. Itu sedang terjadi di perusahaan saya sekarang, dan meskipun ada yang defensif tentang hal itu, mereka tahu itu perlu dilakukan.

Mungkin mereka dapat bekerja berpasangan pada beberapa hal, jika mereka memiliki sifat ingin tahu, seharusnya tidak ada masalah.

dr Hannibal Lecter
sumber
4

Mendapatkan pemutakhiran internal perangkat lunak harus menjadi langkah pertama, sebelum Anda mulai merekrut orang baru. Tentu, itu berarti bahwa programmer Anda yang berharga akan menghabiskan waktu dengan alat-alat Office dan UML, bukan IDE, tapi saya pikir itu sangat berharga.

Setelah Anda memiliki dokumentasi saat ini, Anda dapat membiarkan programmer Anda memeriksa ulang untuk memastikan semua orang mengerti apa yang ditulis orang lain. Masih tidak perlu untuk orang baru.

Maka Anda dapat mempertimbangkan untuk mempekerjakan orang baru. Atau tidak, tergantung pada beban kerja di perusahaan Anda.

pengguna281377
sumber
@ammoQ, tidak terlalu yakin apakah ini berskala; apa yang terjadi setelah Anda mempekerjakan orang baru, apakah Anda akan menggambar UML lagi? Dan bagaimana jika arsitektur desain berubah? Apakah Anda memiliki sistem untuk memeriksanya?
Graviton
2
@Graviton: Orang baru baru saja membaca dokumentasi yang ditulis oleh staf yang ada. Tidak perlu menggambar diagram UML lagi. Jika arsitekturnya berubah, Anda harus mengadopsi dokumentasinya. Ya, itu menyebalkan, saya tahu. Tetapi ada alat UML untuk membantu Anda dengan itu, mereka membaca kode sumber dan menghasilkan diagram kelas dan semacamnya.
user281377
BTW, bagaimana menurut Anda staf baru akan mempelajari internal perangkat lunak ketika tidak ada apa-apa selain kode sumber untuk belajar dari dan programmer yang ada untuk bertanya?
user281377
@ammoQ, saya tidak tahu; jika saya tahu saya tidak perlu mengajukan pertanyaan.
Graviton
1
@ Oosterwal, untungnya kita bisa menggunakan sistem manajemen build standar (Maven) sekarang, jadi hanya ada kebutuhan minimal untuk mendokumentasikan detail proses build. (Dan jika anggota tim menambahkan modul baru tanpa memperbarui konfigurasi bangunan, kita semua mendapat email dari server Integrasi Berkelanjutan dalam 5 menit, memberi tahu bahwa build rusak, dan oleh siapa.) Tapi ya, kembali ketika saya menulis custom skrip untuk mengotomatiskan pembuatan & rilis, saya mendokumentasikannya dengan baik.
Péter Török
4

Jika Anda berada di perusahaan besar, Anda dapat menghubungi HR dan membicarakan masalah ini. Percayalah, orang-orang di bidang akuntansi memiliki masalah yang sama jika personil kunci ditabrak bus. Orang-orang pemasaran juga akan memiliki banyak masalah jika seorang penjual kunci menjadi zombie di tengah negosiasi penting - itu sering terjadi, atau begitulah yang saya katakan.

Saya percaya bahasa SDM yang tepat untuk ini adalah perencanaan Suksesi . Perusahaan Anda mungkin sudah memiliki kebijakan dan kerangka kerja untuk menangani hal ini.

Vitor Py
sumber
4

Satu tempat saya bekerja memiliki masalah yang sama. Apa yang mereka lakukan adalah merekrut satu pengembang junior untuk bekerja dengan masing-masing pengembang senior. Mereka menciptakan tim kecil yang terdiri dari 2 orang yang mengerjakan proyek bersama. Setiap beberapa bulan atau proyek mereka akan memutar pengembang junior di antara tim. Dengan cara ini, pengembang senior tetap menjadi ahli materi pelajaran, tetapi para pengembang junior mulai memahami dengan baik semua sistem dan bagaimana mereka bekerja bersama. Ditambah dengan proyek penggandaan ukuran tim bisa dilakukan lebih cepat.

Untuk proyek yang lebih besar yang muncul, pengembang senior kadang-kadang diminta untuk bertindak sebagai pengembang Junior pada bagian lain dari sistem untuk panjang proyek sehingga mereka dapat mulai mempelajari sistem lain.

Kuncinya di sana adalah untuk menghormati pengetahuan dan senioritas pengembang yang ada sambil tetap memperluas dan menumbuhkan tim. Itu adalah proses yang lambat tetapi seiring waktu berjalan dengan baik.

Amy Patterson
sumber
4

Salah satu hal yang membuat proyek open source yang sukses menjadi sangat sukses adalah kurangnya kode "kepemilikan". Maksud saya, tidak ada seorang pun yang menjadi pengelola tunggal area aplikasi - siapa pun dapat dan didorong untuk memberikan kontribusi ke bagian mana pun dari aplikasi tersebut. Itu adalah sesuatu yang saya yakini kuat.

Yang ingin Anda lakukan adalah menjelaskan bahwa keadaan sebenarnya merugikan tim yang Anda miliki sekarang. Inilah poin-poin yang ingin Anda sampaikan, dan sebaiknya dalam urutan ini:

  • Saya tidak bisa membebaskan Anda untuk mengerjakan hal-hal keren lainnya jika Anda adalah satu-satunya yang tahu cara kerjanya.
  • Kami ingin Anda dapat mengambil liburan yang baik, tetapi tidak mampu karena tidak ada orang lain yang dapat melakukan apa yang Anda lakukan.
  • Adalah fakta yang tidak menyenangkan bahwa orang-orang berganti pekerjaan karena mereka tidak puas dengan posisi mereka saat ini, kami tidak ingin kehilangan Anda karena Anda merasa terjebak oleh area tempat Anda bekerja.

Pada catatan pribadi, saya harus berurusan dengan seorang rekan kerja yang meninggal. Meskipun tidak ada informasi silo, kerugian masih memukul keras. Peluang terjadinya ini jauh lebih rendah dari titik peluru ketiga di atas.

Setelah Anda menempatkan kasus Anda di luar sana, mintalah bantuan mereka untuk ide-ide tentang bagaimana memperbaiki masalah. Jangan datang dengan Anda sendiri tentunya. Gagasan mereka akan membantu mereka menyadari bahwa mereka adalah bagian dari tim, dan mereka dibutuhkan untuk lebih dari sekedar bidang keahlian mereka. Mungkin Jane tertarik pada apa yang dilakukan Joe, tetapi merasa agak terintimidasi olehnya. Mengetahui hal itu dapat membantu membuat transfer pengetahuan lebih menyenangkan. Beberapa hal yang ingin Anda lakukan adalah:

  • Latih silang tim saat ini. Anda mungkin kehilangan sedikit efisiensi dalam jangka pendek, tetapi mungkin ada beberapa pelajaran di satu sudut aplikasi yang dapat diterapkan ke bagian lain dari aplikasi. Mintalah Jane dan Joe bekerja sama dalam proyek masing-masing untuk sementara waktu.
  • Menumbuhkan budaya berbagi pengetahuan. Perusahaan tempat saya bekerja memiliki program "brown tech tech talk". Siapa pun dapat hadir pada topik apa pun yang disetujui (biasanya memperkenalkan teknologi atau proses perangkat lunak). Perusahaan itu melayani makan siang dan pembawa acara mendapat beberapa ratus dolar untuk usaha mereka.
  • Pendampingan harus menjadi cara hidup. Tujuan membimbing orang lain adalah membebaskan Anda untuk melakukan hal-hal baru, dan membuat Anda lebih berharga bagi perusahaan.
  • Temukan cara untuk melintasi batas informasi silo tanpa menarik peringkat. Semakin menyenangkan Anda membuatnya, semakin tidak mengancam itu. Jika orang-orang di tim Anda sebaik yang Anda katakan, mereka mungkin tidak sepenuhnya puas dengan keadaannya. Anda harus menjadi juri untuk menentukan apakah tim dapat menanganinya, tetapi Anda dapat memiliki minggu "ayo pilih-pilih". Mulailah selalu dengan diri Anda sendiri di sini. Idenya adalah untuk mendapatkan perhatian semua orang tentang apa tanggung jawab "begitu-dan-begitu", dan bagaimana mereka dapat memecahkan masalah yang mereka hadapi dengan lebih baik. Selama Anda mulai dengan leher Anda terlebih dahulu, mereka akan mendapatkan gagasan bahwa tidak ada yang keluar untuk mengambil pekerjaan mereka

Secara umum, cobalah untuk mengesankan mereka bahwa Anda ingin membuat pekerjaan lebih menyenangkan, dan Anda perlu bantuan mereka untuk melakukannya.

Berin Loritsch
sumber
2

Magang mungkin ide yang baik, mereka akan menjadi bawahan langsung ke pengembang saat ini, sehingga mereka tidak akan merasa terancam.

Seiring pertumbuhan perusahaan, Anda akan membutuhkan pengembang lama DAN mereka yang berhasil setelah magang.

Saya pikir ini mungkin berhasil.

Mahmoud Hossam
sumber
1

Umumnya, ketika beberapa manajer tiba-tiba mulai memperhatikan dokumentasi dan perencanaan suksesi, itu adalah tanda peringatan kuat bahwa para programmer akan dipecat atau diberhentikan. Ini adalah penyimpangan dari perilaku manajerial yang khas dan kekhawatiran bahwa itu memicu semua jenis sinyal peringatan pada programmer.

Setiap orang diminta untuk mendokumentasikan semua prosedur dan proses mereka

Level 3 dari " Tanda Peringatan Kehancuran Perusahaan ".

Sebagai alternatif, satu esai menunjukkan bahwa kami akan mendorong budaya " Naik atau Keluar " meskipun argumen berlawanan adalah bahwa sangat sedikit perusahaan yang memiliki tangga karier teknis yang dengan cara apa pun menyerupai spektrum keuangan dan kekuasaan yang tangga karier manajerialnya (mis) mengandung.

Tangurena
sumber
Saya tidak setuju. Nilai sebuah perusahaan sangat bergantung pada Kekayaan Intelektual (IP). Ini termasuk paten, proses, dan semua dokumentasi internal. Seorang karyawan yang tidak mau membagikan pengetahuan rahasia mereka dengan mendokumentasikannya tidak sesuai dengan kertas pengetahuan rahasia mereka. Pengetahuan rahasia karyawan tidak menambah nilai nyata bagi perusahaan.
oosterwal
1
@oosterwol - bisa mengumpulkan dan mengelola tim pengembangan yang produktif adalah prediktor penilaian yang jauh lebih baik. Mengatakan Anda memiliki dokumentasi yang bagus sama seperti mengatakan Anda memiliki kontrol sumber yang bagus. Tentu saja mereka diperlukan, tetapi itu tidak akan membedakan Anda dari pesaing.
JeffO
@ Jeff O: Dokumentasi tidak akan membedakan Anda dari pesaing Anda hari ini karena semua pengetahuan IP ada di kepala para pengembang saat ini . Dalam lima tahun, ketika semua pengembang saat ini telah pindah ke perusahaan yang melakukan dokumentasi nilai, para pengembang baru akan berjuang untuk mempertahankan kode lama dan gagal menerapkan ide-ide yang terbukti buruk di masa lalu, tetapi tidak pernah didokumentasikan.
oosterwal
1

Membangun konsep dokumentasi lengkap yang dimulai @ammoQ dalam jawabannya ...

Seorang manajer yang baik bekerja untuk mengembangkan keterampilan laporan langsung mereka sehingga salah satu dari laporan itu dapat menggantikannya. Buat pengembang Anda mengerti bahwa seorang karyawan yang memberikan transparansi penuh atas pekerjaan mereka lebih berharga daripada orang yang merahasiakan dan menyembunyikan semua pekerjaan mereka. Jika pengembang 'rahasia' meninggal hari ini, itu akan menjadi kewajiban biaya yang sangat besar bagi perusahaan untuk mendapatkan kembali pengetahuan yang hilang itu. Jika karyawan 'pengungkapan penuh' meninggal hari ini, perusahaan masih akan rugi, tetapi tidak akan terlalu merusak. Oleh karena itu, karyawan 'pengungkapan penuh' memiliki nilai lebih.

Setiap karyawan yang mencoba menyimpan pengetahuan tersembunyi untuk membuat mereka kebal terhadap pemecatan juga membuat mereka kebal terhadap promosi. Anda tidak dapat memindahkan pengembang ke posisi yang lebih menantang dan menguntungkan jika tidak ada seorang pun yang menyelesaikan tugas-tugas duniawi yang dibebani mereka hari ini. Jika tugas-tugas duniawi sepenuhnya didokumentasikan dan diungkapkan sepenuhnya daripada Anda dapat menyewa pengembang junior baru untuk mengisi dan mempromosikan pengembang sebelumnya ke posisi yang lebih senior.

Ini berarti bahwa Anda juga perlu mendokumentasikan apa yang Anda lakukan dan memberikan pelatihan untuk masing-masing laporan langsung Anda. Dengan begitu, jika Anda meninggal hari ini, salah satu dari mereka dapat mengisi Anda sampai pengganti penuh waktu ditemukan.

oosterwal
sumber
Bisakah Anda memberikan tautan ke satu dokumen di Internet yang menunjukkan spesifikasi yang ditulis dengan cukup baik untuk membangun seluruh aplikasi berukuran besar? Saya pikir ini berada di bawah Urban Myth.
JeffO
1
@ Jeff O: Anda benar - tidak ada dokumen tunggal yang cukup lengkap untuk menggambarkan sistem lengkap ukuran besar. Gagasan bahwa Anda dapat menggambarkan sistem seperti itu dalam satu dokumen adalah hasil dari manajemen proyek yang buruk dan sejarah spesifikasi yang ditulis dengan buruk. Sistem yang substansial harus ditentukan dengan serangkaian dokumen hierarkis. Dokumen root menyediakan tata letak sistem tingkat tinggi dan tautan ke dokumen turunannya. Setiap dokumen anak memberikan informasi tambahan hingga dokumen titik akhir yang hanya menentukan satu fitur nyata.
oosterwal
1

Sebelum saya mulai membawa programmer baru, saya akan meminta masing-masing dari mereka untuk membantu membuat warisan terdokumentasi mereka sendiri.

Baik dengan wiki, atau Alkitab 3-cincin dokumen tentang setiap aspek pekerjaan mereka.

Atau jika Anda ingin dokumentasi yang benar-benar terperinci dan teliti, pekerjakan seorang penulis teknis, untuk mewawancarai setiap programmer dan kemudian buat dokumentasi segalanya, setiap orang melakukannya, harian, mingguan, bulanan, tahunan.

Kemudian buat versi wiki-nya, agar programmer Anda dapat memperbarui / mengedit / berpartisipasi / mengomentari.

Kemudian Anda memiliki sistem yang akan tumbuh dalam waktu, dan menjadi kurva pembelajaran yang ditingkatkan untuk setiap programmer baru.

Juga jujur ​​itu tidak bijaksana untuk memiliki programmer hanya terjebak dalam satu bidang inti, itu benar-benar membayar untuk lintas kereta, pekerjaan lintas inti.

Kemudian Anda dapat menggunakan personel yang ada, ketika 1 orang berlibur atau sesuatu seperti itu.

crosenblum
sumber
1

Setiap kali salah satu programmer Anda sakit, telepon dia berulang kali dengan pertanyaan dan masalah.

Setiap kali salah satu programmer Anda sedang berlibur, telepon dia berulang kali dengan pertanyaan dan masalah.

Mereka akan segera menyadari bahwa lebih baik bagi mereka dan juga perusahaan untuk tidak memiliki orang lajang yang bertanggung jawab atas area inti.

Carson63000
sumber
0

Tidak ada yang ingin tertabrak bus, tetapi mereka juga tidak mau harus mengambil alih proyek orang lain dalam waktu singkat dan mempertahankan proyek mereka juga. Kemudian semua orang mengambil risiko keluar dari bisnis.

Jika Anda berkembang dalam silo, Anda harus mulai memindahkan orang dari satu proyek ke proyek lainnya. Mulailah dengan dokumentasi, review kode atau memperbaiki bug sederhana. Setiap tindakan kecil perlindungan / kewilayahan kode harus diatasi sebelum ini terlalu jauh dari kendali.

Memiliki satu-satunya spesialis pada sepotong kode Anda adalah ilusi efisiensi.

Adakah yang ingin berlibur?

JeffO
sumber
0

Saya memiliki banyak perusahaan yang bangkrut karena kesalahan bodoh oleh manajemen. Anda tidak akan crash dan terbakar jika satu atau dua insinyur pergi, Anda hanya perlu bekerja sedikit lebih keras untuk sementara waktu. Sheesh, saya mengelola tim lepas pantai yang kehilangan seseorang setiap kuartal. Mulailah memindahkan tugas. Hari ini.

SnoopDougieDoug
sumber