Menangani rekan kerjaku yang kuno

28

Saya seorang programmer yang cukup muda, dan saya bekerja di departemen IT perusahaan menengah. Saya memiliki rekan kerja, dan dia adalah programmer Visual Basic 6 yang sangat bagus. Maksud saya sangat bagus. Secara jujur. Dia dapat mengirimkan aplikasi yang berfungsi, yang mengandung sangat sedikit bug, pada saat saya perlu mendapatkan secangkir kopi pertama saya, dan mem-boot komputer saya. Dia memang baik.

Masalahnya, kami bekerja dengan tim, dan gaya kerjanya benar-benar kuno. Dia tidak percaya pada perangkat lunak versi (jika Anda hanya memastikan kode Anda benar, Anda tidak perlu semua omong kosong itu). Tidak percaya pada penyebaran (saya bisa memberikan executable yang berfungsi. Bagaimana yang digunakan adalah untuk sysadmin untuk mencari tahu). Tidak percaya pada abstraksi. ('jika Anda ingin membuat subrutin, silakan, tetapi jangan panggil subrutin dari subrutin itu. Itu menjadi berantakan seperti itu, dan kodenya sulit untuk diikuti. Dengan cara ini setiap orang dapat mengikuti setiap langkah di jalan. 'atau' ya, tentu Anda bisa menggunakan perpustakaan itu untuk melakukannya untuk Anda, tetapi dengan begitu Anda tidak benar-benar mengerti apa yang sedang terjadi ') dan tentu saja tidak percaya pada OOP. (kami bekerja di VB.net)

Dia sangat baik dalam apa yang dia lakukan, dia dapat memberikan aplikasi jauh lebih cepat daripada yang saya bisa. Tapi itu tidak bekerja dalam tim. Anggota tim kami yang lain diam, dan tidak suka berbicara, meskipun ia cenderung setuju. Manajer kami berpikir saya membuat poin yang valid, tetapi bukan seorang programmer.

Saya memiliki waktu yang sangat sulit untuk mempertahankan program yang telah ditulisnya, dan itu tidak membuat suasana tim yang baik. Menurut Anda apa yang terbaik untuk saya lakukan?

Martijn
sumber
2
"'ya, tentu Anda bisa menggunakan perpustakaan itu untuk melakukan itu untuk Anda, tetapi dengan begitu Anda tidak benar-benar mengerti apa yang sedang terjadi'". Maksudnya di sini adalah bahwa DIA tidak mengerti apa yang sedang terjadi. Kami melakukannya :) Sepertinya dia takut mempelajari hal lain untuk meningkatkan produktivitasnya.
Damien Roche
7
Rekan kerja Anda tidak ketinggalan zaman, ia hanya melewatkan beberapa program penting 101 pelajaran. Versi, abstraksi, dll. Semuanya sangat penting 20 tahun yang lalu dan juga hari ini.
Jas
7
Istilah "kuno" adalah istilah yang agak dimuat dan tidak tercerahkan. Saya memiliki seseorang yang bekerja dengan saya yang dapat dijelaskan dengan istilah yang sama seperti yang Anda gunakan. Namun dia jauh lebih muda dari saya.
Bill
1
Poin tentang perpustakaan cukup valid. Anda benar-benar membutuhkan pemahaman tentang apa yang mereka lakukan - misalnya hal-hal di perpustakaan yang membuat utas atau melempar pengecualian dapat membuat hidup Anda SANGAT menyedihkan. Mengintip dokumen atau sumber kode mereka biasanya cukup untuk memuaskan rasa penasaran. Ini BUKAN argumen untuk TIDAK menggunakan hal-hal di perpustakaan, itu hanya argumen untuk mengetahui apa yang mereka lakukan (dan kemudian menggunakannya dengan senang hati bukannya dalam ketidaktahuan).
quick_now

Jawaban:

25

