Saya mengelola tim kecil pengembang. Seringkali kita memutuskan untuk menghabiskan satu atau dua hari untuk membersihkan kode kita.
Apakah ide yang bagus untuk menjadwalkan waktu reguler, katakanlah 1 minggu setiap 2 bulan, untuk hanya membersihkan basis kode kita?
project-management
programming-practices
refactoring
maintenance
pengguna84667
sumber
sumber
Jawaban:
Tidak.
Perbaiki saat Anda sedang mengerjakannya:
sumber
Pendapat pribadi saya: Ini mutlak diperlukan untuk 90% proyek.
Khusus untuk proyek-proyek yang sangat didorong oleh penjualan, biasanya ada dorongan besar untuk memasukkan fitur-fitur baru dalam setiap rilis, dan Anda akhirnya harus berkompromi dengan insting Anda yang lebih baik dan memperkenalkan beberapa kludges / retasan di sana-sini.
Akhirnya, Anda telah cukup mendapatkan 'utang teknis' melalui kompromi kecil ini sehingga Anda menghabiskan cukup banyak waktu untuk mengatasi kekurangan dalam basis kode, dan tidak dapat menggunakannya untuk potensi penuhnya.
Biasanya ada dua jenis masalah yang dihasilkan dengan cara ini:
Saya biasanya mencoba untuk menyediakan waktu untuk siklus perbaikan / perbaikan bug murni setiap 3 hingga 4 siklus. Saya selalu meminta pengembang saya untuk memberi tahu saya ketika mereka merasa frustrasi dengan basis kode juga. Tidak setiap pengembang harus mengerjakan upaya pembersihan - Anda biasanya dapat (tetapi tidak selalu) sedikit mengejutkan tim, sehingga hanya satu tim yang mengerjakan pembersihan pada waktu tertentu.
sumber
Saya meminta pengembang merapikan kode mereka sebelum checkin (Subversion) atau bergabung dengan cabang pengembangan utama (Git).
Saya minta mereka melakukan hal berikut:
Untuk proyek yang lebih besar, kode ditinjau secara formal sebelum penggabungan dari cabang pengembangan ke cabang utama.
Saya berpikir bahwa "waktu mencurahkan" akan berarti itu adalah sesuatu yang mungkin ditunda, atau ditunda karena jumlah pekerjaan yang terlibat. Dengan meminta pengembang melakukannya pada per-checkin (yang setara dengan permintaan perubahan / masalah di JIRA) itu jauh lebih mudah dikelola.
sumber
Tidak menurut saya. Jika Anda membiarkan terlalu banyak waktu antara ketika Anda menemukan utang teknologi dan ketika Anda memperbaikinya, Anda kehilangan konteks tentang apa masalahnya. Butuh waktu lebih lama untuk memperbaikinya, dan itu cenderung diperbaiki lebih buruk. Yang paling penting, orang meninggalkan jendela yang rusak karena itu bukan "membersihkan minggu".
Secara pribadi, saya bernegosiasi untuk pembersihan utang teknis setiap sprint jika saya tahu kami telah membuat beberapa sprint sebelumnya. Itu membuat hutang segar di pikiran orang. Ini membatasi jumlah kode menggunakan kode masalah sehingga refactoring lebih mudah. Ini mencegah utang teknis dari menumpuk. Dan itu membantu mendorong pengembang dari hanya menampar sesuatu bersama, karena saya hanya akan membuat mereka melakukannya dengan sprint berikutnya (jadi sebaiknya lakukan dengan benar di tempat pertama).
sumber
Saya akan mengatakan ya, dengan syarat: itu harus sering dilakukan, terutama setiap minggu. Saya percaya bahwa tinjauan kode reguler yang dijadwalkan ditambah dengan benar-benar bertindak pada item yang keluar dari tinjauan kode terbayar dengan sangat cepat. Lihat jawaban pswg
1 minggu setiap 2 bulan jelas tidak cukup sering. Ini berbicara kepada sebagian besar jawaban lain yang menjawab dengan 'Tidak' untuk pertanyaan Anda. Inti dari sebagian besar jawaban ini adalah bahwa jika Anda menunggu terlalu lama Anda tidak akan lagi berhubungan dengan kode dan biasanya membutuhkan waktu lebih lama untuk memperbaiki / membersihkan / refactor.
sumber
Tidak begitu jelas apakah Anda bermaksud melakukan pembersihan kode tambahan sesekali. Dalam pengertian itu, ya. Apa pun praktik yang kita ikuti, beberapa degradasi selalu terjadi.
Anda tidak boleh menggunakannya sebagai alasan untuk tidak melakukan hal yang benar [Menerapkan prinsip-prinsip SOLID, tes unit yang relevan, inspeksi dll] sejak awal.
sumber
Saya pikir dua jawaban "Tidak" "Ya" yang populer saat ini adalah dua aspek dari kebenaran yang sama. Ingat OP berbicara tentang grup yang dia kelola, bukan hanya dirinya sendiri sebagai individu. Kami tidak dapat berasumsi bahwa semua pengembang dalam grup cukup disiplin untuk menulis kode yang bersih dan mudah dibaca; dan ada masalah tekanan eksternal dan metodologi gaya gesit. Juga, bahkan dengan upaya terbaik orang, perbedaan gaya mereka akan berarti mereka dapat menulis kode yang akan dianggap bersih ketika terpisah, tetapi tidak bersih ketika dianggap bersama-sama dengan orang lain (belum lagi antarmuka berderit).
Di sisi lain, "memperbaikinya sambil mengerjakannya" menurut saya ideal untuk dicita-citakan. Anda dapat membuat kode Anda lebih "diperbaiki" oleh
Sekarang, jika tim OP mengadopsi hal di atas, dan jika ia mendorong bawahannya - misalnya selama tinjauan kode dan selama sesi pembersihan kode berkala - untuk mencoba mengantisipasi jebakan dan menghindari keburukan di muka, lama-kelamaan ia / mereka diharapkan akan membutuhkan lebih sedikit waktu pembersihan. (Dan kemudian mereka dapat mencurahkan waktu itu untuk dokumentasi, refactoring yang lebih dalam, dan berbagi pengetahuan tentang apa yang telah mereka tulis dan konsolidasi.)
sumber
Saya pikir penjadwalan waktu reguler sangat baik apakah itu tugas dalam proyek gaya air terjun biasa, atau cerita dalam yang lincah. Memiliki waktu yang ditetapkan mungkin tidak sama berharganya dengan hanya mengerjakannya dalam jadwal Anda. Ini memungkinkan Anda menyelesaikannya sebagai bagian dari jadwal vs. membatalkan hari pembersihan karena Anda ketinggalan proyek.
Setelah mengelola sebuah proyek yang memiliki jumlah hutang kode yang luar biasa, mengerjakannya secara teratur adalah kunci agar semuanya berjalan lancar. Beberapa barang kami besar, ada yang kecil.
Setelah beberapa bulan melakukan pekerjaan semacam ini, pimpinan tim operasi kami memberi tahu saya betapa lancar semuanya berjalan.
Setiap item mungkin tidak tampak banyak, tetapi sama seperti semua hutang, iklannya naik.
sumber
Jawaban yang ideal adalah Tidak, karena Anda mengambil langkah-langkah yang diperlukan untuk menghindari menjadikan ini suatu keharusan (bersihkan seiring berjalannya waktu karena beberapa alasan yang telah dinyatakan).
Ini mungkin tujuan pada akhirnya, tetapi Anda mungkin memiliki tim yang jauh dari mempraktikkannya.
Manajer harus bertanggung jawab. Bukan selalu kesalahan pengembang. Manajer dapat mengatakan satu hal, tetapi mereka mulai mendorong proyek untuk selesai dan membuat saran yang mempromosikan praktik buruk. Mereka mungkin benar-benar berkata, "kita akan membersihkannya nanti" atau jika berhasil, itu cukup baik.
Anda mungkin harus mulai dengan mendedikasikan waktu tertentu untuk menunjukkan ini penting. Setelah Anda tahu tim Anda mampu membersihkan kode mereka (bukan yang diberikan), maka Anda dapat mencoba untuk memasukkannya lebih sering.
Akhirnya, Anda tidak perlu mengatur waktu.
Secara pribadi, saya berjuang dengan memecahkan masalah baru dan membuatnya bekerja sambil mencoba untuk menjaga hal-hal tetap rapi. Saya semakin baik dalam hal itu, tetapi sering mengambil istirahat yang disengaja dan membersihkan hal-hal. Bagi saya ini adalah pola pikir yang berbeda. Akhirnya, praktik yang solid menjadi kebiasaan.
sumber
Tidak, Anda harus melakukan ini saat Anda membuat kode. Ini disebut refactoring jika Anda menggunakan TDD. Masalahnya ketika Anda menunggu satu atau dua bulan untuk memperbaiki dan membersihkan kode Anda adalah bahwa Anda dapat mengubah perilaku kode karena Anda tidak ingat setiap bagian dari kode Anda.
Saya menyarankan refactoring yang didasarkan pada pengkodean terlebih dahulu kode yang diperlukan untuk membuat sesuatu bekerja, dan segera setelah berfungsi mendesain ulang, mengoptimalkannya, dan membuatnya cantik.
sumber