Bagaimana saya bisa meyakinkan pengembang di tim saya untuk merangkul "Anda membangunnya, Anda menjalankannya"?

29

Bagaimana saya bisa meyakinkan pengembang di tim saya untuk merangkul "Anda membangunnya, Anda menjalankannya"? Dengan itu, saya memiliki kutipan dari Werner Vogels ini dalam pikiran:

Memberi tanggung jawab operasional kepada pengembang telah sangat meningkatkan kualitas layanan, baik dari sudut pandang pelanggan maupun teknologi. Model tradisional adalah bahwa Anda membawa perangkat lunak Anda ke dinding yang memisahkan pengembangan dan operasi, dan membuangnya lalu melupakannya. Bukan di Amazon. Anda membangunnya, Anda menjalankannya. Ini membawa pengembang ke dalam kontak dengan operasi harian dari perangkat lunak mereka. Ini juga membawa mereka ke dalam kontak sehari-hari dengan pelanggan. Putaran umpan balik pelanggan ini sangat penting untuk meningkatkan kualitas layanan.

Saya secara khusus memikirkan serangkaian pengembang yang:

  • Dipekerjakan sebagai pengembang, dengan sedikit / tanpa menyebutkan tugas yang berhubungan dengan operasi.
  • Secara tradisional telah "melemparkan kode ke tembok" ke tim operasi.
  • Secara tradisional memiliki jadwal kerja 9-5, dan secara aktif memusuhi gagasan "tugas pager", berpartisipasi dalam pemulihan bencana, menulis post-mortem, dll, terutama di luar jam kerja normal. (Catatan: Saya hanya memikirkan pemadaman yang sangat jarang terjadi; saya tidak mengusulkan agar kami menambahkan dukungan pelanggan setelah jam kerja ke beban kerja tim ini.)
  • Saat ini tidak bertanggung jawab untuk menulis / mendukung pemantauan atau mengingatkan pada aplikasi mereka.

Misalkan ada tim yang dengan cepat mengembangkan layanan mikro cloud baru dengan profil yang menjadi sedemikian rupa sehingga menyerahkan layanan ini ke tim ops adalah kurang optimal karena mereka tidak dapat mengimbangi untuk mendapatkan pengetahuan yang mendalam tentang layanan yang diperlukan untuk mengelola dan memonitor mereka secara efektif. "Anda membangunnya, Anda menjalankannya" akan bekerja lebih baik untuk tim ini karena tugas dapat didelegasikan kepada setiap anggota tim yang bertanggung jawab. Jadi tim ini akan mulai mengambil bagian dalam merancang infrastruktur, memonitor / mengingatkan alat untuk layanan, dan (sangat jarang) menanggapi peristiwa pemadaman.

Saya secara khusus tertarik pada metodologi, yang didukung oleh contoh-contoh dunia nyata. Bagaimana ini berhasil diimplementasikan di tempat kerja lain, dan jika ada langkah kanonik untuk diikuti saat menerapkan ini? Tautan apa saja ke artikel yang dapat mendukung jawaban akan sangat membantu.

Anthony Neace
sumber
ini mungkin layak ditanyakan di tempat kerja juga
Peter

Jawaban:

19

Saya pikir cara termudah adalah mengubah tujuan kinerja mereka sehingga mereka didasarkan pada keandalan serta memberikan kode. Jual sebagai perusahaan tidak dapat berhasil tanpa keduanya jadi mengapa pengembang hanya diukur pada satu? Cara terbaik bagi mereka untuk memenuhi tujuan kinerja mereka adalah dengan terlibat dalam operasi.

Pada akhirnya Anda perlu meyakinkan mereka bahwa ini adalah cara terbaik bagi perusahaan untuk berhasil dan karenanya bagi mereka untuk berhasil. Itu sulit dan Anda tidak dapat mengharapkan mereka berada di awal. Mereka juga harus dijual berdasarkan nilainya.

Robo
sumber
1
Saya setuju dengan ini, penting untuk membuat orang ingin melakukan ini bukan hanya memberitahu mereka untuk melakukannya.
Kyle Steenkamp
11

Ketika datang untuk mempengaruhi budaya bisnis, cara terbaik mungkin adalah melalui metode "boil the frog" yang terkenal. Anda harus memperkenalkan tugas-tugas ini kepada pengembang secara perlahan, karena saya tahu saya sendiri (sebagai dev) akan menolak memiliki semua tanggung jawab baru ini sekaligus.