Ini kedengarannya seperti "Dia orang baik tapi ..." di mana Anda tahu kebenaran akan datang. Dan kebenaran terdengar seperti dia tidak begitu baik dari seorang insinyur. Perangkat lunak yang baik bukan hanya tentang kecepatan kerja dan pengembangan. Ini juga tentang hal-hal lain yang Anda sebutkan - rawatan, kompatibilitas, abstraksi (untuk efisiensi di masa depan), dll.

Jadi, itu dikatakan, sepertinya Anda memiliki pengembang masalah di tangan Anda. Yang lebih buruk bagi Anda adalah bahwa dia terbukti dan mungkin mengatur caranya. Jadi apa yang bisa kamu lakukan?

  • Bekerjalah di sekitarnya.
  • Berusaha keras untuk menghasilkan proyek Anda dengan jadwal yang ketat seperti yang dilakukannya.
  • Dan jika Anda tidak bisa, hasilkan yang lebih baik .
  • Seiring waktu konsep-konsep terbukti yang ia tolak akan mulai membuahkan hasil untuk Anda.

Di sisi lain, jika Anda dipaksa bekerja dengan caranya, pergi.

Nicole
sumber
Saya setuju dengan ini sebanyak jawaban @ier 303. Dia akan meninggalkan situs gelap ketika dia tampak alat yang indah yang dimiliki orang baik.
Kortuk
3
Membutuhkannya sangat sedikit untuk mengkodekannya, tetapi kode Anda dapat dipertahankan. Imbalan Anda akan muncul saat kode dipertahankan. Departemen yang baik melacak waktu yang dihabiskan untuk hal-hal seperti pemeliharaan dan akan melihat waktu yang lebih pendek dihabiskan untuk kode Anda, yang membuat sedikit lebih banyak waktu di muka layak.
Kortuk
+1 untuk demonstrasi dengan menggunakan praktik kerja tim yang baik.
Klaim
11

Jangan mencoba mengubah kolega Anda. Anda menggambarkannya sebagai seseorang yang dapat memberikan perangkat lunak yang berfungsi. Mungkin terlambat untuk mengintegrasikannya dalam tim.

Jadi, Anda memiliki dua pilihan:

  • Sesuaikan diri Anda. Mungkin dengan waktu Anda akan dapat meyakinkannya tentang utilitas sistem kontrol sumber? Anda harus meningkatkan lingkaran pengaruh Anda . Semakin resisten terhadap perubahannya, semakin banyak waktu yang Anda butuhkan.

  • Hapus diri Anda dari team. Anda memiliki banyak poin untuk membenarkan hal ini. Mungkin Anda harus membiarkannya mempertahankan aplikasi sendiri, dan mendedikasikan diri pada hal-hal baru.

  • Hapus diri Anda dari company. Terkadang, ini adalah satu-satunya solusi.


sumber
4
303, saya pikir ini adalah saran terbaik, seorang pria baru mengkritik rekan kerja berpengalaman yang sangat kompeten kepada manajer akan menghasilkan beberapa perasaan yang sangat negatif, dengan waktu Anda dapat beradaptasi dan membantu orang lain beradaptasi juga. Saya memiliki karyawan baru mulai dengan saya dan berpikir mereka tahu sesuatu yang bekerja lebih baik dan pergi ke bos, bos saya akan mendengarkan apa pun tetapi itu membuat saya marah, karena dalam 3 bulan mereka mencari tahu mengapa saya melakukannya dengan cara yang saya lakukan dan mengeluh tentang perubahan itu. Saya pikir ini level yang berbeda, seperti yang kita SVN dan OOP, tetapi premis dasar berlaku.
Kortuk
3
Ada 3 jenis orang di dunia - mereka yang mengerti biner, dan ini yang tidak ...
Michael K
Triknya adalah membuatnya mudah digunakan, DAN menunjukkan ada manfaat besar ketika itu benar-benar penting. Mirip seperti sabuk pengaman ...
Saya tidak setuju. Beberapa latihan hanya baik ketika Anda bekerja solo, dan orang ini tampaknya penuh dengan mereka.
Boris Yankov
Kembali ke pertanyaan ini dan jawaban ini, setelah lebih dari setahun, opsi 3 ternyata menjadi solusi yang tepat
Martijn
6

