Bagaimana Anda memberi tahu seseorang bahwa mereka menulis kode yang buruk? [Tutup]

217

Saya telah bekerja dengan sekelompok kecil orang pada proyek pengkodean untuk bersenang-senang. Ini adalah kelompok yang terorganisir dan cukup kohesif. Orang-orang yang bekerja dengan saya semua memiliki berbagai perangkat keterampilan yang terkait dengan pemrograman, tetapi beberapa dari mereka menggunakan metode yang lebih tua atau salah, seperti variabel global yang berlebihan, konvensi penamaan yang buruk, dan hal-hal lainnya. Sementara semuanya berjalan, implementasinya buruk. Apa cara yang baik untuk dengan sopan bertanya atau memperkenalkan mereka untuk menggunakan metodologi yang lebih baik, tanpa itu muncul sebagai mempertanyakan (atau menghina) pengalaman dan / atau pendidikan mereka?

MadMAxJr
sumber
Max, apakah itu kamu? Tidak apa-apa, saya dapat memberitahu Anda bahwa dengan ikon TF2 Engineer yang selalu Anda gunakan. Apakah Anda mengatakan kode saya jelek? ... ... ... ... hal-hal yang saya katakan ketika 5 menit sampai saya meninggalkan pekerjaan dan tidak ada yang tersisa untuk dilakukan.
Powerlord
Saya tidak mencoba untuk memilih kejadian tertentu, saya juga tidak mencoba untuk mengatakan kode saya sempurna dan mengagumkan, hanya saja saya merasa ini adalah subjek yang rumit, dan saya sangat tertarik dengan pendapat kedua tentang masalah ini.
Maximillian
14
Saya kira terkikik setiap kali Anda melirik layar mereka keluar dari pertanyaan ...
Steven A. Lowe
57
Apakah memutar balik setiap komitmen mereka dengan pesan "Saya pikir lebih baik jika kita semua berpura-pura ini tidak pernah terjadi" pilihan?
Draemon
1
Jika Anda membaca stack overflow, Anda adalah programmer yang baik :-)
Matthew Farwell

Jawaban:

188

Perkenalkan pertanyaan untuk membuat mereka sadar bahwa apa yang mereka lakukan salah. Misalnya, ajukan pertanyaan semacam ini:

Mengapa Anda memutuskan untuk menjadikannya variabel global?

Mengapa Anda memberi nama itu?

Itu menarik. Saya biasanya melakukan ini dengan cara saya karena [Masukkan alasan mengapa Anda lebih baik]

Apakah cara itu berhasil? Saya biasanya [Sisipkan bagaimana Anda akan membuatnya tampak konyol]

Saya pikir cara ideal untuk melakukan ini adalah secara halus bertanya kepada mereka mengapa mereka mengkode dengan cara tertentu. Anda mungkin menemukan bahwa mereka percaya bahwa ada manfaat untuk metode lain. Kecuali saya tahu alasan gaya pengkodean mereka adalah karena informasi yang salah saya tidak akan pernah menilai cara saya lebih baik tanpa alasan yang baik. Cara terbaik untuk melakukannya adalah dengan bertanya kepada mereka mengapa mereka memilih itu; pastikan untuk terdengar tertarik dengan alasan mereka, karena itulah yang Anda butuhkan untuk menyerang, bukan kemampuan mereka.

Standar pengkodean pasti akan membantu, tetapi jika itu adalah jawaban untuk setiap proyek perangkat lunak maka kita semua akan minum koktail di pulau pribadi kita di surga. Pada kenyataannya, kita semua rentan terhadap masalah dan proyek perangkat lunak masih memiliki tingkat keberhasilan yang rendah. Saya pikir masalah sebagian besar akan berasal dari kemampuan individu daripada masalah dengan konvensi, itulah sebabnya saya sarankan bekerja melalui masalah sebagai sebuah kelompok ketika sebuah masalah muncul dengan kepalanya yang jelek.

Yang terpenting, jangan langsung berasumsi bahwa jalan Anda lebih baik . Pada kenyataannya, mungkin memang demikian, tetapi kita berhadapan dengan pendapat orang lain dan bagi mereka hanya ada satu solusi. Jangan pernah mengatakan bahwa cara Anda adalah cara yang lebih baik untuk melakukannya kecuali Anda ingin mereka melihat Anda sebagai pecundang.

