Saya seorang manajer proyek di perusahaan saya. Saya bekerja dengan beberapa tim pengembang menggunakan sistem kontrol versi standar yang terkenal yang dikenal sebagai CVS. Saya ingin melihat integrasi berkelanjutan dan build otomatis diimplementasikan untuk membantu mencegah masalah dengan kerusakan build dan dengan penyebaran yang buruk menyelinap ke server produksi.
Saya yakin saya dapat mengatur ini sendiri, tetapi saya tidak ingin melakukan ini sendiri karena dua alasan:
Saya tidak punya waktu untuk itu. Saya memiliki tanggung jawab saya sendiri, yang melibatkan pemasaran, komunikasi dengan pemangku kepentingan lain dengan anggota tim bukan bagian dari pengembangan, berkomunikasi dengan pelanggan, dan perencanaan proyek.
Yang paling penting, saya manajer proyek. Tujuan saya adalah untuk memberikan kepemimpinan, bukan untuk mengelola mikro tim pengembangan .
Apa beberapa hal yang bisa saya lakukan untuk menemukan seseorang di tim pengembangan yang akan bersemangat mengatur ini? Apakah pengembang adalah orang yang tepat untuk tugas ini, mengingat itu membutuhkan pengetahuan tentang Java, Spring, dan Google App Engine? Apa saja kiat untuk membantu mempromosikan perubahan di mana perubahan ditakuti?
Jawaban:
Saya pertama-tama akan meneliti beberapa kemungkinan. Misalnya, Hudson adalah server integrasi berkelanjutan yang agak populer dan sangat fleksibel. Anda dapat mengirim email kepada tim dev Anda dengan sesuatu seperti ini:
Pendekatan ini memiliki manfaat sebagai berikut:
Dalam skenario tiruan saya,
Dave
dipilih karena ia memiliki paling tidak di piringnya dan mungkin tidak akan memiliki masalah menyiapkan server baru. Tergantung pada beban pekerjaan,Dave
mungkin hanya Anda. Itu sangat subjektif sehingga saya hanya menyebutkannya. Anda tidak dapat selalu mengatakannot my job to do that
terutama jika Anda adalah satu-satunya yang punya waktu untuk melakukannya. Jika setiap orang sudah menepi, persepsi mereka kesediaan Anda untuk membantu menjadi lebih penting. Mengukur itu adalah keterampilan yang Anda kembangkan dari waktu ke waktu.Dalam hal apa pun, Anda akan memiliki server CIS pada hari Jumat, atau perincian tentang mengapa hal itu tidak mungkin dilakukan tanpa set tangan tambahan.
sumber
not my job
kartu untuk keluar dari pekerjaan, tetapi karena mudah bagi manajer proyek untuk kadang-kadang terlalu terlibat dalam apa yang dilakukan tim pengembangan. Dengan mendelegasikan ini untuk pengembangan, saya memberi mereka kendali dan pemerintahan. Juga, jika mereka mengambil alih pengaturan ini, mereka akan lebih mungkin menggunakannya, sedangkan jika saya mengaturnya, saya akan mendapatkan pengalaman belajar yang bagus tentang cara mengatur integrasi berkelanjutan tetapi tanpa ROI dan biaya peluang untuk memberikan pada tugas saya yang lain. Juga, email contoh sangat membantu :) +1Saya melihat ada tiga cara yang mungkin:
Mintalah seseorang dalam tim pengembang membuat penilaian cepat atas alat yang mungkin dan minta dia menyiapkan sesuatu dengan cepat. Jika masing-masing proyek Anda memiliki skrip build yang tepat (yaitu Anda dapat membangun proyek di luar IDE) maka itu harus cukup cepat untuk menghubungkan mereka ke CI.
Perlakukan infrastruktur pembangunan sebagai proyek internal dalam tim Anda dan kelola seperti itu. Sedikit lebih terlibat daripada poin pertama tetapi jika dilakukan dengan benar Anda akan mendapatkan sistem yang lebih baik. Juga menyebarkan pengetahuan di tim akan mengurangi risiko kelebihan spesialisasi yang disebutkan di bawah ini. Anda juga mendapatkan manfaat dari peer-review. Namun beberapa pemrogram mungkin menganggap tugas ini sebagai hal yang merendahkan dan karena itu mungkin tidak menghabiskan terlalu banyak ke dalamnya sebagaimana seharusnya.
Menyewa seorang dev sebagai master bangunan dan minta dia mengatur semua alat. Kemudian terus gunakan dia untuk meningkatkan sistem, menambahkan metrik, pembuatan dokumen otomatis, pengujian otomatis dll. Ini lebih mahal tetapi jika dilakukan dengan benar investasi pada orang ini akan membayar dengan sangat cepat dengan meningkatkan efisiensi tim pengembang Anda. Orang ini harus mahir dengan bahasa dan kerangka kerja yang digunakan oleh tim Anda dan memiliki keinginan untuk merekatkan mereka dalam suatu sistem. Di sisi lain (dari komentar) ini mungkin tidak sesuai anggaran Anda dan menciptakan posisi khusus dapat mengarah pada solusi yang tidak terdokumentasi yang dapat membuat transisi menjadi sulit.
Ini dikatakan, sebelum memulai apa pun pastikan apa yang Anda inginkan darinya. Pertanyaan Anda kurang detail untuk mengarahkan Anda ke arah teknis yang benar. Anda perlu tahu keuntungan apa yang ingin Anda capai dalam menggunakan alat tersebut, Anda memerlukan visi umum dari sistem yang diinginkan. Seseorang dapat pergi jauh dalam menciptakan lingkungan yang mengikat semuanya tetapi tanpa rencana induk untuk membangun melawan Anda juga dapat menjalankan lingkaran dan membuat segalanya lebih rumit dari apa yang sudah ada.
Seorang manajer yang pernah saya katakan bahwa alat itu bagus tetapi tanpa proses mereka tidak berguna. Saya hanya berharap dia akan menindaklanjuti hal itu katanya ketika saatnya tiba untuk menempatkan ini di tempat ...
Jadi, jika Anda memutuskan untuk mempekerjakan seseorang, ada keuntungan pasti dalam mendapatkan seorang programmer daripada seseorang dengan latar belakang yang lebih ITish. Poin utama adalah bahwa orang ini dapat menghabiskan waktu dan energi dalam menciptakan kode lem dan plugin yang akan mengintegrasikan sistem yang berbeda bersama-sama dalam sistem yang koheren.
Semoga ini bisa membantu
sumber
Jika Anda memiliki peran kepemimpinan, tugas Anda adalah mengidentifikasi komponen / praktik yang hilang dan tanggung jawab Anda untuk melihatnya diterapkan dengan benar. Tugas implementasi dapat didelegasikan atau tidak, tetapi pada akhirnya itu adalah tanggung jawab para pemimpin.
Kunci penerimaan adalah pemahaman, atau setidaknya memberi Anda manfaat dari keraguan. Anda dapat membicarakan apa yang ingin Anda lakukan dan memunculkan biaya dan manfaatnya. Jika diskusi tidak menghasilkan pemahaman, Anda dapat mengandalkan kepercayaan mereka pada keputusan Anda, tetapi hanya jika Anda telah membangun repoire semacam itu.
Jika pendelegasian Anda lakukan pada batasan waktu keahlian, bawalah hal itu selama berdiri atau rapat tim dan mintalah seorang sukarelawan. Jika tidak ada orang yang datang, berikan saja seperti yang Anda lakukan pada pekerjaan lain.
memperbarui:
Ada struktur organisasi dalam setiap perusahaan. Peran kepemimpinan memiliki tanggung jawab atas sumber daya di tingkat itu. Mereka juga memiliki tanggung jawab untuk menunjukkan dan mengatasi masalah apa pun. Mereka mungkin membutuhkan sumber daya tambahan dan / atau saran di titik mana Anda naik rantai. Jika Anda dapat menangani masalah ini, Anda memiliki opsi untuk mengimplementasikan solusi sendiri atau mendelegasikan. Ini dapat dan harus melibatkan orang-orang yang akan terpengaruh secara langsung, idealnya bekerja sama dengan mereka.
Saya tidak dapat mengatakan bahwa level direktur dan posisi di atas seharusnya tidak pernah secara langsung bertanggung jawab atas orang atau grup tertentu dalam perusahaan. Itu sangat tergantung pada struktur organisasi perusahaan. Saya telah bekerja di perusahaan baru di mana CTO bertanggung jawab langsung untuk pengembang dan penguji. Dalam manajemen perusahaan besar yang lebih tradisional di tingkat itu tidak akan memiliki visibilitas yang diperlukan atau keakraban yang diperlukan untuk membuat keputusan yang tepat di tingkat yang lebih rendah.
sumber
Saya kebanyakan pengembang, dan saya mengaturnya ketika saya bisa (yaitu ketika saya tidak secara tegas dilarang melakukannya). Secara umum, karena tempat saya bekerja adalah .NET shop, saya memilih CruiseControl.NET karena open source, bekerja dengan sebagian besar sistem kontrol sumber utama dan relatif mudah digunakan. Saya selalu ingin mengatur Ambient Orb sebagai salah satu output, tapi itu biasanya di luar kendali saya.
Bawa dalam sebuah pertemuan untuk pertama-tama melihat apakah ada yang punya keinginan untuk melakukannya - selama itu tidak berdampak pada proyek yang sedang mereka kerjakan.
Di tempat saya saat ini (salah satu lab nasional), kami menyiapkannya hanya untuk membuat bangunan secara konsisten sehingga orang-orang yang ingin melihat apa yang kami lakukan dapat memperoleh versi runnable kapan saja . Mereka tidak ingin tes unit (kesan manajer proyek adalah bahwa upaya yang kami lakukan ke dalam unit test bisa dimasukkan ke dalam porting proyek ke .NET).
Di tempat saya sebelumnya, tujuannya adalah untuk membuat standar bangunan dan konsisten di seluruh produk. Terlalu banyak produk yang hanya dapat dibangun di satu komputer khusus (dalam satu kasus produk, yang melibatkan kontrol pihak ke-3 dengan DRM agresif yang sudah lama keluar dari bisnis, kami harus menjaga satu mesin tetap hidup selama sekitar 5 tahun setelah pengembang berhenti. karena hanya dia yang bisa membangun produk pengiriman komersial yang sekarang diganti ini). Selain itu, pemasangan hanya dapat dilakukan oleh satu orang yang merupakan orang pagi - jadi jika Anda membutuhkan bangunan setelah sekitar jam 3 sore, Anda menunggu hingga hari berikutnya.
Tergantung. Jika Anda memiliki beberapa orang QA yang layak dalam scripting, tanyakan terlebih dahulu sebelum menugaskan mereka untuk itu.
Menyiapkannya untuk memulai bukanlah tugas yang rumit. Seharusnya tidak perlu lebih dari beberapa hari untuk mengatur (kebanyakan di lingkungan perusahaan, kerepotan mendapatkan akun untuk menjalankan segala sesuatu dengan semua izin yang diperlukan) dan mulai berjalan.
sumber
Cobalah mengaturnya dari arah yang berbeda - ketika ada masalah di lingkungan produksi, berikan tanggung jawab pada tim pengembang untuk memperbaikinya dan memperbaikinya dengan cepat. Kemudian perkenalkan ide bangunan malam sederhana yang mengkompilasi dari kode terbaru, versi perangko dll. Jika gagal membangunnya tidak akan dipromosikan.
Saya pikir skrip build harus dimiliki oleh development. Ketika mereka memodifikasi dependensi atau membuat perubahan, mereka adalah yang terbaik untuk mengetahui cara memperbarui skrip. Dan beri tahu mereka bahwa jika manajemen proyek memilikinya, Anda hanya akan memanggil mereka ke dalam rapat ketika ada masalah.
sumber
Anda bisa saja mengatakan pada pertemuan teem berikutnya, "OK, saya pikir kita harus melakukan ini karena. Siapa yang bisa menerapkannya" Saya memberi Anda lebih baik daripada bahkan kemungkinan seseorang akan mengatakan "Tentu saya akan melakukannya". maka Anda tidak perlu bertengkar tentang hal itu.
sumber