Jika saya jadi Anda, saya akan mengatur sistem kontrol sumber saya sendiri sekarang. Mulailah menggunakannya untuk semua yang Anda kode, dan kelola sehingga anggota tim Anda yang lain memiliki akun dan dapat mengaksesnya. Rekan kerja Anda yang lain kemungkinan akan antusias menggunakannya.

Rekan Anda yang tidak percaya pada praktik semacam itu mungkin tidak mudah dibujuk. Namun, kode apa pun yang Anda dipaksa untuk bekerja dengan yang ditulis olehnya harus masuk ke kontrol versi sehingga Anda dapat bekerja dengannya. Ketika dia membutuhkan akses ke perubahan Anda, kirim dia petunjuk langkah demi langkah sederhana tentang cara menarik kode Anda dari repositori.

Anda tidak harus agresif atau melangkah lebih tinggi darinya untuk membuatnya terlibat dalam proses yang lebih modern. Kadang-kadang hanya dengan cara Anda sendiri dan menjadi pemimpin dengan tindakan lebih efektif daripada mencoba meyakinkan seseorang dengan kata-kata. Langkah kecil. Jika dia mulai lebih responsif terhadap kontrol versi, mulailah refactoring subrutin dan menambahkan tes unit untuk melindungi terhadap perubahan. Otomatiskan tes dan tunjukkan padanya bagaimana dia dapat mengakses hasil begitu dia membuat checkin.

Seringkali orang hanya menolak karena mereka tidak suka perubahan. Tetapi jika perubahan disajikan kepada mereka secara bertahap dan dengan cara yang membuatnya mudah untuk diikuti, seringkali mereka akan melihat manfaatnya dengan sangat cepat.

Yang terpenting, buat semuanya sesederhana mungkin untuknya (Keep It Simple Stupid). Biarkan dia mulai mengikuti praktik-praktik ini dengan caranya sendiri. Tapi jangan biarkan itu menyeret Anda ke bawah.

Robert S Ciaccio
sumber
Saya memiliki pengalaman buruk ketika 'mencoba untuk bersinar': repositori pribadi tidak banyak membantu ketika tidak ada konsep 'revisi' (perubahan apa yang harus diintegrasikan oleh rekan kerja? Sering kali, dengan orang-orang yang tidak menggunakan CVS, seperti 'ini berfungsi, tetapi bukan yang '). Hal yang sama untuk tes otomatis: apa gunanya build yang tidak diperbaiki oleh orang yang merusaknya? Anda refactor, dan menulis tes, ia meniadakan dan memecahkan tes. lagi: kata-kata Anda menentangnya, tetapi sekarang tes Anda 'gagal', yang 'membuktikan' bahwa mereka tidak menangkap sesuatu yang berharga. Anda tidak bisa unggul melawan tim Anda.
keppla
4

Aku akan jujur, kamu tidak melukis fotonya yang bagus. Metode kuno, perangkat lunak yang sulit dirawat, keras kepala terhadap cara kerja yang baru, melawan abstraksi, dll

Dari apa yang Anda katakan, jika dia memproduksi perangkat lunak yang sebagian besar bebas bug LEBIH CEPAT daripada Anda tanpa menggunakan perpustakaan yang dapat digunakan kembali dan pola desain yang ditujukan untuk pengembangan aplikasi yang cepat, maka ia mengatakan lebih banyak tentang diri Anda, daripada dia ...

..tentang dia..yeh, cari cara untuk TIDAK bekerja dengannya dan TIDAK dikaitkan dengan pekerjaannya. Sepertinya dia memiliki sikap egois yang khas terhadap pekerjaannya. Anda tidak dapat bekerja dengan seseorang seperti itu, Anda hanya dapat mengamati mereka bekerja dan merapikannya (seperti Anda saat ini).

