Saya telah ditugaskan untuk mengajarkan basis kode baru kepada tim lain, tetapi saya terus mengalami masalah. Setiap kali saya pergi untuk benar-benar berjalan melalui kode dengan orang-orang, kami tidak mendapatkan terlalu jauh sebelum seluruh latihan berubah menjadi bikeshedding (anggota organisasi yang memberikan bobot yang tidak proporsional untuk masalah sepele) latihan. Karena mereka tidak tahu basis kode, tetapi berpikir mereka perlu membantu memperbaikinya, mereka fokus pada hal-hal yang dapat mereka pahami:
Why is that named that?
(2 menit untuk menjelaskan alasannya, 10+ menit memperdebatkan nama baru)
Why is that an abstract base class rather than an interface?
(2 menit untuk menjelaskan, 10+ menit memperdebatkan manfaat relatif dari keputusan ini)
...dan seterusnya. Sekarang, jangan salah paham - nama baik dan desain bagus, konsisten adalah penting, tetapi kita tidak pernah membahas apa yang sebenarnya dilakukan kode atau bagaimana sistem dirancang dengan cara yang berarti. Saya telah melakukan beberapa pertemuan wasit untuk mengeluarkan orang-orang dari garis singgung ini, tetapi mereka pergi - terganggu oleh kode apa yang akan / seharusnya terjadi ketika kesederhanaan hewan peliharaan mereka diperbaiki, dan mereka kehilangan gambaran yang lebih besar.
Jadi kami mencoba lagi nanti (atau dengan bagian basis kode yang berbeda) dan karena orang tidak mendapatkan pengetahuan yang cukup untuk mengatasi efek bikeshedding, itu berulang.
Saya sudah mencoba grup yang lebih kecil, grup yang lebih besar, kode, papan tulis, diagram visio, dinding teks raksasa, membiarkan mereka berdebat sampai mati, memotong argumen dengan segera ... beberapa membantu lebih dari yang lain, tetapi tidak ada yang berhasil . Sial, saya bahkan mencoba meminta orang lain dari tim saya menjelaskannya karena saya pikir mungkin saya buruk dalam menjelaskan berbagai hal.
Jadi, bagaimana Anda cukup mendidik programmer lain sehingga mereka berhenti memfokuskan pada hal-hal sepele dan dapat berkontribusi untuk desain?