Pertanyaannya sebenarnya bukan tentang apakah pemrograman meta itu OK atau tidak, tetapi lebih pada apakah tidak apa-apa untuk menjadi lebih baik daripada yang lain dalam tim, jadi inilah beberapa poin kontroversial tentang bagaimana saya melihatnya ...
Saya baru-baru ini pindah ke pekerjaan baru di mana saya bekerja di tim yang lebih besar dan [pemrograman-meta] ini membuat khawatir beberapa rekan saya, karena mereka tidak memahaminya.
Mereka khawatir Anda lebih baik dari mereka. Itu bagus. Anda akan menjadi ahli baru. Anda baru saja menghancurkan dunia status-quo mereka.
Saya selalu berusaha memanfaatkan potensi penuh dari bahasa tersebut, tetapi beberapa (tidak semua) kolega saya menganggap itu sebagai risiko (beberapa menyambut pendekatan).
Tentu, tidak ada yang suka menjadi kurang terampil daripada orang lain, jadi mereka mencoba menghentikan Anda dari menggunakan teknik yang terlalu rumit untuk mereka. Mereka tidak dapat memahaminya atau tidak akan pergi, karena mereka merasa aman sekarang.
Saya setuju itu adalah masalah untuk menulis kode yang tidak bisa dipahami oleh orang lain di tim.
Bukan saya. Saya pikir itu menunjukkan keahlian Anda.
Pertanyaan saya adalah, siapa yang benar, apa yang harus saya lakukan?
Anda harus menggunakan semua keahlian Anda untuk menulis kode terbaik yang dapat Anda tulis dan tidak melihat ke belakang pada mereka yang tidak memahaminya. Kalau tidak, Anda akan terjebak pada level mereka dan menjadi pembuat kode biasa. Adalah hal yang baik untuk menjadi lebih baik daripada yang lain, dan itu adalah hal yang baik untuk berusaha menjadi lebih baik dari mereka. Anda tidak akan pernah mendapatkan pengalaman baru jika Anda tidak mencoba menggunakan sesuatu yang baru atau melakukan sesuatu secara berbeda.
Saya tahu saya akan diturunkan suara, tetapi seperti ini kelihatannya. Bukan kejahatan untuk menjadi lebih baik daripada yang lain di tim, dan bukan kejahatan untuk menggunakan keterampilan Anda. Hanya saja semua orang takut mengakuinya ... karena mereka berada di pihak non-terampil dan benci kalau lelaki baru itu tiba-tiba bisa melakukan sesuatu yang tidak bisa mereka lakukan. Jika mereka pintar, mereka akan meminta bantuan dan saran Anda dan tidak mengkritik kode Anda karena tidak dapat dimengerti.
SUNTING
Tampaknya ada banyak kebingungan tentang pertanyaan ini. Seperti komentar menunjukkan banyak orang berpikir ini tentang keterbacaan kode umum. Tidak, tidak. Ini tentang apakah fitur / konstruksi bahasa tertentu harus dilarang atau dihindari karena beberapa anggota tim tidak memahaminya.
Jawaban saya adalah tidak . Mereka seharusnya tidak dilarang. Jika Anda ingin melarang sesuatu, bagaimana Anda melakukannya? Anda harus menyiapkan semacam kuesioner untuk mencari tahu apa yang dapat dan tidak bisa dilakukan oleh anggota tim Anda - atau lebih tepatnya tidak ingin belajar karena saya pikir semua fitur bahasa berguna di suatu tempat sehingga mengenal mereka dan bisa menggunakannya selalu bagus dan semakin Anda tahu kode yang lebih baik Anda bisa menulis. Anda juga perlu skala untuk menentukan fitur mana yang pemula, menengah atau lanjutan.
Untuk menunjukkan betapa konyolnya pembatasan semacam itu, mari kita ambil contoh yang sangat sederhana: Anda akan dipekerjakan sebagai insinyur perangkat lunak, tetapi bos masa depan Anda memberi tahu Anda bahwa Anda tidak akan diizinkan untuk menggunakan do/while
loop karena ada beberapa orang di tim yang belum pernah menggunakan mereka sebelumnya dan juga tidak akan pergi karena mereka selalu menggunakan for
loop untuk semuanya sehingga mereka menemukan do/while
loop membingungkan.
Sekarang Anda pikir ini bodoh dan gila, bukan? Tapi begitu juga melarang fitur lainnya. Sebagian orang dapat menggunakannya dan yang lain tidak ingin mempelajarinya.
Mengapa Anda harus menghasilkan kode yang lebih buruk jika Anda tahu ada sesuatu yang memungkinkan Anda melakukan hal yang sama dengan upaya yang jauh lebih sedikit namun menghasilkan kode yang lebih mudah dibaca adalah kode yang kuat?
Dan tidak masalah apakah Anda hanya menggunakan fitur bahasa dasar atau yang canggih, Anda dapat menggunakan salah satu untuk menghasilkan kode yang sama-sama tidak dapat dipahami dan tidak dapat dipertahankan sehingga ini adalah topik yang sepenuhnya berbeda.