Mike B
sumber
Ini adalah teknik yang baik, dan mungkin yang paling tepat dalam lingkungan profesional. Jika kolega Anda menjawab pertanyaan seperti ini dengan sembrono alih-alih benar-benar mempertimbangkannya, atau memiliki jawaban yang lemah, kemungkinan besar mereka mengabaikan standar kode atau "otoritas" lainnya juga.
Greg D
1
Saya setuju, tetapi keluhan saya kebanyakan berkaitan dengan programmer yang sensitif. Jika Anda langsung memberi tahu seseorang bahwa kode mereka salah maka, tentu saja, mereka tidak akan terlalu senang. Itu konyol, tetapi bekerja dan mempelajari masalah dengan mereka mungkin akan memberikan hasil terbaik untuk semua orang.
Mike B
24
Saya pikir pertanyaan seperti "Mengapa Anda memberi nama itu?" dekat, tetapi tidak tepat. Itu segera membuat saya berpikir tentang keputusan saya. "Itu menarik. Saya biasanya melakukan ini dengan cara saya karena [Masukkan alasan mengapa Anda lebih baik]" jauh lebih baik karena itu membuat saya memikirkan cara - cara selain dari apa yang sudah saya putuskan. Dengan nada terakhir, saya lebih cenderung melihat cahaya.
Bill the Lizard
1
Di satu sisi, mereka harus berpikir defensif. Jika saya hanya menunjukkan kepada mereka cara saya melakukan sesuatu, mereka mungkin hanya memutuskan untuk tetap dengan metode yang mereka tahu. Kompromi akan baik, mengatakan bagaimana Anda akan melakukannya dan kemudian secara halus menambahkan mengapa metode Anda lebih cepat / lebih baik / etc.
Mike B
Dan bagaimana jika ada jawaban yang konsisten adalah sesuatu seperti: "karena terlalu banyak pekerjaan untuk mengubah itu" (seringkali memang karena banyaknya kode yang ada) atau "karena kita selalu melakukannya dengan cara ini dan itu bekerja dengan baik "?
Dimitri C.
85

Mulai lakukan tinjauan kode atau pasangkan pemrograman.

Jika tim tidak mau melakukannya, coba ulasan desain mingguan. Setiap minggu, bertemu selama satu jam dan berbicara tentang suatu bagian kode. Jika orang-orang tampak defensif, pilih kode lama yang tidak ada lagi yang terlampir secara emosional, setidaknya di awal.

Seperti @JesperE: berkata, fokus pada kode, bukan koder.

Ketika Anda melihat sesuatu yang Anda pikir harus berbeda, tetapi orang lain tidak melihatnya dengan cara yang sama, maka mulailah dengan mengajukan pertanyaan yang mengarah pada kekurangan, alih-alih menunjukkannya. Sebagai contoh:

Global : Apakah Anda pikir kami ingin memiliki lebih dari satu ini? Apakah Anda pikir kami ingin mengontrol akses ke ini?

Status yang dapat berubah : Apakah Anda pikir kami ingin memanipulasi ini dari utas lainnya?

Saya juga merasa terbantu untuk fokus pada keterbatasan saya , yang dapat membantu orang-orang rileks. Sebagai contoh:

fungsi panjang : Otak saya tidak cukup besar untuk menampung semua ini sekaligus. Bagaimana kita bisa membuat potongan-potongan kecil yang bisa saya tangani?

nama buruk : Saya mudah bingung ketika membaca kode yang jelas; ketika nama-nama menyesatkan, tidak ada harapan bagi saya.

Pada akhirnya, tujuannya bukan untuk Anda mengajarkan tim Anda cara membuat kode yang lebih baik. Ini untuk membangun budaya belajar di tim Anda. Di mana setiap orang mencari bantuan orang lain untuk menjadi programmer yang lebih baik.

