1.0

View in English

1.0 Pengantar Bagian 1: Manusia

Perangkat lunak dibangun oleh manusia, dan manusia diorganisasi oleh budaya, struktur, dan proses. Jadi sebelum membahas kode, arsitektur, atau perkakas, bagian ini menengok sistem manusia yang menghasilkan semuanya: nilai bersama yang dihidupi sebuah tim, cara ia membagi diri menjadi tim-tim, bagaimana ia menumbuhkan karier, bagaimana ia berkoordinasi sehari-hari, dan bagaimana ia membuat serta mengingat keputusan. Segala hal lain dalam buku ini bertumpu pada fondasi tersebut. Arsitektur yang brilian, jika dibangun oleh organisasi yang penuh ketakutan, terpecah-pecah, atau pelupa, tidak akan bertahan menghadapi kenyataan.

Bagi tim besar, fondasi ini tidak lagi intuitif dan menjadi struktural. Praktik yang menyebar begitu saja di antara delapan orang dalam satu ruangan akan runtuh di antara delapan ratus orang yang tersebar di seluruh dunia. Karena itu Anda harus membuat budaya menjadi eksplisit, merancang batas tim dengan sengaja, menuliskan ekspektasi pertumbuhan, memindahkan koordinasi dari obrolan di lorong ke dokumen yang tahan lama, dan mencatat keputusan agar alasannya hidup lebih lama daripada orang yang membuatnya.

Organisasi enterprise dan pemerintah merasakan setiap tekanan ini dengan kekuatan penuh. Mereka bekerja dalam skala besar, di bawah audit dan pengawasan, dalam rentang waktu panjang, dan dengan campuran staf tetap, kontraktor, dan vendor. Sistem yang Anda bangun hari ini mungkin berjalan selama satu dekade, dipelihara oleh orang-orang yang tidak pernah bertemu Anda. Dalam situasi ini, fondasi dalam bagian ini bukanlah soft skill atau pelengkap yang baik untuk dimiliki. Fondasi ini adalah mesin dari memori institusional, akuntabilitas, dan manajemen risiko.

Bab dalam bagian ini

  • 1.1 Nilai-nilai rekayasa perangkat lunak: Keyakinan bersama dan perilaku sehari-hari yang sebenarnya mengatur bagaimana perangkat lunak dibangun, berpusat pada rasa aman psikologis, pembelajaran tanpa menyalahkan, kepemilikan yang jelas, budaya menulis, dan ritme yang berkelanjutan.

  • 1.2 Topologi tim dan desain organisasi: Bagaimana pembagian orang ke dalam tim membentuk perangkat lunak yang dapat mereka bangun (Hukum Conway: organisasi menghasilkan sistem yang mencerminkan struktur komunikasinya sendiri), dengan memakai tim yang selaras dengan alur, tim platform, tim pemberdaya, dan tim subsistem rumit untuk meminimalkan beban kognitif dan mengurangi ketergantungan antartim.

  • 1.3 Peran, jenjang karier, dan pertumbuhan: Membangun kerangka karier yang eksplisit dan terkalibrasi dengan jalur kontributor individual dan jalur manajemen yang paralel, sehingga penjenjangan, promosi, perekrutan, dan gaji adil, konsisten, dan dapat dipertanggungjawabkan dalam skala besar.

  • 1.4 Cara kerja: Bagaimana tim berkoordinasi, merencanakan, dan menyerahkan hasil sehari-hari, mengutamakan prinsip daripada ritual dan menjadikan praktik asinkron, mengutamakan dokumen, dan berfokus pada hasil sebagai bawaan agar dapat diskalakan lintas zona waktu dan tenaga kerja campuran.

  • 1.5 Pengambilan keputusan dan tata kelola: Menyeimbangkan otonomi tim dengan keselarasan organisasi melalui jalan beraspal, tinjauan yang disesuaikan ukurannya, cara berpikir keputusan yang dapat dibalik versus tidak dapat dibalik, dan mengelola utang teknis sebagai portofolio.

  • 1.6 Catatan keputusan: Cara menulis, menyimpan, dan mempertahankan catatan keputusan, yang paling umum berupa catatan keputusan arsitektur (ADR), agar alasan di balik suatu pilihan bertahan melewati pergantian staf dan memenuhi audit, serta bagaimana membuat keputusan mudah ditemukan dan bahkan dapat diuji.

  • 1.7 Standar rekayasa dan pengecualian: Bagaimana sebuah organisasi menyusun, menerbitkan, menegakkan, dan mengembangkan standar rekayasanya, dan bagaimana ia menangani penyimpangan melalui proses pengecualian (waiver) yang diatur dan terdokumentasi agar standar tetap kredibel tanpa menjadi kaku.

  • 1.8 Perekrutan, wawancara, dan orientasi: Membangun tim dengan sengaja melalui pencarian kandidat yang inklusif, wawancara terstruktur dan terkalibrasi yang mengurangi bias, serta rencana orientasi yang nyata yang membuat insinyur baru produktif dan merasa menjadi bagian dengan cepat, bukan dibiarkan berenang atau tenggelam sendiri.

  • 1.9 Kerja terdistribusi dan jarak jauh: Beroperasi lintas lokasi dan zona waktu dengan menjadikan kolaborasi asinkron, tertulis, dan mengutamakan dokumentasi sebagai bawaan, merancang tumpang-tindih jam kerja dan serah terima yang disengaja, serta menilai orang dari hasil, bukan dari jam kerja atau keterlihatan.

  • 1.10 Efektivitas rekayasa dan produktivitas pengembang: Mengukur dan meningkatkan seberapa efektif insinyur dapat melakukan pekerjaan terbaik mereka menggunakan kerangka multidimensi (SPACE dan pengalaman pengembang) alih-alih satu angka yang mudah dimanipulasi, dan menyingkirkan gesekan serta pekerjaan rutin yang memperlambat tim.

  • 1.11 Manajemen rekayasa: Keterampilan mengelola insinyur, bukan jenjang kariernya itu sendiri: lingkaran one-on-one, umpan balik, dan coaching, pendelegasian, manajemen kinerja yang manusiawi, dan diukur sebagai pengali bagi tim, bukan dari keluaran Anda sendiri.

  • 1.12 Keberagaman, kesetaraan, inklusi, dan rasa memiliki: Membangun tim tempat perbedaan hadir, diperlakukan secara adil, dilibatkan secara aktif, dan membuat orang merasa menjadi bagian, karena tim yang inklusif membangun perangkat lunak yang lebih baik dan karena hal itu benar, dengan pengukuran yang jujur dan tanpa tokenisme.

  • 1.13 Mentoring, coaching, dan berbagi pengetahuan: Menumbuhkan orang dan menyebarkan keahlian dengan sengaja melalui mentoring, coaching, dan sponsorship, komunitas praktik, presentasi internal, pairing, dan dokumentasi sebagai sarana pengajaran, agar pengetahuan bertahan lebih lama daripada individu mana pun dan risiko bus factor tetap rendah.

