Apa yang harus dilakukan ketika rekan kerja Anda tidak mengerti desain yang berusaha dipertahankan [ditutup]

8

Proyek perangkat lunak yang sedang saya kerjakan melibatkan saya dan programmer lain. Proyek ini melibatkan backend mesin dengan front end MVC. Awalnya saya melakukan banyak pekerjaan pada proyek dan karenanya menyiapkan beberapa metodologi desain sederhana terutama seputar strategi abstraksi dan template.

Sudah cukup lama saya mematikan mesin dan mengerjakan situs web. Namun saya masih mempertahankan minat pada mesin karena saya diberitahu bahwa saya mungkin akan kembali di beberapa titik.

Proyek ini berada di bawah tenggat waktu yang sangat ketat sehingga kita semua bergegas ingin menyelesaikannya di bagian depan dan belakang.

Saya tidak menganggap diri saya sebagai seorang programmer yang hebat dan karenanya saya tidak pernah mencoba dan memaksakan desain atau set metodologi tertentu pada orang-orang karena saya tidak selalu yakin saya benar dan ingin orang lain menawarkan pendapat mereka untuk mencoba dan datang dengan solusi yang lebih baik. Namun saya telah memperhatikan perubahan yang dilakukan pada kode mesin ini yang benar-benar mulai mengganggu saya. Ketika saya berhadapan dengan pengembang untuk menyarankan dia melakukan pekerjaan dengan cara lain dia mengatakan dia tidak melihat intinya karena tampaknya ada sedikit manfaat mengingat tenggat waktu yang ketat.

Saya harus mencoba dan menjelaskan bahwa haack yang dia masukkan dapat berarti pengembangan lebih lanjut setelah rilis dan saya tidak berpikir adil untuk membuat orang lain mengambil slack ketika kita bisa memperbaikinya sekarang. Saya menghabiskan sekitar 30 menit untuk melakukan apa yang telah saya lakukan dan pada akhirnya dia meminta saya untuk menulis kode sehingga dia bisa menyalinnya.

Dasar dari apa yang saya awalnya setup adalah:

  • Kelas abstrak x
  • Kelas pabrik abstrak untuk membuat instance konkret x

Apa yang terjadi adalah dia telah meletakkan beberapa pernyataan if yang dapat dengan mudah dimasukkan sebagai metode virtual / abstrace pada kelas abstrak dan kemudian diimplementasikan sesuai dengan perubahan baru mengikuti prinsip yang sama dari metode lain pada kelas abstrak.

Ini tampaknya sepele bagi saya, namun dia bahkan tidak bisa memahami ini bahkan ketika saya menunjukkan kepadanya kelas-kelas yang terlibat.

Sekarang pertanyaan saya adalah:

  1. Apakah ini tidak adil untuk berasumsi bahwa ia seharusnya memahami konsep ini. Saya menyadari bahwa kami berada di tenggat waktu yang ketat, tetapi saya pikir itu sepele. Programmer seharusnya setidaknya tingkat menengah.
  2. Ini telah terjadi di sejumlah tempat dan saya terus berusaha membuatnya berubah tetapi sepertinya tidak. Haruskah saya mengabaikannya saja?
  3. Haruskah saya mengangkat masalah ini di tempat lain, atau hanya menghisapnya dan ketika saya mengembalikan proyek hanya berkeliling mengubah semua hal ini.

Bagiannya dari proyek ini tidak akan selesai yang mengapa saya harus kembali dan membantunya. Saya benar-benar tidak mau juga, karena ia telah mengambil proyek dengan tidak hebat, tetapi arsitektur ok dan benar-benar memasukkan banyak kode berantakan yang lebih sering tidak mengikuti apa yang sedang berusaha dicapai.

Jika pertanyaannya terlalu kabur atau ranty, harap beri tahu saya dan saya akan mencoba dan mengeditnya.

Diedit: Proyek ini diperkirakan akan berlanjut setelah tenggat waktu awal karena sudah ada pekerjaan lanjutan yang direncanakan dan pekerjaan yang kami tidak cocok dan telah disepakati untuk dilaksanakan nanti.