Damien Roche
sumber
1
Saya dapat kode lebih cepat menggunakan tidak ada yang istimewa pada proyek-proyek kecil, tapi, sial, Anda mempertahankan basis kode yang dirancang dengan lebih baik Di sinilah desain yang baik terbayar. Seluruh desain review kode perangkat lunak bank pada kenyataan bahwa dibutuhkan lebih banyak waktu dalam pemeliharaan kemudian dalam pengkodean untuk memperbaiki bug.
Kortuk
bagian penting "pada proyek kecil". Saya sangat ragu kita berbicara tentang proyek-proyek kecil di sini (baca: upaya tim).
Damien Roche
sama sekali tidak setuju. ini tidak mengatakan apa-apa tentang Walter kecuali bahwa dia tahu apa semua praktik baik ini dan bagaimana mereka bisa bermanfaat bagi tim. tidak menggunakan praktik-praktik ini adalah tentang RAD, karena mereka memperlambat Anda.
Ross
4

Saya pernah melihat ini sebelumnya ,

Dan saya hampir berani bertaruh: Tipe pria ini hanya muncul "cepat" karena ia memiliki seperangkat "pola" di kepalanya. 99% aplikasi Lini Bisnis adalah CRUD , hal-hal dasar.

Dia mungkin menggunakan satu ton Salin & Tempel dari kode yang ada sendiri (tidak ada yang salah dengan itu).

Tapi..

Saat dia menemukan sesuatu yang jauh dari kompleks, itu jatuh, mengapa? karena tidak lagi cocok dengan "pola" dasar.

Sebuah tantangan kecil ...

Saya akan membuat proyek di samping, yang kompleks yang benar-benar mendapat manfaat dari OOP dan penggunaan kembali kode.

Kemudian tunjukkan padanya proyek itu dan minta dia untuk mengimplementasikan fitur untuk fitur tersebut.

Saya kemudian bertaruh bahwa kodenya hampir pasti akan 10 kali lebih besar & 10x lebih buruk jika dia menerapkannya dengan caranya.

Malam gelap
sumber
ya, setuju, tapi lalu apa yang bisa dia lakukan?
Ross
Mengapa menghabiskan waktu untuk mengimplementasikan kembali proyek mainan?
@Andersen karena beberapa program yang tidak ingin mendengarkan alasan hanya menerima bukti begitu diletakkan di depan mereka
Darknight
@Darknight, mungkin tidak, tapi tetap saja, mengapa bahkan mempertimbangkan menghabiskan waktu untuk mengimplementasikan kembali proyek mainan yang tidak berlaku untuk masalah kehidupan nyata?
3

Lihat ini dari sisi bisnis.

Anda membutuhkan lebih banyak waktu untuk menghasilkan kode buggier. Anda menghasilkan lebih sedikit pendapatan karena itu Anda payah.

Jika, seiring waktu, Anda dapat membalikkan ini maka Anda dapat membalikkan ini.

Tapi mungkin, mungkin saja, programmer kuno ini benar-benar dapat mengajarkan Anda beberapa hal tentang menghasilkan kode dengan cepat sehingga bebas bug? Mungkin tekniknya tidak setua sekolah seperti yang Anda pikirkan?

Saya merasa curiga bahwa seseorang dapat menghasilkan kode hebat seperti itu tanpa beberapa praktik yang sangat baik. Anda mungkin dapat mempelajari praktik-praktik itu dan menerapkannya pada "praktik terbaik" dan hal-hal trendi yang Anda pahami.

ElGringoGrande
sumber
2

Jika manajer Anda bukan seorang programmer cobalah dan taruh dalam istilah yang dia akan mengerti.

  • Kita harus menggunakan sourecontrol karena jika tidak, kita bisa mendapatkan masalah besar dalam pemulihan

  • Saya butuh x lebih lama karena dia menolak untuk mengikuti beberapa proses yang cukup mendasar.

Di sisi lain, pastikan Anda tidak terlalu terjebak dalam kesempurnaan yaitu ini adalah praktik terbaik yang harus kita ikuti. Kemungkinan rekan kerja Anda memiliki banyak hal untuk ditambahkan, Anda mungkin harus mendorongnya ke arah yang benar secara perlahan.

