Saya seorang kontraktor untuk sebuah perusahaan besar. Saat ini, ada tiga pengembang di proyek, termasuk saya sendiri.
Masalahnya adalah 2 pengembang lainnya tidak begitu mengerti. Maksud saya adalah:
- Mereka tidak memahami praktik terbaik untuk teknologi yang kami gunakan. Setelah 6 bulan saya dan orang lain memberi mereka contoh, ada anti-pola yang digunakan.
- Mereka adalah pemrogram "salin dan tempel" yang terutama menghasilkan kode spageti.
- Mereka terus - menerus memecahkan berbagai hal, menerapkan perubahan tetapi tidak melakukan tes asap dasar untuk melihat apakah semuanya baik
- Mereka menolak / jarang meminta ulasan kode.
- Mereka menolak / jarang bahkan melakukan hal-hal dasar seperti memformat kode.
- Tidak ada dokumentasi tentang kelas apa pun (jsdocs)
- Takut menghapus kode yang tidak melakukan apa-apa
- Tinggalkan blok kode yang dikomentari di mana-mana meskipun kami memiliki kontrol versi.
Saya merasa semakin frustrasi ketika saya memformat kode orang lain, memperbaiki bug, menemukan fungsionalitas yang rusak, dan membuat abstraksi untuk menghapus spageti.
Saya benar-benar tidak tahu harus berbuat apa. Saya mencoba untuk tidak frustrasi, tetapi itu hanya berantakan. Saya suka orang-orang ini, tetapi saya merasa situasi pengkodean begitu buruk sehingga saya bisa bergerak lebih cepat jika mereka hanya melihat-lihat web sepanjang hari.
Apakah akan keluar dari jalur untuk meminta manajer kami untuk meninjau orang lain yang melakukan akses; melakukan hanya dapat dilakukan setelah review oleh seseorang yang memiliki pengetahuan tentang apa yang kita lakukan? Sebagai kontraktor, saya tidak yakin apakah itu langkah terbaik.
Apakah ada cara halus / tidak begitu halus untuk menjelaskan berapa banyak hal yang saya perbaiki?
Jawaban:
Saya memiliki sesuatu seperti ini di tim saya. Saya berusaha keras untuk membuat orang melakukan hal yang benar dan itu tidak berfungsi seperti yang diharapkan jadi saya pindah ke solusi yang berbeda.
Pertama, saya pergi ke manajer saya dan kami berhasil membuat kesepakatan, tidak ada kode apa pun yang masuk ke kontrol sumber kecuali jika dicakup oleh unit test. Jika kode masuk tanpa tes unit, saya memiliki hak veto untuk membatalkan komit segera dan melakukan ping siapa pun yang bertanggung jawab untuk mereka dapat mengerjakan tes dan kemudian mendorong kode.
Dengan aturan ini di tempat, saya secara teratur menjalankan alat cakupan kode (dalam hal ini, jacoco di build sbt kami ) untuk memastikan potongan tertutup dengan benar dan saya juga melakukan refactoring dan ulasan kode secara konstan dalam kode apa pun yang didorong oleh mereka. Karena ini adalah proyek Java dan Scala, saya memiliki banyak alat untuk membantu saya menangkap hal-hal yang seharusnya tidak ada di sana atau tidak berfungsi seperti yang kami pikir seharusnya, tidak yakin bagaimana Anda dapat melakukan hal yang sama dengan JavaScript tetapi mungkin ada sebuah solusi.
Hal utama yang saya yakini membantu saya untuk mengikuti ini adalah bahwa saya memiliki pandangan yang jelas tentang apa yang saya harapkan dari proyek dan arsitektur utamanya, jadi setiap kali saya melihat sesuatu yang tidak mencerminkan pandangan ini, saya bisa pergi ke sana dan memperbaikinya. Anda harus melakukan hal yang sama, mendefinisikan pandangan Anda, pola-pola yang harus digunakan, cara kode harus ditulis dan menjaga diri Anda di atas ini, selalu membiarkan mereka (dan manajemen Anda) tahu apa yang terjadi dan apa yang membuat proyek tidak bergerak terus lebih cepat.
Pasti akan ada saat di mana mereka menyerah dan melakukan hal yang benar atau manajemen mendapatkan pesan dan memindahkan mereka dari proyek.
sumber
Saya yakin sekarang Anda telah melihat komentar saya dan posting saya yang lain, jadi saya tidak akan berpura-pura tahu jawabannya. Yang terbaik yang bisa saya tawarkan adalah ringkasan dari apa yang saya dengar / baca dari orang lain dan menambahkan beberapa pengalaman saya sendiri ke dalam campuran.
Pertama, saya ingin mengatakan bahwa beberapa waktu yang lalu saya menemukan sebuah blog yang dimiliki oleh salah satu anggota Programmer SE kami, Martin Blore dan IMO ini satu posting khusus tentang aktualisasi diri TDD sangat akurat. TDD adalah level tertinggi dan terakhir yang menyatukan semuanya tetapi tanpa level sebelumnya, terutama yang terbesar, prinsip dan praktik menghasilkan kode yang jelas dan mudah dibaca, akan sangat sulit jika bukan tidak mungkin membuat TDD berfungsi.
Di perusahaan saya, Agile dan TDD dikenakan pada kami oleh manajemen, dan pada awalnya kami melakukannya karena kami diberitahu (yang merupakan kebalikan dari agile). Kami telah mencoba TDD dua kali dan sementara saya pendukung besar menggunakan tes otomatis, saya pribadi membuang semua yang ditampar bersama tim di rilis terakhir. Mereka rapuh, raksasa, menyalin / menempel wazoo dan penuh dengan pernyataan tidur yang membuat mereka berjalan sangat lambat dan tak terduga. Saran saya untuk tim Anda: JANGAN LAKUKAN TDD ... belum.
Saya tidak tahu bagaimana situasi Anda karena Anda menyebutkan bahwa Anda baru bergabung dengan perusahaan selama 6 bulan dan Anda adalah seorang kontraktor. Apakah tujuan jangka panjang Anda untuk tetap bersama perusahaan ini atau apakah kontraknya akan habis? Saya bertanya karena walaupun Anda melakukan sesuatu, mungkin perlu beberapa waktu untuk benar-benar melihat hasilnya.
Juga ketika Anda bergabung dengan tim, biasanya perlu waktu sebelum Anda mendapatkan kredibilitas dan rasa hormat yang cukup dari tim Anda di mana mereka (pengembang dan manajemen) bahkan akan mempertimbangkan apa pun yang Anda usulkan. Dalam pengalaman saya, akan membantu jika Anda memadamkan beberapa kebakaran dan menunjukkan bahwa Anda memiliki keterampilan dan pengetahuan yang dapat diandalkan orang lain. Tidak yakin apakah 6 bulan sudah cukup. Cukup sering orang yang baru dan ambisius bergabung dengan tim, lalu membuat posting di sini menanyakan bagaimana mereka dapat mengubah dunia. Kenyataan yang menyedihkan adalah mereka tidak bisa melakukannya.
Jadi anggaplah Anda memiliki rasa hormat dan perhatian tim Anda. Sekarang apa?
Pertama, baik manajemen maupun pengembang perlu menyadari bahwa ada masalah. Tindakan manajemen menghasilkan hasil dalam hal pekerjaan yang disampaikan. Jika mereka senang dengan kuantitas dan kualitas fitur saat ini, maka kenyataan yang menyedihkan adalah bahwa mereka tidak akan mendengarkan. Seperti yang telah ditunjukkan orang lain, tanpa dukungan manajemen, akan sangat sulit untuk memperkenalkan segala jenis perubahan.
Setelah Anda mendapatkan dukungan manajemen, langkah selanjutnya adalah menggali lebih dalam dan mengidentifikasi akar penyebab mengapa tim beroperasi seperti itu. Topik selanjutnya ini adalah sesuatu yang menjadi pencarian pribadi saya beberapa saat sekarang. Sejauh ini perjalanan saya:
sumber
Saya menyarankan agar Anda berbicara dengan manajer Anda tentang masalah ini, tetapi ia hampir pasti tidak ingin meninjau setiap check-in.
Alih-alih, saya menyarankan Anda menyarankan serangkaian uji unit / regresi, untuk dihubungkan ke SVN, dan dijalankan untuk setiap checkin. Setidaknya itu akan membantu Anda menghindari bangunan yang rusak. Anda dapat secara bertahap menyarankan praktik terbaik lainnya.
Jika dia ternyata sama sekali tidak bisa menerima, mungkin Anda harus melupakannya. Jika Anda memutuskan untuk melakukan itu, Anda harus membawa permainan terbaik Anda. Anda pada dasarnya akan mengajukan kepada manajemen untuk dipekerjakan di tingkat yang lebih tinggi jika Anda melakukannya.
sumber