Bagaimana saya harus memperbaiki kode dari programmer yang kurang berpengalaman?


19

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?


4
Di masa mendatang, apakah ada kemungkinan untuk menyetujui pedoman pengkodean, yang akan mencegah kesalahan seperti yang Anda jelaskan?
Benni

5
Untung Anda tidak segera lari ke manajemen dan memberi tahu dia. Beberapa perusahaan berorientasi pada kesalahan. Saat Anda memeriksa perbaikan di dalamnya, temukan cara untuk mengelompokkannya lalu minta orang ini melihatnya nanti. Di sisi lain, bahkan lulusan baru tidak boleh mengkode apa pun 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?
Ayub

O (n ^ n) tanpa dokumentasi mengapa salah, titik. Jika Anda benar-benar harus melakukannya, komentar sebaiknya menjelaskan alasannya.
Loren Pechtel

Akan menulis bahwa "hei, O (n * n) tidak seburuk itu, banyak aplikasi membutuhkannya ..." tapi kemudian saya menyadari bahwa itu bukan tanda perkalian, tetapi seorang pembunuh ^!
Maks.

O (n ^ n) dapat dengan besarnya lebih cepat dari O (n) jika O (n) memiliki konstanta besar, dan n kecil. codinghorror.com/blog/2007/09/… Kemudian lagi, n ^ n ekstrem: D
Coder

Jawaban:


33

Kedengarannya seperti melembagakan semacam kebijakan peninjauan kode mungkin bermanfaat pada berbagai tingkatan. Beberapa manfaat langsung:

  • Anda dapat secara langsung memengaruhi kualitas kodenya sebelum kode dikomit sehingga menjaga kualitas basis kode tetap tinggi
  • Menghindarkan Anda dari kesalahan serupa yang mungkin terjadi
  • Dengan tidak adanya pedoman pengkodean, ulasan secara alami mengarah pada konsistensi dalam gaya pengkodean
  • Berbagi pengetahuan. Jika hanya ada kalian berdua dan satu ditabrak bus ...

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.


3
Ulasan +1 kode merupakan cara yang bagus untuk menyelesaikan ini. Saya akan menyarankan ungkapan itu lebih lanjut di sepanjang baris "Apakah Anda mau melihat perubahan yang saya buat untuk memastikan saya tidak melewatkan sesuatu" daripada "Berikut adalah cara saya meningkatkan kode Anda".
Steve Jackson

1
+1 Saya akan mengatakan tinjauan kode jauh lebih cocok daripada "pedoman pengkodean aturan emas" apa pun. Tidak banyak hal yang tidak pernah baik - baik saja.
Maks.

Saya sangat suka ide ini, terima kasih. Sekarang saya hanya perlu meneliti sedikit tentang cara yang baik untuk melakukan review kode!
TorelTwiddler

1
Sebenarnya ada makalah yang bagus dan menghibur dengan beberapa dasar-dasar yang tersedia di mumak.net/stuff/your-code-sucks.html . Ini sebagian besar tentang teknik perilaku untuk melakukan ulasan secara konstruktif, yang sangat penting untuk ulasan sukses.
nithins

@ TorelTwiddler, ingatlah bahwa ulasan kode hanya untuk belajar, bukan menyalahkan. Tunjukkan hal-hal yang dia lakukan dengan baik, jadi dia tahu itu bagus sekaligus menyarankan cara untuk meningkatkan.
CaffGeek

5

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.


2

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.


0

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?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.