Tuan Edmundo
sumber
"recovering" == rollback.
2

Sepertinya Anda rekan kerja tidak pernah berkembang dalam tim. Jenis guru solo semacam itu tidak memungkinkan dinamika kelompok yang baik. Jadi, beri tahu atasan Anda tentang hal itu dan cobalah untuk membahas pro dan kontra dengan teman Anda sebelum melakukannya. Jika Anda bisa melakukannya dengan cara yang lebih baik, tetapi jika dia menolak, naiklah ke dalam cahin perintah

guiman
sumber
5
naik rantai komando membuat musuh dari setiap orang yang Anda pimpin, dan sering kali hasilnya tidak baik.
Kortuk
1

Bicaralah dengan manajer Anda, jelas dan sederhana seperti yang Anda lakukan di sini. Ada potensi di sini untuk pertumbuhan - jika rekan kerja Anda baik seperti yang Anda katakan dia seharusnya tidak membuatnya terlalu meyakinkan untuk membuatnya mulai mengkonversi menggunakan kontrol sumber dan. Net dengan konsep OO yang tepat.

Otávio Décio
sumber
1
Itu jika dia ingin berubah ..
Walter
3
Banyak manajer yang saya miliki di masa lalu tidak menghargai orang baru yang mengubah sesuatu yang tampaknya berhasil. Mereka menghargai produk yang dikerjakan dengan cepat karena mereka tidak mengerti sepenuhnya apa yang Anda lakukan. Sepertinya Anda memiliki bos yang tidak teknis yang sangat merugikan bagian Anda, mungkin.
Kortuk
1
Jika tidak, maka yang lebih penting adalah manajer (dengan asumsi ada satu) mengetahuinya.
Otávio Décio
@ Kortuk - itu adalah poin yang sangat bagus, dan jika itu benar maka OP dalam masalah nyata.
Otávio Décio
Saya pikir jika OP mencoba tindakan untuk mencoba tiba-tiba mengubah hal-hal ini dan memaksanya jari-jari terinjak. Ini membuat musuh dan dapat merusak lingkungan kerja di mana ia dapat belajar banyak dari rekannya.
Kortuk
1

Saya akan berbicara dengan orang lain untuk mendapatkan gambaran yang lebih luas tentang bagaimana keadaan di mana Anda berada. Mungkin ada beberapa pemisahan di sana sehingga kodenya tidak harus bercampur terlalu banyak dengan yang lain karena ada potensi untuk memisahkannya ke wilayahnya sendiri untuk satu cara yang bisa ditangani meskipun ini lebih untuk yang lebih tinggi seperti direktur atau CIO untuk membuat daripada pengembang.

Anda mungkin ingin berbicara dengannya untuk melihat sistem apa yang lebih besar yang telah ia bangun karena ada beberapa sistem perusahaan besar yang cenderung menjadi banyak blok bangunan di mana kode spaghetti dapat mengalir ke tanah, "Oh, itulah sebabnya OOP bisa menjadi baik! " meskipun ini terkadang membawa kasus di mana terbukti cukup berguna untuk melihat bagaimana ini bisa menjadi hal yang berguna untuk dimiliki di kotak peralatan seseorang.

Apati mungkin menjadi tersangka lain untuk melihat apakah itu sebabnya dia menolak beberapa hal yang saya anggap dekat dengan fundamental dalam hal bagaimana saya cenderung merancang kode tetapi kemudian mungkin saya sudah memiliki terlalu banyak bantuan Kool.

JB King
sumber
1

Tantang dia (dengan cara yang baik) untuk membuktikan Anda sebaliknya, tunjukkan sisi keren alat dan praktiknya. Jangan menggurui.

Sebagai contoh, mungkin ia tidak percaya pada versi sebagai bantuan, tetapi tunjukkan padanya bagaimana percabangan / penggabungan dan bagaimana ia dapat bekerja pada beberapa fitur eksperimental tanpa perlu memiliki penggembungan file.

