Saya mencari cara yang efisien, yang juga tidak datang sebagai penghinaan, untuk memperkenalkan konsep OOP kepada anggota tim yang ada? Rekan satu tim saya bukan orang baru dalam bahasa OO. Kami telah melakukan C ++ / C # untuk waktu yang lama sehingga teknologi itu sendiri sudah tidak asing lagi.
Namun, saya melihat-lihat dan tanpa upaya besar-besaran (kebanyakan dalam bentuk ulasan kode), sepertinya yang kami produksi adalah kode C yang kebetulan berada di dalam kelas. Hampir tidak ada penggunaan prinsip tanggung jawab tunggal, abstraksi atau upaya untuk meminimalkan sambungan, hanya untuk beberapa nama. Saya telah melihat kelas yang tidak memiliki konstruktor tetapi mendapatkan memset ke 0 setiap kali mereka dipakai.
Tetapi setiap kali saya membuka OOP, semua orang selalu mengangguk dan membuatnya tampak seperti mereka tahu persis apa yang saya bicarakan. Mengetahui konsep itu baik, tetapi kami (beberapa lebih dari yang lain) tampaknya memiliki waktu yang sangat sulit menerapkannya dalam hal memberikan pekerjaan yang sebenarnya.
Ulasan kode telah sangat membantu tetapi masalah dengan ulasan kode adalah bahwa mereka hanya terjadi setelah fakta sehingga untuk beberapa tampaknya kita akhirnya menulis ulang (kebanyakan refactoring, tetapi masih membutuhkan banyak waktu) kode yang baru saja ditulis. Juga ulasan kode hanya memberikan umpan balik ke insinyur individu, bukan seluruh tim.
Saya bermain-main dengan ide melakukan presentasi (atau seri) dan mencoba untuk memunculkan OOP lagi bersama dengan beberapa contoh kode yang ada yang bisa ditulis lebih baik dan dapat di refactored. Saya bisa menggunakan beberapa proyek yang benar-benar tua yang tidak ada yang memiliki lagi jadi setidaknya bagian itu tidak boleh menjadi masalah sensitif. Namun, apakah ini akan berhasil? Seperti yang saya katakan kebanyakan orang telah melakukan C ++ untuk waktu yang lama jadi dugaan saya adalah a) mereka akan duduk di sana berpikir mengapa saya memberi tahu mereka hal-hal yang sudah mereka ketahui atau b) mereka mungkin menganggapnya sebagai penghinaan karena saya mengatakan kepada mereka bahwa mereka tidak tahu bagaimana melakukan pekerjaan yang telah mereka lakukan selama bertahun-tahun jika tidak beberapa dekade.
Apakah ada pendekatan lain yang akan menjangkau khalayak yang lebih luas daripada tinjauan kode, tetapi pada saat yang sama tidak akan terasa seperti kuliah hukuman?
Saya bukan anak baru keluar dari perguruan tinggi yang memiliki cita-cita utopis kode yang dirancang dengan sempurna dan saya tidak mengharapkan itu dari siapa pun. Alasan saya menulis ini adalah karena saya baru saja mengulas seseorang yang sebenarnya memiliki desain tingkat tinggi yang layak di atas kertas. Namun, jika Anda menggambarkan kelas: A -> B -> C -> D, dalam kode B, C dan D semuanya mengimplementasikan antarmuka publik yang hampir sama dan B / C memiliki fungsi satu liner sehingga kelas A paling top melakukan hal yang mutlak semua pekerjaan (hingga manajemen memori, penguraian string, pengaturan negosiasi ...) terutama dalam 4 metode mongo dan, untuk semua maksud dan tujuan, panggilan hampir secara langsung ke D.
Pembaruan: Saya seorang pemimpin teknologi (6 bulan dalam peran ini) dan memiliki dukungan penuh dari manajer grup. Kami sedang mengerjakan produk yang sangat matang dan biaya perawatan pasti membuat mereka diketahui.