Kekuatan dan Kutukan Manusia

Sekalipun terbatas, namun potensi yang dimiliki manusia sangatlah besar. Tiga ribu tahun yang lalu, mungkin nenek moyang kita tidak pernah berpikir bahwa keturunannya akan berhasil menginjakkan kaki di bulan, membuat mobil listrik, atau menciptakan alat seukuran telapak tangan yang bisa menyimpan isi perpustakaan Alexandria.

Secara fisik, kita mungkin tak sehebat hewan-hewan lain. Kita tidak bisa terbang seperti elang, tidak bisa menyamarkan diri seperti bunglon, dan tak bisa menyelami laut semahir lumba-lumba.

Kekuatan terbesar kita berasal dari kemampuan mengkombinasikan apa yang ada dan menciptakan sesuatu yang semestinya tidak pernah ada. Kita mengkombanasikan suara menjadi kata, kata menjadi kalimat, kalimat menjadi cerita. Lalu kita mulai menciptakan fiksi, menciptakan dewa-dewa, menyepakati aturan sosial, membuat teori dan permodelan berdasarkan pengamatan. Kita juga memotong kayu menjadi balok-balok yang bisa dimanfaatkan untuk membuat senjata dan rumah, memanfaatkan sapi untuk membajak sawah, menciptakan mesin uap untuk menggantikan sapi, dan memantik ledakan teknologi informasi.

Dengan masa hidup dan tenaga yang terbatas, teknologi telah memungkinkan manusia untuk mencapai hal-hal yang semestinya tidak mungkin tercapai. Namun dengan teknologi pula, kita juga telah menciptakan kompleksitas yang sebelumnya tidak pernah terpikirkan.

Tahun 2010. Waktu itu teknologi yang tampaknya umum dipakai adalah PHP + MySQL. Tidak ada yang istimewa. LAMPP stack, filezilla (untuk upload ke FTP), dan CPanel untuk akses hosting. Aplikasi web adalah solusi yang praktis untuk berbagai hal. Client tidak perlu menginstall aplikasi tambahan, melakukan setting jaringan secara khusus, dan sebagainya. Hanya perlu punya web browser, dan bisnis bisa berjalan sebagaimana mestinya. Satu server untuk banyak client, satu solusi untuk jutaan masalah. Waktu itu saya pikir, teknologi informasi tidak akan berkembang terlalu banyak. Kalaupun ada yang berubah, paling-paling hanya antar muka saja. Tentu saja itu pendapat yang sangat naif.

Tahun 2020. Nyaris dua tahun sudah saya berkarir di perusahaan yang baru. Kejayaan web application memang masih tampak. Prinsip client-server pun masih terpakai, sekalipun client nya tak hanya terbatas pada web browser. Namun teknologi di balik itu sudah jauh berbeda. Satu server saja tak cukup untuk membendung ratusan ribu request per detik. Sekalipun ada bagian-bagian yang tampaknya tidak membutuhkan resource terlalu banyak, namun ada pula bagian-bagian yang membutuhkan alokasi resource secara fleksibel. Setiap komponen di belakang layar perlu di manage secara berbeda.

Sepuluh tahun yang lalu, mungkin saya pikir menaikkan/menurunkan resource, membuat routing internal, dan sebagainya, adalah pekerjaan seorang network/infrastructure engineer. Ya, tentu saja tidak salah. Namun mereka tidak melakukan semua itu secara itu secara langsung. Mereka memanfaatkan perangkat otomasi yang secara ajaib bisa melakukan semuanya di saat yang tepat (https://kubernetes.io/).

Para network/infrastructure engineer tidak perlu bangun tengah malam, untuk mengubah konfigurasi di nginx hanya karena ada peningkatan jumlah request secara mendadak. Mereka cukup melakukan konfigurasi awal, membantu developer membuat konfigurasi yang benar, dan bangun mendadak hanya saat ada masalah yang benar-benar besar.

Bahkan untuk membuat konfigurasi awalpun, mereka tidak sepenuhnya bekerja sendiri. Ada perangkat otomasi lain yang bisa membantu mereka menciptakan konfigurasi tersebut. Ya, bahkan file konfigurasi itupun masih bisa dikonfigurasi (https://helm.sh/).

Saya percaya, teknologi, seperti halnya evolusi, bukanlah satu garis lurus yang indah. Antara satu teknologi dan teknologi yang lain, mungkin saling bersaing, mungkin memanfaatkan prinsip yang sama, tapi implementasinya berbeda, atau mungkin dibangun secara tumpang tindih.

Software engineering adalah salah satu pekerjaan paling kotor dan tidak elegan. Tapi di situlah kita hidup dan bernafas. Menempelkan satu hal di atas hal yang lain, melakukan segala cara untuk membuat pekerjaan kita cukup maintainable dan tidak hancur di production.

Membuat Tool Otomasi

https://xkcd.com/1319/

https://xkcd.com/1319/

Beberapa software engineer terlahir secara spesial. Kenyataannya, hampir semua software engineer merasa spesial. Saking spesialnya, barangkali beberapa dari kita cukup yakin bahwa kita termasuk dalam 5% software engineer terbaik sepanjang masa.

Sebagaimana orang-orang spesial pada umumnya, banyak dari kita yang memiliki pemikiran kreatif-inovatif. Kita benci rutinitas. Kitapun kerap mengeluh bahwa beberapa tugas rutin itu semestinya bisa diotomasi. Maka kitapun mulai jatuh dalam lembah procrastination merancang sesuatu yang mulia untuk menghindari rutinitas.

Tooling dan otomasi bukanlah hal baru bagi seorang software engineer. Otak kita seolah memberikan reward khusus saat kita berhasil menghindari tugas-tugas menjemukan. Entah dengan cara mendelegasikannya pada orang lain, atau dengan menurunkan tingkat kesulitannya.

Tooling dan otomasi tak hanya membanjiri otak kita dengan serotonin, tapi juga (jika diterapkan secara tepat), bisa menghemat waktu, mengurangi pemakaian resource, dan mereduksi kesalahan.

Sayangnya, meyakinkan para manager dan engineer lain kerapkali bukanlah pekerjaan yang mudah. Sekalipun semua orang yakin akan keajaiban otomasi, namun menghabiskan terlalu banyak waktu untuk menciptakan otomasi justru menjauhkan kita dari tujuan utama.