Jay Bazuzi
sumber
Diperbanyak - jika semua orang di tim sedang ditinjau rekan kode mereka. orang-orang yang Anda pikir memiliki kebiasaan buruk tidak akan merasa menjadi korban
NotJarvis
2
Jika kolega Anda merespons dengan baik hal-hal seperti itu, mereka lebih baik daripada saya. Ketika saya mencoba menarik komentar seperti itu, saya biasanya disuruh menghadapinya. Atau mungkin disuguhi monolog multi-halaman tentang bagaimana jalan mereka adalah satu-satunya cara. Meskipun .Net dibangun dengan parsing string-to-integer, dangit.
Greg D
@Reg: Aduh. Kerumunan tangguh Anda sampai di sana!
Jay Bazuzi
3
Terkait dengan nama buruk: baca tentang efek Stroop. Coba baca warnanya, bukan kata-katanya. Sekarang pikirkan tentang bagaimana Anda memberi nama variabel. Jika Anda tidak menemukan nama-nama bagus yang benar-benar menggambarkan variabel apa yang digunakan untuk Anda, Anda akan kesulitan membaca dan memahami kode Anda ketika Anda kembali lagi nanti.
Igor Popov
lol @ "terlampir secara emosional ke kode." jika Anda memiliki masalah yang ada di tim Anda, menurut saya sudah waktunya untuk menemukan tim lain untuk bekerja dengannya.
dtc
45

Perkenalkan ide standar kode. Yang paling penting tentang standar kode adalah bahwa ia mengusulkan gagasan konsistensi dalam basis kode ( idealnya , semua kode harus terlihat seperti itu ditulis oleh satu orang dalam satu duduk) yang akan mengarah pada kode yang lebih mudah dipahami dan dipelihara.

Scott Dorman
sumber
1
Memang. Sesuatu yang kita miliki dalam ulasan kode adalah bahwa jika kode tidak konsisten dengan standar, pengulas berhenti membaca dan tidak kembali ke kode sampai sesuai.
1
Salah satu cara yang lebih baik dan lebih sederhana untuk menegakkannya.
Scott Dorman
Saya pikir itu tergantung pada sifat masalah. Bahkan dengan standar pengkodean masih ada banyak cara untuk melakukan sesuatu, dan mungkin beberapa kelemahan dipisahkan dari standar yang dipaksakan.
Mike B
2
@Scott Durman: "semua kode harus terlihat seperti ditulis oleh satu orang dalam satu duduk" ... LOL !!! ;-)
Galwegian
5
@Galwegian: Pertama, jika Anda akan menggunakan nama lengkap saya setidaknya mengejanya dengan benar. :) Mengapa pernyataan itu lucu bagi Anda? Seperti yang saya katakan, ini adalah standar kode yang ideal. Saya tidak pernah mengatakan itu sepenuhnya dapat dicapai, tetapi memberikan tujuan yang jelas dan terdefinisi dengan baik untuk bekerja.
Scott Dorman
23

Anda harus menjelaskan mengapa cara Anda lebih baik .

Jelaskan mengapa suatu fungsi lebih baik daripada memotong & menempel.

Jelaskan mengapa sebuah array lebih baik dari $ foo1, $ foo2, $ foo3.

Jelaskan mengapa variabel global berbahaya, dan bahwa variabel lokal akan membuat hidup lebih mudah.

Cukup mengeluarkan standar pengkodean dan mengatakan "lakukan ini" tidak ada gunanya karena tidak menjelaskan kepada programmer mengapa itu hal yang baik.

Andy Lester
sumber
1
Saya pikir ini berlaku untuk hampir semua perintah yang mungkin (tidak hanya pemrograman yang terkait).
Dimitri C.
"mengeluarkan standar pengkodean dan mengatakan 'lakukan ini' tidak berharga" - pertama, dokumen standar pengkodean tertulis yang baik harus mencakup alasan untuk setiap poin yang dibuatnya, kedua, bahkan tanpa dasar pemikiran itu, itu hampir tidak berharga - itu masih dapat digunakan sebagai item referensi jika disetujui oleh tim, ketika beberapa kode ditemukan yang tidak mengikutinya, untuk menghindari diskusi tanpa akhir tentang "tapi saya suka seperti ini!"
Johann Gerell
14