Bagaimana bab-bab ini saling berkaitan

Bab-bab ini membentuk satu benang merah. Nilai mendefinisikan apa yang dipedulikan sebuah organisasi. Struktur dan peran menentukan siapa yang mengerjakan dan bagaimana mereka tumbuh. Cara kerja mengatur bagaimana orang berkoordinasi. Tata kelola dan catatan keputusan menjaga alasan di balik pilihan mereka. Ketergantungannya berjalan dalam urutan itu. Budaya menulis dan rasa aman psikologis dari bab 1.1 adalah prasyarat bagi kalibrasi yang jujur di bab 1.3, kolaborasi yang mengutamakan dokumen di bab 1.4, dan catatan keputusan yang tahan lama di bab 1.6. Batas tim yang dirancang di bab 1.2 adalah tuas utama Anda untuk menskalakan koordinasi di bab 1.4, yang secara terbuka lebih memilih mengurangi kebutuhan koordinasi daripada menambah kerangka kerja yang lebih berat. Bab 1.5 dan 1.6 adalah pasangan yang disengaja: yang pertama menetapkan filosofi tata kelola, yang kedua mengubahnya menjadi praktik yang berkelanjutan.

Jangkauan bagian ini meluas ke seluruh buku. Topologi tim dari bab 1.2 membentuk rekayasa platform di bab 8.4 dan kepemilikan keandalan di bab 9.1. Catatan keputusan yang diperkenalkan di sini muncul kembali di mana pun pilihan penting dibuat, dari dasar-dasar arsitektur di bab 3.1 hingga membangun-atau-membeli dan pengadaan di bab 10.3, dan jaminan fitness function-nya terhubung ke pipeline pengiriman di bab 8.1. Pembelajaran tanpa menyalahkan dari bab 1.1 menopang manajemen insiden di bab 9.3, dan pengambilan keputusan yang dapat dipertanggungjawabkan dan terdokumentasi yang dibangun di seluruh bagian ini persis yang dibutuhkan oleh pekerjaan risiko, audit, dan jaminan di bab 10.2. Dapatkan fondasinya dengan benar, dan sisa buku ini menjadi jauh lebih mudah diterapkan.