Sebagai ketua tim di pendidikan tinggi, saya bertanggung jawab atas enam semester selama pembaruan kurikulum. Kami pernah memiliki proses yang sederhana. Mahasiswa mendaftar untuk satu semester, mengikuti program, dan melanjutkan. Tidak sempurna, tetapi dapat dikelola.
Kemudian kami ingin menambahkan pilihan. Mahasiswa bisa memutuskan sendiri semester mana yang ingin mereka jalani. Kedengarannya seperti satu penyesuaian kecil. Tetapi saat Anda menambahkan pilihan, Anda harus memutuskan siapa yang boleh membuat pilihan mana. Jadi pemeriksaan kredit ditambahkan.
Kemudian klien eksternal menginginkan ukuran kelompok maksimum. Jadi selain kredit, kapasitas juga harus dilacak — dan itu terkait dengan pilihan semester, karena tidak setiap klien dapat membimbing jumlah mahasiswa yang sama. Di atas itu, dosen mata kuliah, materi, dan ruang tidak tersedia dalam jumlah tak terbatas.
Kemudian ternyata mahasiswa masuk tanpa pengetahuan awal yang tepat. Jadi persyaratan masuk untuk prasyarat ditambahkan. Tetapi pengetahuan awal tidak sama dengan poin kredit. Seseorang bisa memiliki cukup kredit tetapi mengambil kursus yang salah.
Dan kemudian datanglah mahasiswa eksternal — seringkali internasional. Pendidikan sebelumnya yang berbeda, struktur kredit yang berbeda, persyaratan bahasa yang berbeda, aturan yang berbeda.
Apa yang dimulai sebagai “kami menambahkan pilihan” bukan lagi penyesuaian proses. Itu adalah jaringan ketergantungan. Dan setiap penambahan menyentuh semua yang sudah ada.
Matematika yang tidak dilakukan siapapun
Di situlah banyak desain proses salah: kita menghitung komponen, tetapi melupakan hubungan di antara mereka.
Kita bertindak seolah-olah proses adalah daftar. Pertama ini, kemudian itu, kemudian pemeriksaan. Tetapi proses adalah jaringan. Dan dalam jaringan, berlaku formula sederhana: n(n-1)/2.
Dengan lima elemen Anda memiliki sepuluh hubungan yang mungkin. Dengan sepuluh elemen, 45. Dengan dua puluh, 190.
Brooks menggambarkan ini dalam The Mythical Man-Month untuk komunikasi dalam tim. Tambahkan satu orang ke tim yang beranggotakan empat orang dan Anda tidak beralih dari empat ke lima jalur komunikasi — Anda beralih dari enam ke sepuluh.
Hal yang sama berlaku untuk langkah-langkah proses, aturan bisnis, dan komponen perangkat lunak. Setiap penambahan terlihat linear. Jumlah hubungan yang mungkin tumbuh secara kuadrat.
Di mana titik baliknya
Dalam proses pendaftaran kami, titik balik datang sekitar persyaratan masuk untuk pengetahuan awal. Sampai saat itu Anda masih bisa menjelaskannya sebagai serangkaian pemeriksaan. Tetapi begitu pengetahuan awal harus diverifikasi terhadap pilihan semester, kapasitas, poin kredit, dan penjadwalan, itu bukan lagi daftar periksa. Itu menjadi jaring.
Dan jaring itu semakin dipersulit oleh waktu. Nilai yang dibutuhkan untuk pemeriksaan prasyarat hanya tersedia di akhir semester sebelumnya. Mahasiswa masih bisa mengikuti ujian susulan. Beberapa hasil baru masuk saat semester baru hampir dimulai.
Solusi pragmatisnya: penerimaan bersyarat. Mahasiswa diizinkan memulai sambil menunggu hasil ujian susulan mereka. Tetapi jika mereka gagal tiga minggu kemudian, mereka sudah berada dalam kelompok proyek — disusun berdasarkan kapasitas, pengetahuan awal, dan persyaratan klien. Tepat pemeriksaan yang dirancang oleh seluruh sistem untuk sementara dirusak.
Dan kemudian semua orang menyelesaikannya dengan cara mereka sendiri. Satu koordinator hanya memulai proyek setelah empat minggu. Yang lain membuat kelompok cukup kuat sehingga mahasiswa bisa keluar. Yang ketiga langsung mulai dan berharap yang terbaik.
Tiga solusi untuk masalah yang sama, dalam program yang sama, dalam tahun yang sama. Bukan karena orang tidak kompeten — tetapi karena sistem telah menjadi terlalu kompleks untuk diselesaikan secara konsisten.
Dan setiap solusi lokal sendiri menjadi bagian dari sistem. Perjanjian tambahan, pengecualian tambahan, cara kerja tambahan. Sebelum Anda menyadarinya, Anda memiliki enam varian dari proses yang sama, masing-masing dengan aturannya sendiri, spreadsheet-nya sendiri, dan pengetahuan tacit-nya sendiri.
Coba standarisasikan itu. “Ya tapi kami bekerja secara berbeda.” “Klien kami mensyaratkan ini.” “Pendekatan ini sebenarnya bekerja sangat baik untuk kami.” Dan biasanya semuanya setidaknya sebagian benar.
Di situlah Anda berdiri sebagai ketua tim. Enam semester di bawah tanggung jawab Anda. Tim administrasi yang berjalan dengan spreadsheet. Penjadwal yang tidak lagi dapat memproses pengecualian. Dan ironinya: ini dimulai sebagai ide yang bagus. Lebih banyak pilihan untuk mahasiswa.
Ini juga arsitektur perangkat lunak
Apa yang terjadi di sini tidak unik untuk pendidikan.
Anda “dengan cepat” menambahkan status tambahan ke alur kerja. Tetapi status itu mempengaruhi notifikasi, dasbor, otorisasi, penanganan kesalahan, dan prosedur dukungan.
Anda “dengan cepat” menambahkan pengecualian untuk satu klien. Tetapi pengecualian itu harus diingat oleh pengembang, administrator, dukungan, dokumentasi, dan migrasi masa depan.
Dalam perangkat lunak kita menyebut ini coupling.
Dalam proses kita biasanya menyebutnya kerumitan.
Tetapi itu adalah pola yang sama. Sebuah sistem tidak menjadi tidak dapat dikelola karena satu komponen rumit. Ini menjadi tidak dapat dikelola karena terlalu banyak komponen perlu mengetahui terlalu banyak tentang satu sama lain.
Apa yang bisa Anda lakukan
Solusinya bukan untuk tidak pernah menambahkan apa pun lagi. Tetapi membantu untuk jujur tentang apa yang sebenarnya menjadi biaya suatu penambahan.
Hitung hubungan, bukan langkah. Jangan bertanya “bisakah kita menambahkan ini?” — jawabannya hampir selalu ya. Tanyakan “dengan berapa banyak komponen yang sudah ada ini perlu berinteraksi?” Angka itu adalah ukuran dampak yang sebenarnya.
Cari decoupling. Tidak semuanya perlu bekerja dengan segalanya. Kadang-kadang Anda bisa melakukan pemeriksaan lebih awal, membuat keputusan secara definitif kemudian, atau membagi proses menjadi bagian-bagian yang lebih kecil dengan batas yang jelas.
Berani menghapus sesuatu. Banyak kompleksitas proses tidak muncul dari ide buruk, tetapi dari ide bagus yang tidak pernah dibersihkan. Aturan yang pernah logis. Solusi sementara yang pernah dimaksudkan sementara. Solusi sementara cenderung menjadi permanen begitu mereka mendarat dalam sebuah proses.
Satu hal hampir tidak pernah hanya satu hal
Setiap kali terasa seperti satu penambahan. Satu langkah tambahan, satu aturan tambahan, satu pemeriksaan tambahan. Tetapi pada kenyataannya Anda menambahkan hubungan dengan semua yang sudah ada.
Dan mereka yang tidak melihat itu secara perlahan membangun sistem yang suatu hari tidak bisa lagi dikelola. Bukan karena satu kesalahan besar dibuat — tetapi karena terlalu banyak hal yang bermaksud baik ditambahkan tanpa merancang hubungan di sampingnya.