Siapa yang Bertanggung Jawab untuk Menyiapkan Sistem Pembuatan Otomatis?


15

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:

  1. 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.

  2. 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?


7
Ini berita baru bagi saya bahwa peran manajer proyek adalah memberikan kepemimpinan.
Yuriy Zubarev

Daftar persyaratan pengetahuan itu pada akhirnya, semua hal yang mungkin atau tidak dimiliki pengembang, dan yang bukan pengembang tentu saja tidak. Tergantung pada milikmu.
Orbling

5
hampir -1 untuk masih menggunakan CVS.
Johannes Rudolph

@ Johannes - Jika terserah saya, kami tidak akan. Bahkan, saya memiliki pengaturan repositori SVN yang telah saya gunakan.
jmort253

1
Sebanyak CVS adalah teknologi lama (dan jauh dari favorit saya) itu masih berfungsi dan banyak tempat masih menggunakannya. Dan jika itu melakukan pekerjaan yang Anda butuhkan untuk meninggalkannya di tempat itu masuk akal. Kami menggunakannya di kantor kami, dan itu menyelesaikan pekerjaan.
Zachary K

Jawaban:


14

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:

Saya ingin memperkenalkan alat integrasi berkesinambungan sehingga revisi beracun muncul lebih cepat daripada nanti. Saya telah melihat [hudson, acme CIS, foo] dan semuanya sepertinya akan bekerja. Mengingat kenyataan bahwa kami menggunakan CVS dengan [daftar peringatan di sini], saya mencari rekomendasi dan saya akan hidup dengan apa pun yang diputuskan tim.

Dave, silakan bertanggung jawab untuk mendapatkan konsensus dan menjalankannya. Tim - harap masukan Anda kepada Dave pada akhir hari Kamis agar kami dapat menguji ini pada hari Jumat.

Tolong kirimkan saya kredensial saya setelah kami memiliki sesuatu yang ditetapkan.

Pendekatan ini memiliki manfaat sebagai berikut:

  • Anda mendelegasikan, bukan membuang
  • Orang-orang tahu Anda telah melakukan riset, kualitas barang yang Anda tunjukkan membantu menentukan harapan Anda untuk kualitas alat yang diterapkan
  • Anda mengetahui [peringatan], jangan tergelincir mendiskusikannya kecuali mereka benar-benar pelanggar untuk tugas yang dihadapi
  • Anda mengizinkan sedikit demokrasi. Tentu, Anda akan masuk untuk melihat apakah ada masalah, tetapi orang-orang yang harus berurusan dengan CIS akan menjadi orang yang memilih platform.

Dalam skenario tiruan saya, Davedipilih karena ia memiliki paling tidak di piringnya dan mungkin tidak akan memiliki masalah menyiapkan server baru. Tergantung pada beban pekerjaan, Davemungkin hanya Anda. Itu sangat subjektif sehingga saya hanya menyebutkannya. Anda tidak dapat selalu mengatakan not my job to do thatterutama 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.


2
Terima kasih atas masukan dan sarannya. Saya tidak mencoba menarik not my jobkartu 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 :) +1
jmort253

@ jmort253 - Ya, saya tahu Anda tidak menghindari pekerjaan. Saya akan memperbarui untuk kejelasan.
Pos Tim

3
+1 untuk melibatkan tim, dan membiarkan mereka membuat keputusan teknis. Itu adalah kunci untuk membuat mereka menerima dan menggunakan sistem baru.
Péter Török

14

Saya melihat ada tiga cara yang mungkin:

  1. 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.

  2. 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.

  3. 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


2
@Newtopian - Ini membantu. Terutama bagian tentang memiliki rencana sebelum secara buta mencoba mengimplementasikan sesuatu. Terima kasih. +1
jmort253

1
+1 Saran yang bagus. Satu tambahan, platform apa pun yang Anda kerjakan, jika salah satu anggota tim Anda adalah Linux-head utama atau OS lain di luar sana yang sering memiliki pengguna pengembang memanfaatkan skrip pembuatan, mereka mungkin senang dengan proyek tersebut.
Garet Claborn

1
+1 untuk 3) setiap tim perangkat lunak harus memiliki build manager khusus dewasa ini
Sean Patrick Floyd

1
Satu perusahaan terkemuka yang saya ingat pernah membaca tentang (sinyal? GitHub? Saya tidak tahu) memberikan tanggung jawab menjadi master bangunan kepada orang terakhir yang memecahkan bangunan. Ini memastikan (1) orang berhati-hati untuk tidak merusak bangunan, dan bahwa (2) banyak anggota tim (idealnya) mendapatkan pengalaman belajar tentang sistem pembangunan.
Michelle Tilley

1
@jmort cepat atau lambat itu akan sampai ke titik di mana tidak ada yang bisa mengusahakan biaya untuk tidak memiliki posisi khusus seperti itu
Sean Patrick Floyd

3

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.


Misalkan Anda adalah pemimpin dari pemimpin lain? Apakah tanggung jawab CEO untuk mengidentifikasi bahwa pengembang Jawa junior dalam tim proyek memerlukan pelatihan tambahan?
jmort253

@ jmort253 Jawaban singkatnya mungkin, tetapi tergantung pada struktur organisasi perusahaan. Jika struktur perusahaan datar dan kecil, maka mungkin tanggung jawab CEO untuk memastikan pengembang mendapatkan pelatihan. Memang, saya telah bekerja di banyak startup di mana VP memiliki laporan langsung yang bukan manajer.
dietbuddha

1

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.

Apakah pengembang adalah orang yang tepat untuk tugas ini, mengingat itu membutuhkan pengetahuan tentang Java, Spring, dan Google App Engine?

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.


0

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.


0

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.

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.