Pertama, saya akan berhati-hati untuk tidak menilai terlalu cepat. Sangat mudah untuk mengabaikan beberapa kode sebagai buruk, ketika mungkin ada alasan bagus mengapa demikian (misalnya: bekerja dengan kode lama dengan konvensi aneh). Tapi mari kita asumsikan sejenak bahwa mereka benar-benar buruk.

Anda dapat menyarankan untuk menetapkan standar pengkodean, berdasarkan masukan tim. Tetapi Anda benar-benar perlu mempertimbangkan pendapat mereka, bukan hanya memaksakan visi Anda tentang kode yang baik.

Pilihan lain adalah membawa buku-buku teknis ke kantor (Kode Lengkap, Efektif C ++, Programmer Pragmatis ...) dan menawarkan untuk meminjamkannya kepada orang lain ("Hei, saya sudah selesai dengan ini, ada yang mau meminjamnya?" )

Kena
sumber
12

Jika memungkinkan, pastikan mereka mengerti bahwa Anda mengkritik kode mereka , bukan mereka secara pribadi.

JesperE
sumber
10

Sarankan alternatif yang lebih baik dengan cara yang tidak konfrontatif.

"Hei, aku pikir cara ini juga akan berhasil. Apa yang kalian pikirkan?" [Gesture untuk kode yang jelas lebih baik di layar Anda]

JosephStyons
sumber
10

Buat ulasan kode, dan mulai dengan meninjau kode ANDA .

Ini akan membuat orang merasa nyaman dengan seluruh proses peninjauan kode karena Anda memulai proses dengan meninjau kode Anda sendiri, bukan kode mereka. Memulai dengan kode Anda juga akan memberi mereka contoh yang baik tentang bagaimana melakukan sesuatu.

Giovanni Galbo
sumber
8

Mereka mungkin berpikir gayamu juga bau. Dapatkan tim bersama untuk membahas seperangkat pedoman gaya pengkodean yang konsisten. Setuju dengan sesuatu. Apakah itu cocok dengan gaya Anda, bukan masalah, tetap pada gaya apa pun selama itu konsisten adalah yang penting.

SumoRunner
sumber
Oh, ini memang benar! "Mengapa Anda menggunakan kelas untuk memegang string sementara Anda dapat menggunakan rutinitas level rendah C untuk melakukan manipulasi string (termasuk alokasi memori / deallokasi dan menambahkan secara manual 0-terminator)?" Dan memang, para programmer sering menggunakan gaya pemrograman mereka untuk berhasil menyelesaikan proyek-proyek besar, aneh tapi benar.
Dimitri C.
7

Contohnya. Tunjukkan pada mereka dengan cara yang benar.

Santai saja. Jangan membasmi mereka untuk setiap kesalahan kecil, mulai dengan hal-hal yang benar-benar penting.

Bill the Lizard
sumber
7

Gagasan standar kode adalah ide yang bagus.

Tetapi pertimbangkan untuk tidak mengatakan apa-apa, terutama karena itu untuk bersenang-senang, dengan, mungkin, orang-orang yang berteman dengan Anda. Itu hanya kode ...

Jeff Kotula
sumber
1
Saya suka poin ini, seperti untuk proyek ini, 'jika berhasil, itu berhasil' akan cukup, tetapi saya merasa bahwa menemukan cara yang tepat untuk menangani masalah ini akan membantu lebih banyak daripada naluri awal untuk menunjuk dan berkata ' Ini salah'.
Maximillian
7
"Itu hanya kode"? Ini hanya produk dari usaha Anda, wajah profesional Anda, kontribusi Anda kepada perusahaan atau untuk kemanusiaan pada umumnya. Siapa yang peduli apakah itu baik atau buruk? Saya yakin rekan kerja Anda dengan marah membaca topik ini, mencoba mencari cara untuk memberi tahu Anda "kode adil" Anda adalah sampah.
4
Itu hanya kode? Mimpi buruk pemeliharaan Helloooo.
MetalMikester
6

Ada beberapa saran yang sangat bagus dalam buku Gerry Weinberg "The Psychology of Computer Programming" - seluruh gagasannya tentang "pemrograman tanpa ego" adalah tentang bagaimana membantu orang menerima kritik terhadap kode mereka sebagai berbeda dari kritik terhadap diri mereka sendiri.

andygeers
sumber
5

