Baru-baru ini seorang pengembang senior yang bekerja dengan saya membuat kasus untuk mengharuskan pengembang mendapatkan versi terbaru dan mengkompilasi sebagai bagian dari proyek mereka perpustakaan internal utama. Ini bertentangan dengan argumen konter bahwa tim proyek harus mengerjakan versi stabil yang mereka dapatkan dari repositori Maven internal yang mana pengembang berpendapat bahwa memiliki kode sumber yang tersedia di mesin pengembang menghemat waktu karena mereka dapat membaca sumber perpustakaan kode untuk menentukan apakah fungsionalitas yang diperlukan tersedia.
Apakah pengembang senior memiliki argumen yang valid? Atau apakah mengharuskan pengembang untuk membaca kode sumber perpustakaan berjalan berlawanan dengan filosofi dasar enkapsulasi dan bahkan memiliki perpustakaan di tempat pertama?
sumber
Sarannya adalah
Anda dapat membuat saran alternatif
sumber
Saya tidak akan membeli argumen bahwa memiliki kemampuan untuk meneliti sumber secara lokal adalah keuntungan, tetapi jika perpustakaan sedang dalam pengembangan aktif (mungkin untuk menambah dukungan untuk kebutuhan proyek Anda) maka saya tidak berpikir itu tidak masuk akal untuk meminta pengembang untuk unduh pembaruan secara berkala (mungkin beberapa kali sehari). Saya pikir masuk akal bisnis yang lebih baik untuk membuat biner dikompilasi (dan unit-diuji) tersedia daripada mengharuskan pengembang untuk mengkompilasi dari sumber.
Apakah Anda memiliki kemampuan dalam proyek Anda untuk mengatur semacam repositori bersama di mana versi kompilasi terbaru akan tersedia? Idealnya Anda menginginkan server CI yang melakukan penjadwalan, tetapi meskipun itu hanya sumber daya jaringan yang salah satu pimpinan tim bertanggung jawab untuk memperbarui secara berkala, itu mungkin membantu. Tentu saja, ini harus di piring tim perpustakaan, tapi jelas mereka tidak tertarik, jadi Anda harus mengambil kendur mereka.
sumber
Saya dulu bekerja untuk perusahaan perangkat lunak besar yang terus-menerus "dogfooding" perangkat lunak mereka sendiri dengan sistem bisnis internal.
Mereka melihat ini sebagai tingkat pengujian yang lain.
Saya setuju dengan, untuk sebuah perusahaan, adalah hal yang baik.
Saya pikir memaksa Anda untuk mengunduh, dan mengkompilasi versi terbaru adalah langkah terlalu jauh, kecuali langkah kompilasi adalah bagian penting dari perusahaan Anda yang menawarkan penjualan, atau bahkan outsourcing, perpustakaan.
sumber
Walaupun memiliki kode sumber yang tersedia dapat bermanfaat, jika Anda memiliki agen pembangun CI yang memantau repositori, WAY lebih masuk akal untuk membuat agen tersebut mengkompilasi pustaka ini dan menyalinnya ke proyek dependen sebagai eksternal, daripada mengharuskan pengembang untuk jalankan dua langkah kompilasi yang berbeda saat membangun salinannya.
Saat ini saya sedang mengerjakan proyek yang tidak terhubung ke agen pembangun, yang membutuhkan pembuatan sub-aplikasi sebelum membangun aplikasi utama. Ini adalah rasa sakit yang serius di posterior saya; untuk melakukan perubahan pada sub-aplikasi, pertama-tama saya harus membangun seluruh proyek, kemudian pergi ke folder sub-build, mengeluarkan produk yang dikompilasi dari itu dan menyalinnya ke sub-folder yang berbeda, sebelum membangun seluruh proyek LAGI untuk memastikan versi sub-aplikasi terbaru termasuk dalam pembuatan aplikasi utama. Ini BUKAN bagaimana hal itu seharusnya dilakukan; setidaknya harus ada skrip MSBuild yang akan mengotomatiskan proses ini, dan saya lebih suka bahwa agen build memperbarui eksternal setiap kali kode baru berkomitmen untuk trunk.
sumber
Karena begitu banyak orang menjawab bahwa tidak masuk akal untuk meminta semua orang membangun perpustakaan internal, saya akan menyajikan sudut pandang yang berlawanan yang dapat membenarkan alasannya:
Anda sering menggunakan perpustakaan dan tidak ada dokumentasi. Jadi setiap orang harus memiliki sumber untuk referensi. Jika ini adalah perpustakaan yang sangat sering digunakan, memiliki referensi berguna bisa berguna
Ketika orang mulai menulis kode mereka sendiri yang tergantung pada perpustakaan dan sesuatu di perpustakaan tidak berfungsi, alih-alih melemparkan tangan mereka ke udara, jika perpustakaan dibangun secara lokal, menjadi sangat mudah untuk melangkah tepat di dalam kode perpustakaan
Saya tidak mengatakan keputusannya dibenarkan, hanya menunjukkan bahwa a) pertanyaan yang disajikan di satu sisi cerita dan b) mungkin ada motif yang masuk akal.
sumber
Pengujian semacam ini sebaiknya dilakukan memang. Masalahnya, itu harus dilakukan oleh penguji, bukan oleh pengembang . Dalam hal itu, itu bukan pekerjaan Anda atau pengembang perpustakaan.
Dari apa yang Anda gambarkan sepertinya tidak ada penguji dalam proyek - jika ini masalahnya, itu adalah masalah manajemen, dan cukup serius.
Alasannya cukup lemah. Ketika sebagian besar pustaka versi terbaru gagal dikompilasi dengan proyek versi terbaru, mungkin ada berbagai alasan untuk itu - hanya mengebor kode sumber lib bisa membuang-buang waktu.
Apa pun alasannya, melakukan analisis awal tentang kegagalan akan berarti membuang waktu pengembang untuk pekerjaan yang seharusnya dilakukan oleh penguji.
Hal lain di atas alasan meleset adalah kehilangan produktivitas yang tak terhindarkan (dan cukup menyakitkan dalam pengalaman saya) yang terjadi ketika seseorang harus memutus arus dengan beralih antara pengembangan dan aktivitas QA.
Ketika ada penguji dalam tim, hal-hal seperti itu sangat sederhana dan dapat ditangani dengan lebih mudah. Apa yang diberikan oleh pengembang "senior" Anda pada dasarnya adalah persyaratan pengujian konsep.
Langkah-langkah untuk melanjutkan dari sana adalah aktivitas QA yang khas: memperjelas perincian persyaratan, merancang skenario uji yang diformalkan, bernegosiasi tentang cara menangani kegagalan uji.
sumber
Apa yang disarankan oleh Dev Dev kurang masuk akal bagiku. Sangat menyenangkan bisa menelusuri sumber, tetapi ada cara yang lebih baik untuk melakukannya.
Repositori Artifact apa yang Anda gunakan? Anda harus dapat menggunakan tabung sumber untuk setiap versi untuk hidup di sebelah perpustakaan yang dikompilasi. Sebagian besar IDE akan memungkinkan Anda untuk melampirkan ini ke pustaka yang dikompilasi untuk penelusuran sumber. Eclipse dengan Plugin Maven akan melakukan ini secara otomatis.
Jika Anda membutuhkan kode terbaru, Anda bisa menggunakan snapshot versi.
sumber
Ini seharusnya terjadi di skrip build Anda:
Saya tidak mengerti mengapa atau bagaimana ini menjadi masalah. Juga ketika ada sesuatu yang hilang dalam referensi, Anda dapat menambahkannya ke sumber dan mendorong perubahan. Tentu saja mungkin tampak sedikit menakutkan bahwa perpustakaan dapat berubah tepat di bawah kaki Anda, tetapi jika pengelola perpustakaan melakukan pekerjaan mereka dengan benar, ini adalah hal yang baik.
sumber