Sedikit latar belakang: Saya adalah satu dari dua programmer untuk departemen kami yang terdiri dari 10 orang (sisanya adalah seniman dan manajemen). Kami berdua melakukan semua pengkodean yang diperlukan untuk membuat segalanya mengalir dengan baik, dan mengembangkan proyek apa pun yang muncul. Saya sudah pemrograman selama sekitar 4 tahun sekarang, di mana ini adalah pekerjaan "nyata" pertamanya (seperti yang ia katakan). Kami umumnya mengerjakan proyek yang berbeda di setiap titik waktu.
Beberapa bulan yang lalu saya mengembangkan serangkaian kelas (yang tidak berarti sempurna) yang akan digunakan untuk proyek selanjutnya. Sebagian besar proyek itu didelegasikan kepadanya (untuk alasan penagihan) untuk merancang dan memprogram antarmuka GUI. Karena dia masih baru, saya sedikit membantu dalam mendesain, dan berkata untuk meminta bantuan jika dia membutuhkannya. Dia menyelesaikan antarmuka beberapa minggu lalu, yang dia tunjukkan menunjukkan bahwa itu berhasil, meskipun agak lambat.
Bagian selanjutnya dari proyek itu telah dimulai yang sedang saya kerjakan. Saya membuka antarmuka untuk memulai dengan langkah-langkah berikutnya, dan segera mengalami masalah (agak lambat sedikit meremehkan, kesalahan pada tindakan umum, dll). Saya mencari kode untuk beberapa masalah dan saya menemukan O(n^n)
panggilan yang seharusnya O(n)
, ketik asumsi tanpa pengecekan kesalahan (ada di Python), referensi ke GUI ditambahkan ke kode asli, dan sebagainya.
Sekarang, saya pasti ingin mengajarinya apa yang salah dan bagaimana cara memperbaikinya, tetapi dia sudah pindah ke proyek berikutnya, dan ini beberapa minggu yang lalu. Saya takut mengatakan, "Kembalilah dan lakukan dengan benar!" (dengan bantuan tentu saja) terlalu keras, dan kami masih memiliki proyek lain untuk diselesaikan sementara itu. Haruskah saya memperbaiki sendiri kode untuk saat ini dan mencoba untuk menangkap hal-hal di masa depan?
sumber
O(n^n)
kecuali kecuali tidak ada cara lain. Jika mereka melakukannya, maka mereka mungkin mendapatkan algoritma C atau tidak mengambilnya atau memiliki guru yang jelek. Memanfaatkan semacam alat untuk membantu menemukan masalah umum akan menyenangkan. Mungkin sebagai tugas selanjutnya orang ini dapat menulis beberapa tes kinerja?Jawaban:
Kedengarannya seperti melembagakan semacam kebijakan peninjauan kode mungkin bermanfaat pada berbagai tingkatan. Beberapa manfaat langsung:
Sekarang ketika Anda melanjutkan dan mulai membersihkan kode-kodenya, gunakan itu sebagai latihan mengajar ketika Anda mencari peninjauan kode ini. Anda akan memeriksa barang-barang Anda, dan dia mungkin belajar bagaimana melakukannya dengan lebih baik lain kali.
sumber
Jangan pernah memperbaiki kode mereka, jika tidak mereka tidak akan belajar apa pun selain jika mereka melakukan kesalahan Anda akan menangkapnya dan memperbaikinya. Tugas belum selesai sampai selesai . Saya benar-benar beruntung ketika saya mulai profesional dan atasan langsung saya memeriksa kembali semua yang saya lakukan, dan jika ada solusi yang lebih baik atau saya akan membuat kesalahan konyol akan memberitahu saya, yang berarti keterampilan saya menjadi lebih baik, yang berarti saya meningkat lebih cepat dan berkembang kulit yang lebih keras.
Membiarkannya meluncur akan menumbuhkan kebiasaan buruk, mengoreksi sekarang akan membuat mereka mengatasi kritik dengan lebih baik, dan untuk memeriksa tiga kali lipat sebelum mengklaim itu dilakukan.
sumber
Bisakah kita menyimpulkan bahwa proyek itu "berhasil" dan dilakukan dalam waktu yang wajar (walaupun dengan beberapa masalah desain yang mengerikan tetapi dapat diperbaiki)? Jika demikian, ini jauh lebih baik daripada banyak proyek yang telah saya lihat selama bertahun-tahun.
Saya pikir lebih banyak komunikasi akan membantu tim Anda - dan ini dapat dilakukan dengan tinjauan kode reguler.
Adalah baik bahwa Anda peka untuk menjadi "terlalu keras" dan saya pikir Anda akan mengingatnya bahwa tinjauan kode tidak harus menjadi pengalaman kursi panas yang melemahkan semangat di mana orang-orang junior menjadi terpanggang dan diteliti dengan cermat. Ini juga bisa menjadi cara bagi pengembang senior untuk menunjukkan praktik yang baik dan bagi semua orang untuk mendapatkan kepercayaan satu sama lain dengan bersikap sopan dan ramah bahkan di hadapan "kesalahan".
Orang-orang belajar dengan baik ketika mereka melihat seperti apa barang yang benar-benar bagus. Ini lebih baik daripada menunjukkan secara sistematis setiap kekurangan kecil. Namun, O (n ^ n) harus ditunjukkan dengan lembut dan konstruktif.
sumber
Bagikan pengetahuan Anda.
Saya akan menawarkan dia bantuan pada proyek barunya sebagai ganti dari beberapa pengajaran dari senior ke junior.
Mengapa tidak memasangkan pemrograman pada kedua proyek?
sumber