Praktik penamaan yang buruk: Selalu tidak bisa dimaafkan.

Dan ya, jangan selalu menganggap bahwa jalan Anda lebih baik ... Ini bisa sulit, tetapi objektivitas harus dipertahankan.

Saya sudah memiliki pengalaman dengan seorang pembuat kode yang memiliki penamaan fungsi yang mengerikan, kodenya lebih buruk daripada tidak dapat dibaca. Fungsi berbohong tentang apa yang mereka lakukan, kode itu tidak masuk akal. Dan mereka protektif / tahan untuk meminta orang lain mengubah kode mereka. ketika dihadapkan dengan sangat sopan, mereka mengakui bahwa nama itu buruk, tetapi ingin mempertahankan kepemilikan mereka atas kode tersebut dan akan kembali dan memperbaikinya "di kemudian hari." Ini di masa lalu sekarang, tetapi bagaimana Anda menghadapi situasi di mana kesalahan mereka DIAKUI, tetapi kemudian dilindungi? Ini berlangsung untuk waktu yang lama dan saya tidak tahu bagaimana menembus penghalang itu.

Variabel global: Saya sendiri bukan ITU yang menyukai variabel global, tetapi saya tahu beberapa programmer yang sangat baik yang menyukainya BANYAK. Sedemikian rupa sehingga saya menjadi percaya bahwa mereka sebenarnya tidak terlalu buruk dalam banyak situasi, karena mereka memungkinkan untuk kejelasan, kemudahan debugging. (tolong jangan nyalakan / downvote saya :)) Maka, saya telah melihat banyak kode bebas bug yang sangat bagus, efektif, yang menggunakan variabel global (tidak dimasukkan oleh saya!) dan banyak buggy, tidak mungkin membaca / memelihara / memperbaiki kode yang dengan cermat menggunakan pola yang tepat. Mungkin ada IS tempat (meskipun menyusut mungkin) untuk variabel global? Saya sedang mempertimbangkan memikirkan kembali posisi saya berdasarkan bukti.

David Frenkel
sumber
5

Mulai wiki di jaringan Anda menggunakan beberapa perangkat lunak wiki.

Mulai kategori di situs Anda yang disebut "praktik terbaik" atau "standar pengkodean" atau sesuatu.

Arahkan semua orang untuk itu. Berikan umpan balik.

Ketika Anda melakukan rilis perangkat lunak, minta orang yang tugasnya adalah memasukkan kode ke dalam push build pada pengembang, mengarahkan mereka ke halaman Wiki di atasnya.

Saya telah melakukan ini di organisasi saya dan butuh beberapa bulan bagi orang untuk benar-benar memahami penggunaan Wiki, tetapi sekarang ini adalah sumber yang sangat diperlukan.

Schnapple
sumber
4

Jika Anda bahkan memiliki standar pengkodean yang longgar, dapat menunjukkan hal itu, atau menunjukkan bahwa Anda tidak dapat mengikuti kode karena itu bukan format yang benar, mungkin bermanfaat.

Jika Anda tidak memiliki format pengkodean, sekarang saat yang tepat untuk mendapatkannya. Sesuatu seperti jawaban untuk pertanyaan ini mungkin bermanfaat: /programming/4121/team-coding-styles

warren
sumber
4

Saya selalu mengikuti garis 'Ini yang akan saya lakukan'. Saya tidak mencoba dan memberi ceramah kepada mereka dan memberi tahu mereka bahwa kode mereka adalah sampah tetapi hanya memberikan sudut pandang alternatif yang semoga dapat menunjukkan kepada mereka sesuatu yang jelas sedikit lebih rapi.

Craig
sumber
3

Mintalah orang yang bersangkutan menyiapkan presentasi kepada seluruh kelompok mengenai kode untuk modul perwakilan yang telah mereka tulis, dan biarkan Tanya Jawab mengurusnya (percayalah, itu akan, dan jika itu adalah kelompok yang baik, itu seharusnya tidak jelek).

Jim
sumber
3

Saya suka kode, dan tidak pernah memiliki kursus dalam hidup saya tentang apa pun yang berkaitan dengan informatika saya mulai sangat buruk dan mulai belajar dari contoh, tetapi apa yang saya selalu ingat dan ingat dalam pikiran saya sejak saya membaca buku "Gang Of Four" adalah :