dreza
sumber
Anda tidak sendirian ... Terkadang saya ingin berbagi desain baru yang saya lihat dan akhirnya saya harus menjelaskannya dalam istilah awam ... Tidak begitu menarik lagi.
wleao
Saya tidak akan keberatan jika dia sebagai programmer junior tetapi dia telah diberi bagian yang sangat penting dari proyek ini karena dia seharusnya menjadi level menengah. Saya sudah mencoba beberapa kali untuk berdiskusi tentang desain, mengapa kami melakukan sesuatu tetapi dia hanya memberi saya tatapan kosong. Hanya tidak yakin apa yang bisa saya lakukan untuk melanjutkan dari sini.
dreza
Apakah ini memengaruhi pekerjaan Anda? Hasil dari proyek? Apakah proyek ini memiliki klien? Seorang bos? Jika jawaban untuk semua pertanyaan itu adalah Ya Ya Ya Ya ... Maka Anda harus mulai berpikir untuk membahasnya dengan kolega Anda dan bos Anda.
wleao
4
Saya memilih untuk menutup pertanyaan ini sebagai di luar topik karena ini bukan tentang pemrograman, ini tentang berinteraksi dengan orang-orang di tempat kerja.
Ixrec
1
Saya akan pergi dengan produk ternak ... tapi saya pikir tempat kerja. Saya akan mempertimbangkan praktik buruk itu.
James Snell

Jawaban:

9

Dari mengawasi mungkin lebih dari 200 pengembang selama 25 tahun terakhir, saya rasa - proporsi pengembang yang secara intuitif nyaman dengan jenis abstraksi desain yang Anda bicarakan - adalah sekitar sepertiga. Pendekatan saya telah berevolusi dari mengharapkan untuk memperbaikinya dengan pembinaan, pelatihan dan dorongan, untuk masih bekerja pada pembinaan dll - tetapi mengakui bahwa kenyamanan ini memiliki kualitas bawaan untuk itu, dan Anda sering tidak dapat mengubahnya. Anda bertanya apakah itu adil. Saya pikir bagian yang tidak adil bagi manajemen Anda adalah mengharapkan anggota tim pengembangan untuk memikul tanggung jawab atas ketegangan ini dan dampaknya. Jika Anda memiliki seorang pemimpin di sekitar - cobalah menjelaskan ketegangan kepada mereka dalam istilah MEREKA bukan milik Anda. Ini bukan tentang pengembang lain - ini tentang efisiensi, dampak dan risiko di masa depan = garis bawah dan karenanya tanggung jawab manajemen yang jelas. Cari solusi organisasi yang mengeksploitasi keterampilan Anda yang relevan. Bisakah Anda mengambil lebih banyak pekerjaan bimbingan desain, dan orang lain melakukan lebih banyak penyelesaian. Jangan berasumsi bahwa semua pengembang tidak menginginkan peran ini - banyak pengembang senang pandai menyelesaikan hal-hal untuk memuaskan pelanggan dengan cepat - dan berterima kasih atas lingkungan desain berkualitas yang disediakan oleh orang lain.

Pete Howard
sumber
Ceria pete. Saya hanya berasumsi bahwa semua pengembang ingin tertarik pada desain dan konsep dan refactoring untuk membuat sesuatu yang lebih baik, dll. Saya kira saya harus belajar bahwa ada semua jenis di luar sana dan itu adalah masalah menemukan kecocokan untuk masing-masing dan berurusan dengan bahwa.
dreza
Saya akan memberi Anda + lagi untuk kalimat terakhir jika saya bisa.
mattnz
4

Terkadang ini bukan konsepnya tetapi waktu yang dibutuhkan untuk mengonsumsinya. Orang tidak mendapatkan sesuatu ketika dijelaskan dengan cepat oleh seseorang, tetapi memberi mereka waktu untuk mencari diri sendiri dan kemudian mereka akan mendapatkannya. Terkadang butuh sedikit waktu agar konsep ini bisa diterima.

Saya memahami tenggat waktu sangat ketat, dan pengetahuan terbatas yang mungkin memiliki dampak lebih dari yang Anda inginkan, tetapi dalam kasus ini (dan saya membuat asumsi di sini), apakah Anda mengarahkannya ke dokumen pola desain pabrik , atau apakah Anda hanya mengharapkan dia untuk memahami kode Anda dengan melambaikannya di bawah hidungnya sambil berteriak "Anda hanya tidak mengerti, Anda hanya tidak mengerti" :)

Saya mungkin bahkan telah melakukan hal yang sama pada diri saya sendiri - menunjukkan kepada orang-orang kode itu, mengharapkan mereka untuk langsung mengerti, frustrasi ketika mereka terlihat kosong, memperbesarnya dengan sia-sia untuk membuat mereka mengerti, merasa kesal ketika mereka menjadi semakin bingung, lalu baik menyikut mereka keluar dari jalan dan melakukannya sendiri atau diminta untuk merumput dan melakukannya sendiri jika aku sangat pintar. Semua itu merupakan reaksi yang dapat dimengerti atas upaya saya yang buruk sebagai seorang guru.

gbjbaanb
sumber
Agar adil, itulah yang saya lakukan. Saya mungkin membuat asumsi bahwa ini akan mudah untuk diambil. Mungkin akan membahas beberapa di antaranya bersamanya dan melihat apakah dia mau membaca tentang hal itu
dreza
3