Mengenai OOP, tunjukkan padanya beberapa pola desain keren / kompleks, seperti pola perintah, pola tugas dan bagaimana hal itu dapat menghemat waktu yang berharga, dan semua tim Anda.

Jika Anda tidak membuatnya tertarik pada sedikit pun ... dia mungkin kasus yang hilang, tetapi sekali lagi, Anda memiliki alat untuk tim Anda dan Anda mengungguli dia. Cobalah untuk menggunakan perangkat lunak repositori yang menampilkan / mengirim pesan melalui email yang dapat dilihat oleh manajer Anda, yang akan membawa transparansi kepada manajer Anda dan membiarkan rekan kerja Anda keluar dari gambar (bitbucket.org memiliki repositori pribadi gratis dengan ruang tak terbatas, jika Anda menggunakan lincah).

Pada akhirnya, jangan mencoba meyakinkan dengan kata-kata tetapi dengan tindakan tak terbantahkan, itu adalah cara terbaik untuk berurusan dengan orang-orang keras kepala IMHO (kadang-kadang membalikkan psikologi bekerja juga, lol).

dukeofgaming
sumber
1

baik, teknik yang Anda sebutkan jelas baik, tetapi Anda juga perlu bertanya pada diri sendiri apakah Anda mendorong mereka sebagai ideologi. Saya menemukan bahwa programmer muda cenderung sedikit evangelis tentang apa yang mereka dapatkan di perguruan tinggi. ingat bahwa teknik ini bagus karena hasilnya: kontrol versi memungkinkan pengembangan bersamaan, pelacakan desain, pengembangan, pengujian, tahapan perbaikan bug yang lebih jelas. jika proyek Anda benar-benar jangka pendek, banyak yang tidak sesuai, dan akhirnya akan membuat Anda kurang gesit. ini tidak berarti bahwa praktik terbaik berarti menggunakan setiap praktik terbaik yang mungkin. abstraksi, misalnya, jelas bisa menjadi lebih dari sekadar bantuan, setidaknya beberapa kali. kontrol versi paling masuk akal ketika Anda telah memperpanjang jadwal pengembangan, kode kompleks, banyak programmer - ada semacam sinergi, yang sulit untuk mendapatkan traksi dengan sedikit demi sedikit.

Saya pikir tempat untuk memulai adalah mengawasi potensi penggunaan kembali - seiring berjalannya proyek, pikirkan kesamaan, atau kerangka kerja yang lebih umum. mencoba keluar di depan proyek akan menjadi langkah yang kuat, dan mungkin membiarkan Anda bekerja dalam lebih banyak teknik ...

markhahn
sumber
kontrol versi juga menyediakan riwayat. Penting ketika orang tidak lagi ada.
0

Anda harus meminta penyelia Anda untuk melakukan presentasi untuk SEMUA ORANG tentang mengapa perangkat lunak "versi" bagus. Jangan lajang rekan kerja Anda.

Saya sendiri ragu dengan perangkat lunak kontrol sumber, karena saya melihat orang menyalahgunakannya sepanjang waktu - sebagai cara untuk menghindari pekerjaan.

Rekan kerja saya terus-menerus bergabung, terus-menerus menginjak kaki masing-masing. Tetapi kuliah ramah yang baik tentang manfaatnya akan menjadi hal yang menyenangkan dan akan memacu diskusi.

Ponk
sumber
1
terus-menerus menginjak-injak kaki satu sama lain adalah tanda bahwa perangkat lunaknya buruk arsitekturnya. Ini tidak ada hubungannya dengan kontrol sumber, dan mungkin menjadi lebih buruk tanpa itu.
deadalnix
@deadlnix Itu bisa menjadi alasan juga, tapi saya pikir itu juga bisa dikaitkan, dalam beberapa kasus, untuk penggunaan percabangan yang terlalu bersemangat ketika itu bukan solusi yang tepat.
Nicole