Pertama, mulailah dengan memperkenalkan satu atau dua tugas baru hanya untuk dilakukan selama jam kerja normal. Mereka perlu belajar bagaimana melakukan devops yang bisa menjadi proses pembelajaran untuk dev (khusus) kode ini dan mungkin memerlukan pengawasan. Mereka juga akan cenderung memusuhi gagasan untuk mengubah keseimbangan kehidupan kerja mereka karena Anda menyebutkan mereka terbiasa dengan 9-5. Pada titik ini, catat data pada proses baru untuk digunakan nanti (minta mereka menulis kode ini, data selalu berguna).

Nanti saat Anda kehabisan tugas devops-y baru untuk diperkenalkan (sehingga poin-poin pertama, kedua, dan keempat hampir selesai), bawalah tugas-tugas pertama yang Anda perkenalkan sebagai kandidat untuk dilaksanakan di luar jam kerja standar . Anda mungkin melihat reaksi balik pada ini dan Anda bahkan mungkin melihat gesekan tergantung pada seberapa kuat Anda mendorong ini dan seberapa berat budaya kerja-akhir-di-lima tertanam. Untuk mempertahankannya, semoga data Anda mendukung gagasan bahwa bekerja di luar jam standar akan jarang terjadi, hanya terjadi dalam situasi ekstrem, dan akan sangat bermanfaat bagi bisnis dan pelanggan. Jika data Anda tidak mendukung ini, maka Anda sebaiknya siap menghadapi konsekuensi dari pilihan ini.

Bahkan dengan data, hal itu mungkin masih lebih mudah untuk memiliki pengembang menulis pemantauan / memperingatkan kode (sehingga mereka menjadi dev ops tapi masih terutama dev) dan menjaga tim ops alternatif sebagai dukungan lini depan (sebagai beberapa orang lain telah menyarankan). Seperti saya katakan, perubahan kecil penting untuk menghindari serangan balasan. Mengintegrasikan pekerjaan untuk para devs di luar jam standar akan menjadi tantangan, karena mereka mungkin tahu bahwa mereka dapat mencari pekerjaan di tempat lain jika mereka tidak menyukainya karena pasar untuk devs kuat sekarang, terutama jika mereka sudah memiliki keterampilan devops. Kaisar peringatan!

Peter G
sumber
Tetapi bukankah salah satu poin besar dari para devo adalah Anda tidak perlu melakukan hal-hal di luar jam karena Anda dapat menyebarkan / melepaskan kapan saja, alih-alih hari Sabtu tradisional pada pukul 23:00 (11 malam)?
Juha Untinen
9

Melihat ke luar DevOps secara khusus, jika Anda berbicara tentang lingkungan perusahaan besar (ish) maka metodologi SAFe memiliki cara yang cukup baik untuk mendorong perilaku semacam ini.

Pada dasarnya itu bermuara pada beberapa tahapan kunci:

  • proyek dimulai sebagai kereta rilis. Maksud (dan harapan siapa pun yang mendanainya) adalah bahwa itu akan berjalan lama. Saya berbicara selama bertahun-tahun, tidak satu pun dari ini "berdiri tim selama 3 bulan lalu turunkan mereka" bisnis.

  • selama berlangsungnya proyek, kereta rilis akan secara tak terelakkan mengumpulkan lebih banyak orang karena lebih banyak persyaratan proyek baru berdasarkan pada peluang bisnis yang baru direalisasikan serta pajak yang berkelanjutan dari pekerjaan gaya pemeliharaan.

  • Saya hampir selalu melihat kereta menjalankan peningkatan pertama mereka sebagai tim proyek / perubahan 100%, kenaikan kedua mereka mengalokasikan persentase waktu untuk Menjalankan pekerjaan. Manajemen kenaikan ke-3 menyadari bahwa mereka akan mengalami masalah dan mulai menambahkan tim untuk mencoba dan menangani Run overflow untuk memberikan waktu kepada pengembang dan insinyur berpengalaman mereka untuk terus bekerja pada persyaratan baru.

  • jika keseimbangan yang tepat tercapai, tim proyek dapat terus memberikan hasil proyek tanpa macet banyak dalam pekerjaan pemeliharaan dan tim baru yang bergabung dengan kereta tidak langsung diharapkan hanya menjadi 100% tim pendukung, tetapi sebaliknya mengambil Bagian adil dari pekerjaan perubahan yang akan ditangani kemudian Anda berakhir dengan tim pengiriman yang memiliki produk yang mereka bangun secara default, itu tidak perlu datang pada mereka sekaligus bahwa sekarang mereka adalah tim Run, alih-alih itu perlahan-lahan terintegrasi ke dalam kegiatan mereka sehari-hari.

