Ada banyak cerita tentang kode yang sengaja buruk, tidak hanya di TheDailyWTF tetapi juga di SO. Kasus-kasus umum meliputi:
- Memiliki konstruksi pemborosan waktu yang tidak berguna (mis. Loop kosong yang menghitung nilai sangat besar) sehingga programmer dapat dengan mudah "mempercepat" aplikasi dengan menghapusnya ketika mereka ditugaskan.
- Memberikan dokumentasi yang sengaja menyesatkan, salah atau tidak ada untuk menghasilkan permintaan dukungan yang mahal.
- Mudah membuat kesalahan, atau lebih buruk, menghasilkan meskipun semuanya bekerja dengan baik, mengunci aplikasi sehingga panggilan dukungan yang mahal diperlukan untuk membuka kunci.
Poin-poin ini menunjukkan sikap yang kurang lebih jahat (meskipun kadang-kadang secara tidak sengaja), terutama poin pertama terjadi agak sering.
Bagaimana seharusnya seseorang berurusan dengan konstruksi seperti itu? Abaikan masalahnya, atau hapus saja kode yang menyinggung itu? Beri tahu manajer mereka, atau berbicara dengan orang yang memperkenalkan "fitur"?
Jawaban:
Sebagian besar kode yang buruk adalah karena kurangnya pemahaman dan solusinya adalah pendidikan.
Kode buruk yang disengaja sama sekali berbeda, karena sesuatu yang sama sekali tidak berhubungan dengan pengalaman pembuat kode atau proyek lainnya. Karena itu, Anda harus mencari tahu mengapa mereka menyabot kode dengan sengaja dan menangani masalah itu. Ini berarti, lebih sering daripada tidak, politik kantor, dan itu jarang situasi yang menyenangkan bagi siapa pun.
Bagaimana saya menangani sisi politik tergantung pada banyak keadaan (yang tidak disebutkan di atas). Cara saya menangani kode adalah pertama-tama memastikan bahwa saya bukan orang yang salah paham — bahwa itu benar-benar kode yang buruk — kemudian memperbaiki kekurangan yang jelas. Jika memungkinkan, tulis tes yang salah kode akan gagal. Memeriksa ulang yang saya pahami dengan benar berarti berbicara dengan orang yang menulis kode. Itu harus dilakukan dengan cara yang sangat baik, sopan, tanpa mengandaikan niat, dan dapat membantu menemukan alasan mendasar (politis) yang diperlukan nanti.
Pengiriman lebih penting daripada kesempurnaan menara gading, tetapi ada dua hal yang perlu diperhatikan. Memperbaiki kekurangan yang jelas membuat Anda mendapatkan 80% dari hasil dengan 20% dari upaya, dan jenis buah yang tergantung rendah jarang layak diabaikan. Tetapi yang lebih penting, jika Anda tidak membahas alasan (politis) yang mendasarinya, kemungkinan kode yang lebih sengaja buruk akan ditulis dan menyebabkan masalah lebih lanjut — dan mungkin mencegah pengiriman.
sumber
Saya tidak pernah (dalam 20-tahun aneh) menemukan kode yang sengaja buruk, tetapi contoh yang Anda kutip tampaknya (setidaknya bagi saya, tapi IANAL) adalah upaya untuk menipu baik majikan atau pelanggan, sehingga Anda mungkin memiliki hukum kewajiban untuk menunjukkannya kepada manajer Anda.
sumber
Tergantung pada budaya perusahaan. Lebih sering daripada tidak, itu bukan tugas Anda untuk memperbaiki dan membersihkan semua kode buruk.
Dari Coders at Work , pemikiran Jamie Zawinski tentang overengineering, yang juga dapat diterapkan dalam situasi ini:
Ada banyak coders dan kode buruk di luar sana, dan hanya mencoba untuk memperbaikinya saat Anda menemukannya, dengan mengorbankan proyek / tugas saat ini, mungkin tidak akan sepadan jika produk "berfungsi". Terlalu sering, kita semua hanyalah programmer lakban.
Juga lihat posting Joel Spolsky: The Duct Tape Programmer
sumber
Sikap itu adalah gejala dari sesuatu yang lebih buruk.
Apakah manajemen mendorong kompetisi pengembang?
Di mana semangat tim?
Apakah tugas diberikan oleh orang lain daripada tim itu sendiri?
...
Bagaimanapun, menghapus kode yang menyinggung tidak cukup. Mengeluh kepada manajernya tentu tidak akan membantu meningkatkan semangat tim.
Saya akan mencoba untuk berbicara dengan orang itu secara langsung dan mencoba memahami mengapa dengan mengajukan banyak pertanyaan tanpa menghakimi dia. Seluruh tim harus melakukannya tanpa agresivitas.
Dalam kebanyakan kasus, perilaku konstruktif itu menempatkan masalah nyata (yang lebih buruk) di bawah cahaya, dan kemudian Anda dapat mengatasinya.
Jika itu benar-benar tidak berhasil. Hapus pengembang itu dari tim.
sumber
Jika saya pikir itu disengaja saya mungkin akan memecat orang itu! Jika itu adalah hasil dari seseorang yang tidak menjadi programmer yang cukup baik, saya akan mengerjakan keterampilannya. Jika didorong dari atas, saya mungkin akan mulai mencari pekerjaan baru.
sumber
Tergantung pada konteksnya, salah satu dari itu mungkin yang paling tepat. Kemungkinan lain termasuk, meminta untuk pindah ke proyek yang berbeda, mendapatkan pekerjaan baru, dan berbagai tindakan moralitas yang dipertanyakan dan / atau legalitas.
Namun, mengingat bahwa kita tidak tahu fakta sebenarnya dan orang-orang nyata yang terlibat, tidak mungkin seseorang dalam posisi yang Anda gambarkan harus memperhatikan saran kami / senilai 2 sen.
Jika ini adalah situasi nyata yang Anda bicarakan, mungkin ada baiknya berbicara dengan manajer Anda , meminta nasihat mereka tentang apa yang harus Anda lakukan. Jika mungkin cobalah untuk melakukan pembicaraan tentang apa yang dapat / harus Anda lakukan, bukan tentang mengarahkan jari. Jika memungkinkan, jangan menyebutkan nama. Ada kemungkinan yang adil bahwa manajer Anda sudah memiliki firasat tentang masalah tersebut.
Tetapi sisi sebaliknya adalah bahwa Anda mungkin meniup ini keluar dari proporsi. Berpikir panjang dan keras tentang itu sebelum Anda melakukan apa pun. Pikirkan konsekuensinya, termasuk kemungkinan bahwa langkah apa pun yang Anda ambil mungkin menjadi bumerang bagi Anda ... buruk.
sumber