"Semua orang bisa menulis kode yang dimengerti oleh mesin, tapi tidak semua bisa menulis kode yang dipahami manusia"

dengan mengingat hal ini, ada banyak yang harus dilakukan dalam kode;)

balexandre
sumber
Saya menemukan itu benar juga. Bacaan yang menyenangkan: Hal-Hal yang Seharusnya Tidak Pernah Anda Lakukan, Bagian I oleh Joel Spolsky joelonsoftware.com/articles/fog0000000069.html Dia mengatakannya dalam kata-katanya: "Lebih sulit untuk membaca kode daripada menulisnya."
mjn
3

Saya tidak bisa cukup menekankan kesabaran. Saya telah melihat hal yang persis seperti ini menjadi bumerang sebagian besar karena seseorang ingin perubahan terjadi SEKARANG. Beberapa lingkungan membutuhkan manfaat evolusi, bukan revolusi. Dan dengan memaksa perubahan hari ini, itu bisa membuat lingkungan yang sangat tidak bahagia untuk semua.

Kuncinya adalah kunci. Dan pendekatan Anda perlu memperhitungkan lingkungan tempat Anda berada.

Sepertinya Anda berada di lingkungan yang memiliki banyak "individualitas". Jadi ... Saya tidak akan menyarankan satu set standar pengkodean. Ini akan menemukan bahwa Anda ingin mengambil proyek "menyenangkan" ini dan mengubahnya menjadi proyek kerja yang sangat terstruktur (oh bagus, apa selanjutnya ... dokumen fungsional?). Sebaliknya, seperti kata orang lain, Anda harus menghadapinya sampai batas tertentu.

Tetap sabar dan bekerja untuk mendidik orang lain ke arah Anda. Mulailah dengan tepi (titik-titik di mana kode Anda berinteraksi dengan orang lain) dan ketika berinteraksi dengan kode mereka cobalah untuk menjadikannya sebagai kesempatan untuk membahas antarmuka yang telah mereka buat dan tanyakan kepada mereka apakah akan baik-baik saja dengan mereka jika diubah (oleh Anda atau mereka). Dan jelaskan mengapa Anda menginginkan perubahan ("itu akan membantu menangani perubahan atribut subsistem yang lebih baik" atau apa pun). Jangan memilih dan mencoba mengubah semua yang Anda anggap salah. Setelah Anda berinteraksi dengan orang lain di ujung tanduk, mereka harus mulai melihat bagaimana itu akan menguntungkan mereka pada inti kode mereka (dan jika Anda mendapatkan momentum yang cukup, masuk lebih dalam dan benar-benar mulai membahas teknik modern dan manfaat dari standar pengkodean). Jika mereka masih tidak melihatnya ... mungkin Anda

Kesabaran. Evolusi, bukan revolusi.

Semoga berhasil.

betis
sumber
3

Saya tidak mengenakan toga dan membuka sekaleng metode sosial.

The Metode Socrates dinamai Klasik Yunani filsuf Socrates, adalah bentuk penyelidikan filosofis di mana penanya mengeksplorasi implikasi dari posisi orang lain, untuk merangsang pemikiran rasional dan ide-ide menerangi. Metode dialektik ini sering melibatkan diskusi oposisi di mana pembelaan dari satu sudut pandang diadu terhadap yang lain; salah satu peserta dapat memimpin yang lain untuk bertentangan dengan dirinya sendiri dalam beberapa cara, memperkuat poin penanya sendiri.

Ed Guiness
sumber
Masalah dengan metode Socrates adalah bahwa tidak ada yang memiliki kesabaran untuk itu, atau kesediaan untuk mengikuti.
Patrick Szalapski
2

Banyak jawaban di sini berkaitan dengan pemformatan kode yang saat ini tidak terlalu relevan, karena sebagian besar IDE akan memformat ulang kode Anda dengan gaya yang Anda pilih. Yang benar-benar penting adalah bagaimana kodenya bekerja, dan posternya tepat untuk melihat variabel global, menyalin & menempelkan kode, dan konvensi penamaan hewan peliharaan saya yang kesal. Ada yang namanya kode buruk dan tidak ada hubungannya dengan format.