Di mana model ini jelas memiliki beberapa kelemahan yaitu dalam penetapan harga untuk sebuah bisnis. Secara umum saya berharap akan membayar lebih banyak untuk sumber daya perubahan daripada sumber daya berjalan, biasanya menjalankan kontrak dengan vendor besar adalah harga tetap dan maksudnya adalah bahwa mereka menghasilkan uang pada peningkatan berkelanjutan dan karenanya penghematan biaya.

Yang sedang berkata, itu tidak terlalu sulit untuk mempertimbangkan tim perubahan berdiri sebagai bagian dari kereta rilis untuk hanya memberikan perbaikan berkelanjutan. Jika ada sesuatu yang dapat mereka bangun atau lakukan yang akan meningkatkan kemampuan mereka untuk fokus pada pengiriman proyek baru dan kurang peduli dengan pekerjaan "bisnis seperti biasa" maka itu harus ditumpuk dan diprioritaskan berdasarkan manfaat yang dirasakan oleh siapa pun yang memegang uang untuk lepaskan kereta.

hvindin
sumber
Yah, baik, baik, sekarang @Tensibai menderita beberapa TLA (Tiga Huruf Akronim) yang "saya" tidak sengaja (pikir saya) tahu ... Bisnis Seperti Biasa adalah bagaimana IMO (TLA lain) teks lengkapnya terlihat seperti. Dan BTW (grrrr, yang lain), jika Anda menderita ESL (grrrr, satu lagi) dan Anda mengucapkan BAU dalam kelas pelatihan SCM (ggrrrr, yang lain), maka lebih baik hati-hati dengan audiens yang tidak menerjemahkannya menjadi "bouw" (suara yang sama ...), karena dalam bahasa Inggris itu akan seperti "build".
Pierre.Vriens
Maaf tentang hal itu, saya sering lupa betapa frustrasi yang saya dapatkan ketika saya mulai di sebuah perusahaan dengan beberapa akronim yang tidak biasa yang digunakan semua orang setiap saat, atau betapa menyebalkannya hal itu dimulai di industri dan harus berurusan dengan orang-orang yang menyemburkan TLA ke kanan dan ke kiri. dan sepertinya aku jatuh ke dalam perangkap yang sama. Saya telah memperbarui jawaban saya untuk menghapus semua akronim :)
hvindin
OK, jauh lebih baik, Anda bahkan telah meniadakan komentar dari @Tensibai ... PS 1: Saya percaya Anda baik-baik saja dengan koreksi kesalahan ketik yang baru saja saya terapkan pada jawaban Anda ... PS 2: apa itu SAF? Saya yakin itu bukan sesuatu seperti "Fasilitas Akses Keamanan", sesuatu (besar) yang digunakan dalam lingkungan mainframe, semacam API untuk diintegrasikan dengan RACF, ACF2 atau Top-Secret ...
Pierre.Vriens
Saya telah menambahkan tautan ke situs web Scaled Agile Frameworks jika Anda tertarik. Secara pribadi saya sedikit berjuang dengan menyukai metodologi tetapi saya tidak bisa memikirkan cara yang lebih baik untuk membuat tim berperilaku lebih bertanggung jawab setelah tim / proyek / apa pun mereka berada di atas ukuran tertentu.
hvindin
8

IMHO You build it, you run ittidak boleh dipahami secara harfiah. Untuk memulainya - hampir terdengar seperti hukuman;)

Tidak ada satu orang atau bahkan tim pengembang kecil yang dapat secara wajar mendukung alat atau perangkat yang digunakan dalam proses pengembangan perangkat lunak (yaitu dalam produksi!) Untuk jangka waktu yang lama. Pernah ke sana, melakukan itu :)