Kelas abstrak, pabrik kelas, jangan salah paham, tetapi terdengar seperti artileri untuk membunuh burung. Pola ada untuk memecahkan masalah bukan untuk membuatnya. Anda mengakui bahwa proyek ini adalah proyek 2 orang.

Namun, apa yang dilakukan kolega Anda salah, adalah bahwa ia tidak mengikuti pedoman. Ini akan menyebabkan kekacauan di hilir. Jika proyek itu diabstraksikan dengan segala cara, maka ia harus berusaha mengikuti.

Coder
sumber
Saya kira itu adalah proyek dua orang. Saya bekerja di web ui dengan orang lain jadi saya kira semuanya 3 orang, tapi yang satu itu hanya kami berdua.
dreza
@dreza: Pokoknya, cobalah mencari argumen yang bagus mengapa proyek ini dilakukan seperti yang dilakukan. Cobalah untuk memberi makan gagasan bahwa konsistensi dan arsitektur yang tidak terbagi akan membantu pemeliharaan dan ekstensibilitas. Cobalah untuk memberi makan ide-ide ini kepada rekan kerja Anda. Juga, mungkin dia memiliki masalah dalam memahami beberapa konsep, dalam hal ini, cobalah untuk menemukan contoh sederhana dan konkret yang menunjukkan di mana Anda benar-benar dapat memperoleh sesuatu dengan pendekatan yang Anda pilih. Anda harus membuktikan bahwa kerja ekstra tidak sia-sia untuk membuat rekan kerja Anda menerimanya tanpa perlawanan.
Coder
Coder ceria. Saya memang berpikir bahwa mungkin saya tidak menyampaikan manfaat cukup tetapi berjuang untuk datang dengan hal yang lebih sederhana dari apa yang saya lakukan. Akan tetap bekerja di atasnya
dreza
1

Anda tidak ingin memaksakan pola padanya sejak awal, tetapi Anda bisa melakukan diskusi singkat tentang beberapa hal yang Anda lakukan. Di bawah batasan waktu, saya ragu dia akan dapat memahami konsep Anda cukup untuk dapat mengimplementasikannya secepat 'hack'-nya. Anda ingin dia memperbaiki hal-hal sekarang untuk mencegah orang lain / Anda harus memperbaikinya nanti, tetapi proyek tidak akan selesai tepat waktu. Entah dia tidak mengerti apa yang Anda lakukan atau merasa itu akan memakan waktu terlalu lama dan tidak ada gunanya mengambil risiko penundaan.

Biarkan diketahui saat proyek dapat diselesaikan dan menyampaikan kekhawatiran atas keterbatasan ini di masa depan dan kebutuhan akan waktu tambahan. Anda akan mengalami kesulitan membuat semua orang melihatnya dengan cara Anda jika klien puas. Ini mungkin tidak benar, tetapi itu adalah kenyataan.

JeffO
sumber
Saya memang berpikir saya akan mengajukan kekhawatiran ini setelah fakta, tetapi saya pikir ini sangat kecil sehingga saya bisa mencoba menjelaskannya kepadanya dan dia akan melakukannya. Tidak menyadari bahwa membuat metode abstrak dan menimpanya adalah tugas pemrograman yang rumit.
dreza
@Dreza - Apakah kolega ini bekerja lebih lama di perusahaan ini daripada yang Anda miliki?
Ramhound
Tidak, saya sudah bekerja 1 bulan lebih lama. Kami berdua dipekerjakan untuk proyek ini jadi pada permulaan saya berasumsi bahwa kami memiliki kedudukan yang sama dll
dreza
1

Mungkin bukan masalah teknis, jelas bukan masalah pemrograman. Kedengarannya tidak lebih dari debat tradisional "pemrograman untuk kemungkinan masa depan vs tenggat waktu rapat hari ini", yang merupakan kasus khusus "Saya tidak suka cara orang lain melakukan pekerjaannya, saya ingin dia melakukannya dengan cara saya ". Terjadi setiap hari di setiap tempat kerja dengan lebih dari 1 anggota staf.

Keterampilan manajemen dan penjual Anda akan lebih penting daripada superioirty teknis dalam desain Anda jika Anda ingin "memenangkan" yang ini.

Saya sarankan membaca buku-buku seperti "Cara memenangkan pertengkaran dan memengaruhi orang" dan "Apa warna parasut Anda" dan buku keterampilan orang lain.

mattnz
sumber
Sebagian besar praktik yang diberikan dalam pertanyaan bukanlah alternatif yang lebih lambat dari apa yang ada saat ini. Ini sebagian besar masalah menempatkan potongan kode di tempat yang tepat, bukan di radom satu. Jadi tidak ada ini bukan «pemrograman untuk tenggat waktu yang mungkin vs rapat hari ini». Bagaimanapun, benar tentang buku keterampilan orang.
deadalnix