Bagian yang baik adalah bahwa sebagian besar buruk karena alasan yang sangat baik, dan alasan-alasan ini umumnya dapat diukur dan dijelaskan. Jadi, dengan cara yang tidak konfrontatif, jelaskan alasannya. Dalam banyak kasus, Anda bahkan dapat memberikan skenario penulis di mana masalah menjadi jelas.

Nerdfest
sumber
2

Saya bukan pengembang utama pada proyek saya dan karena itu tidak dapat memaksakan standar pengkodean tetapi saya telah menemukan bahwa kode buruk biasanya menyebabkan masalah lebih cepat daripada kemudian, dan ketika itu terjadi saya di sana dengan ide atau solusi yang lebih bersih.

Dengan tidak menyela pada saat itu dan mengambil pendekatan yang lebih alami, saya mendapatkan kepercayaan lebih banyak dengan pimpinan dan dia sering meminta saya untuk ide dan memasukkan saya pada desain arsitektur dan strategi penyebaran yang digunakan untuk proyek tersebut.

Nick
sumber
2

Orang yang menulis kode buruk hanyalah gejala ketidaktahuan (yang berbeda dengan menjadi bodoh). Inilah beberapa tips untuk berurusan dengan orang-orang itu.

  • Pengalaman masyarakat sendiri meninggalkan kesan yang lebih kuat daripada apa yang akan Anda katakan.
  • Beberapa orang tidak bersemangat dengan kode yang mereka hasilkan dan tidak akan mendengarkan apa pun yang Anda katakan
  • Pemrograman Berpasangan dapat membantu berbagi ide tetapi beralih siapa yang mengemudi atau mereka hanya akan memeriksa email di ponsel mereka
  • Jangan menenggelamkan mereka dengan terlalu banyak, saya bahkan menemukan Integrasi Berkelanjutan perlu dijelaskan beberapa kali kepada beberapa devs yang lebih tua
  • Buat mereka bersemangat lagi dan mereka ingin belajar. Bisa jadi sesuatu yang sederhana seperti pemrograman robot selama sehari
  • PERCAYA TIM ANDA, standar pengkodean dan alat yang memeriksa mereka pada waktu membangun sering tidak pernah membaca atau mengganggu.
  • Hapus Kepemilikan Kode, pada beberapa proyek Anda akan melihat silo kode atau bukit semut di mana orang mengatakan itu kode saya dan Anda tidak dapat mengubahnya, ini sangat buruk dan Anda dapat menggunakan pemrograman berpasangan untuk menghapus ini.
Scott Cowan
sumber
1
Saya percaya ketidaktahuan yang disengaja dapat digambarkan sebagai bodoh? Itu sama dengan tidak mau belajar.
Adam Naylor
Contoh dari ini adalah seorang pria yang seorang ahli fisika parsial tetapi tidak bisa mendapatkan pacar. Dia jelas pria yang cerdas tetapi tidak peduli tentang wanita.
Scott Cowan
2

Alih-alih meminta mereka menulis kode, minta mereka mempertahankan kode mereka.

Sampai mereka harus menjaga tumpukan spaghetti mereka yang mengepul, mereka tidak akan pernah mengerti betapa buruknya mereka dalam pengkodean.

JDrago
sumber
Bahkan lebih baik: minta mereka untuk menjaga kode pengembang lain. Ini juga dapat membantu meningkatkan komunikasi di antara mereka ...
mjn
Itu jauh lebih sedikit antagonis, juga :-)
JDrago
2

Tidak ada yang suka mendengarkan seseorang mengatakan pekerjaan mereka menyebalkan, tetapi siapa pun yang waras akan menerima bimbingan dan cara menghindari pekerjaan yang tidak perlu.

Satu sekolah pengajaran bahkan mengatakan bahwa Anda tidak harus menunjukkan kesalahan, tetapi fokuskan apa yang dilakukan dengan benar. Misalnya, alih-alih menunjukkan kode yang tidak dapat dipahami sebagai buruk, Anda harus menunjukkan di mana kode mereka sangat mudah dibaca. Dalam kasus pertama Anda membuat orang lain berpikir dan bertindak seperti programmer yang jelek. Dalam kasus selanjutnya Anda priming untuk berpikir seperti seorang profesional yang terampil.