Tugas-tugas pendukung cenderung berkembang seiring dengan berkembangnya alat (set) basis pelanggan. Jika mengemban tugas-tugas itu secara eksklusif, tim pengembangan dapat melakukan sebagian besar dukungan, dengan sedikit / tidak ada waktu tersisa untuk pengembangan di masa mendatang. Secara efektif jalan buntu - berapa banyak pengembang ingin bertahan di lingkungan seperti itu?

Memiliki tim pendukung pertama yang profesional sangat penting untuk mencegah frustrasi, stres, dan efek lain dari paparan jangka panjang terhadap tugas-tugas dukungan terhadap anggota tim pengembang Anda.

Tim pendukung lini pertama tentu saja akan mundur ke tim pengembang (sekali lagi, tim, bukan satu orang!) Untuk masalah yang tidak dapat mereka liput secara langsung. Ya, mungkin memang sulit pada awalnya, tetapi segalanya akan menjadi lebih baik. Itu harus berupa kolaborasi - itulah bagian dari apa yang DevOps bicarakan.

Dan Cornilescu
sumber
1
Maaf, saya pikir kami tidak setuju pada lingkup "menjalankannya." :) Saya tidak bermaksud memberi kesan bahwa mereka akan melakukan tugas dukungan; kami memiliki staf yang cukup besar untuk itu. Secara khusus berkaitan dengan implementasi arsitektur produksi, desain apa yang harus dipantau dan bagaimana, bagaimana skala, hal-hal seperti itu
Anthony Neace
Ah, begitu. Yap - ketidakcocokan total. Saya mungkin akan menghapus jawaban ini.
Dan Cornilescu
2
Tidak masalah, saya pikir itu bisa tetap. Orang lain yang mencari pertanyaan seperti ini mungkin memiliki pemikiran yang sama dengan Anda dan ini mungkin relevan bagi mereka. Sekali lagi saya minta maaf, saya seharusnya lebih spesifik di badan pertanyaan saya!
Anthony Neace
6

Ini pada akhirnya tergantung pada ukuran dan struktur perusahaan. Sebenarnya ada tiga tahap di mana perusahaan Anda berada:

  1. Tahap startup (di bawah 150 insinyur). Tentu saja, para pengembang perlu menjalankan perangkat lunak mereka sendiri. Semua orang melakukannya dalam startup. Anda mungkin bahkan tidak memiliki tim operasi untuk memulai, tetapi bahkan jika Anda melakukannya, itu kecil dan kecepatan kemajuannya sangat cepat sehingga tidak ada cara untuk lulus pengetahuan yang diperlukan untuk menjalankannya dengan sukses di tim lain dengan cukup cepat bagi mereka untuk menjadi orang yang sukses.

  2. Bisnis berukuran sedang (lebih dari 150 insinyur, tetapi satu tim operasi tunggal). Pada tahap ini churn di perusahaan mulai terlalu tinggi, para insinyur yang membangun perangkat lunak tidak perlu bertahan juga untuk menjalankannya. Anda tidak mengenal semua orang lagi dan sulit untuk berkomunikasi secara efektif agar semua orang bisa beroperasi. Itu akan mulai berubah menjadi kekacauan. Pada tahap ini Anda ingin beralih ke model Google, di mana setiap tim harus mengoperasikan perangkat lunak mereka, tetapi belum tentu mengoperasikannya. Mereka akan mengoperasikannya di awal, tetapi bagian besar dari membangun perangkat lunak adalah untuk mengurangi biaya pengoperasian ke suatu titik, di mana bebannya cukup kecil sehingga tim operasi dapat menandatangani untuk menjalankannya. Baru setelah itu dianggap selesai.

  3. Perusahaan besar dengan banyak unit bisnis, (di mana masing-masing memiliki tim operasi sendiri): Pada tahap ini Anda dapat kembali ke model Amazon, di mana setiap tim penting mengembangkan dan mengoperasikan layanan mereka sendiri. Masing-masing unit bisnis harus cukup kecil agar setiap orang mengenal satu sama lain, jadi di bawah sekitar 150 insinyur dan Anda mengoperasikan masing-masing pada dasarnya sebagai startup. Amazon memiliki setiap layanan AWS yang beroperasi kurang lebih secara terpisah dan berfungsi untuk mereka.

Anda harus mencari tahu pada tahap apa perusahaan Anda berada dan / atau bergerak masuk dan bertindak sesuai dengan itu. Tidak ada solusi "satu ukuran untuk semua".

Jiri Klouda
sumber
3

Saya mengambil ini (jika saya dihadapkan dengan perintah seperti itu, atau apa pun yang Anda sebut itu), akan menjadi sesuatu seperti " What else would you expect?!?!". Karena, secara tidak sengaja:

  • Aku bahkan tidak akan bisa hidup tanpanya, dan
  • Saya suka makan makanan (anjing) saya sendiri.

Biarkan saya jelaskan sedikit lebih jauh ...

Bisnis / hobi / hasrat saya adalah , lebih khusus di lingkungan . Dan ke mana pun saya pergi (untuk memperbaiki barang agar sesuai dengan kebutuhan pelanggan), persyaratan pertama yang saya terapkan (dalam kontrak saya), adalah bahwa setiap penyetelan yang dilakukan untuk sistem yang kami terapkan, adalah melalui sistem yang sama. Dan dengan melakukan itu (benar, yang membutuhkan waktu beberapa jam, katakanlah setengah hari maksimal), kita mendapatkan manfaat dari itu (daftar tidak lengkap):

  • Saya hampir tidak mendokumentasikan apa pun yang saya lakukan untuk menjalankan sistem. Jika ada pertanyaan, saya hanya menanyakan sistem (dan mengajari pelanggan bagaimana cara meminta sistem tanpa bantuan saya).
  • Jika saya dipanggil dalam X bulan / tahun (untuk meningkatkan ke rilis baru?), Saya ingin tahu (ingat) apa yang "saya" telah lakukan sebelumnya (dan satu-satunya hal yang saya percayai adalah apa yang dikatakan sistem kepada saya, alias mengingatkan saya tentang).
  • Saya hanya perlu bertanya kepada pelanggan sekali tentang bagaimana melakukan hal-hal spesifik di situs mereka (konvensi penamaan sulit untuk diingat), atau untuk meyakinkan mereka untuk memberikan izin yang diperlukan untuk "sistem" (bukan untuk saya ...).
  • Anda sedang continuouslymenguji QA sistem Anda sendiri ... dalam produksi. Kemungkinannya adalah Anda akan mengalami sendiri bug, kesalahan logis, atau fitur yang hilang (dan yang tidak). Dan mereka sangat memotivasi agar mereka ditangani secepatnya ... misalnya untuk menjadi lebih produktif.
  • ... dan jika Anda mau, saya dapat menambahkan selusin alasan ...

Namun, sebelum Anda mencobanya sendiri di rumah, waspadai beberapa jebakan yang harus dihindari:

  • Anda ingin semua orang bergabung dengan pesta (menggunakan sistem), karena hanya 1 "pengecualian" (alias manajer / pemilik perusahaan?) dapat merusak pesta (Anda pikir Anda dapat mempercayai sistem Anda, tetapi kemudian seseorang melakukan sesuatu tanpa bertanya / menggunakan sistem). Kasing itu mungkin dikenakan biaya berhari-hari untuk ...
  • pengguna baru mungkin mengeluh bahwa dengan menggunakan sistem (baru) ini, mereka membutuhkan waktu lebih lama untuk menyelesaikan pekerjaan mereka (dibandingkan dengan apa pun yang mereka gunakan sebelumnya). Dan di mana pun itu masuk akal, mereka akan menggunakannya sebagai alasan mengapa mereka terlambat untuk menyelesaikan pekerjaan mereka. Pada titik itu, Anda sebaiknya memiliki manajemen tingkat tinggi yang melindungi Anda, karena jika tidak, proyek / sistem Anda dapat disalahkan.
  • pastikan Anda tahu sistem Anda sendiri, dan cara mengkonfigurasinya agar sesuai dengan kebutuhan Anda. Sebagai sampel (dalam kasus saya): Anda ingin mengonfigurasi sistem sehingga Anda menggunakan lingkungan operasional untuk mengirim ke lingkungan eksperimental Anda, dan bukan sebaliknya ... Saya telah melihat itu terjadi di masa lalu ... menggunakan (menyalahgunakan) sistem pengujian untuk mengirim ke lingkungan yang sangat aman.
Pierre.Vriens
sumber