Bloodboiler
sumber
2

Saya memiliki senario yang sama dengan orang-orang yang bekerja dengan saya .. Mereka tidak memiliki eksposur untuk pengkodean seperti yang saya lakukan tetapi mereka masih berguna dalam pengkodean.

Daripada saya membiarkan melakukan apa yang mereka inginkan dan kembali dan mengedit semuanya. Saya biasanya hanya duduk dan menunjukkan kepada mereka dua cara melakukan sesuatu. Cara saya dan Cara saya, Dari sini kita membahas pro dan kontra dari masing-masing metode dan karena itu mencapai pemahaman yang lebih baik dan kesimpulan yang lebih baik tentang bagaimana seharusnya kita melanjutkan pemrograman.

Inilah bagian yang benar-benar luar biasa. Kadang-kadang mereka akan datang dengan pertanyaan yang bahkan saya tidak punya jawaban, dan setelah penelitian kita semua mendapatkan konsep metodologi dan struktur yang lebih baik.

  1. Bahas.
  2. Tunjukkan pada mereka Mengapa
  3. Bahkan jangan berpikir Anda selalu benar .. Kadang-kadang bahkan mereka akan mengajari Anda sesuatu yang baru.

Itulah yang akan saya lakukan jika saya adalah Anda: D

Angel.King.47
sumber
1

Mungkin agak terlambat setelah efek, tetapi di situlah standar pengkodean yang disepakati adalah hal yang baik.

James Sugrue
sumber
1

Jujur saya percaya bahwa kode seseorang lebih baik ketika lebih mudah untuk mengubah, men-debug, menavigasi, memahami, mengkonfigurasi, menguji dan menerbitkan (wah).

Yang mengatakan saya pikir itu tidak mungkin untuk memberitahu seseorang / nya kodenya buruk tanpa terlebih dahulu memiliki dia menjelaskan apa yang dilakukannya atau bagaimana orang seharusnya memperbaikinya setelah itu (seperti, menciptakan fungsi baru atau men-debug itu).

Hanya kemudian pikiran mereka tersentak dan siapa pun dapat melihat itu:

  • Perubahan nilai variabel global hampir selalu tidak bisa dilacak
  • Fungsi besar sulit dibaca dan dipahami
  • Pola membuat kode Anda lebih mudah ditingkatkan (selama Anda mematuhi aturan mereka)
  • (dll ...)

Mungkin sesi pemrograman pasangan harus melakukan trik. Adapun menegakkan standar pengkodean - itu membantu tetapi mereka terlalu jauh dari benar-benar mendefinisikan apa kode yang baik.

rshimoda
sumber
1

Anda mungkin ingin fokus pada dampak kode buruk, daripada apa yang mungkin dianggap hanya sebagai pendapat subjektif Anda apakah itu gaya yang baik atau buruk.

JohnMcG
sumber
1

Secara pribadi, tanyakan tentang beberapa segmen kode "buruk" dengan pandangan terhadap kemungkinan bahwa itu sebenarnya adalah kode yang masuk akal , (tidak peduli seberapa besar kecenderungan Anda), atau bahwa mungkin ada keadaan yang semakin melemahkan. Jika Anda masih yakin bahwa kode itu benar-benar buruk - dan bahwa sumber sebenarnya adalah orang ini - pergilah. Salah satu dari beberapa hal dapat terjadi: 1) orang tersebut memperhatikan dan mengambil tindakan korektif, 2) orang itu tidak melakukan apa-apa (tidak menyadari, atau tidak peduli seperti Anda).

Jika # 2 terjadi, atau # 1 tidak menghasilkan peningkatan yang cukup dari sudut pandang Anda, DAN itu merugikan proyek, dan / atau berdampak cukup pada Anda, maka mungkin sudah waktunya untuk memulai kampanye untuk membangun / menegakkan standar dalam tim. Hal itu membutuhkan persetujuan manajemen, tetapi paling efektif ketika dihasut dari akar rumput.

Semoga beruntung dengan itu. Saya merasakan sakit saudara Anda.

Chris Noe
sumber