- Dalam budaya pengembangan perangkat lunak modern, nama proyek dan library semakin dipenuhi kata-kata arbitrer yang tidak terkait dengan fungsinya
- Dulu, nama seperti grep, awk, sed, FORTRAN, COBOL secara langsung menjelaskan fungsi atau tujuannya, tetapi belakangan ini nama tanpa makna bermunculan di mana-mana
- Tren ini makin cepat menyebar seiring meluasnya GitHub dan budaya startup, hingga hubungan antara nama dan fungsi benar-benar terputus
- Biaya pemahaman dan beban kognitif meningkat, sehingga pengembang harus berulang kali melakukan penelusuran yang tidak perlu hanya untuk memahami peran tiap alat
- Tulisan ini menyerukan pemulihan aturan penamaan yang jelas dan berpusat pada fungsi, serta menekankan bahwa untuk alat teknis, kejernihan dan profesionalisme harus didahulukan daripada branding
Perubahan dalam praktik penamaan perangkat lunak
- Richard Stallman dalam ceramah EmacsConf 2022 menyebut pentingnya “nama yang mudah diingat” dan menekankan bahwa nama paket harus menunjukkan apa yang dikerjakannya
- Ekosistem Emacs secara tradisional mempertahankan praktik penamaan berbasis fungsi seperti dired(editor direktori) dan eshell(shell Emacs)
- Namun, pengembang modern cenderung memberi nama alat dengan kata benda acak, makhluk mitologi, atau karakter fiksi
- Ini adalah perilaku yang di bidang teknis lain akan dianggap sebagai kurangnya profesionalisme
Masalah nama yang tidak bermakna
- Sebagai contoh, nama alat seperti “Viper”, “Cobra”, “Melody”, “Casbin”, dan “Asynq” sama sekali tidak memberi petunjuk tentang fungsinya
- Penulis menyebut pengalaman harus mencari di internet terlebih dahulu hanya untuk memahami penjelasan infrastruktur dari seorang teman
- Di bidang rekayasa lain, nama biasanya menjelaskan struktur atau fungsi
- Contoh: Golden Gate Bridge, Hoover Dam, I-beam, butterfly valve dengan jelas menunjukkan bentuk atau perannya
- Di bidang kimia, seperti dalam tata nama IUPAC, nama ditetapkan agar merujuk tepat pada satu objek
- Contoh: 2,2,4-trimethylpentane berarti satu molekul tertentu, dan tidak diberi nama sembarang seperti “Steve”
Aturan penamaan masa lalu dan keterputusan saat ini
- Pada 1980-an, singkatan berbasis fungsi seperti grep, awk, sed, cat, diff adalah arus utama
- Nama bahasa pemrograman seperti FORTRAN, COBOL, BASIC, SQL, Lisp juga mencerminkan tujuannya
- Sejak 2010-an, penyebaran nama tanpa makna mulai meluas
- Sebagian nama seperti MongoDB masih punya kaitan fungsi atau etimologi, tetapi setelah itu nama tak bermakna meningkat tajam di tengah GitHub dan budaya startup
- Salah satu penyebab yang ditunjuk adalah kecenderungan meniru kisah sukses berbasis merek seperti Google
Biaya kognitif dan turunnya efisiensi pengembang
- Nama seperti libsodium sulit ditebak fungsinya, sehingga pengembang harus berulang kali melakukan peralihan konteks
- Waktu terbuang sia-sia hanya untuk menafsirkan “mengapa sodium?”
- Semakin banyak dependensi sebuah proyek, semakin menumpuk pula pajak kognitif (cognitive tax) ini
- Hal ini pada akhirnya menurunkan produktivitas pengembang
- Penulis menyoroti bahwa saat memproses kalimat seperti “Viper, Cobra, Melody…”, sumber daya mental terbuang untuk menafsirkan token tanpa makna
Sanggahan umum dan bantahannya
- “Nama yang mudah diingat lebih menguntungkan untuk pemasaran” → alat untuk pengembang bukan produk konsumen, dan kejelasan fungsi lebih penting
- “Nama deskriptif itu membosankan” → kebosanan bisa diterima sebagai harga dari kejelasan, sama seperti alat bedah yang mungkin membosankan tetapi presisi
- “Ini hanya untuk bersenang-senang” → semua pengguna harus menanggung biaya dari ‘kesenangan’ itu, dan ujungnya membuang waktu di seluruh industri
- “Semua nama bagus sudah dipakai” → namespace, prefiks, dan kata majemuk bisa menjadi solusi, dan setidaknya nama harus tetap berkaitan dengan fungsi
Arah ke depan
- Masalah ini dijelaskan bukan sebagai sesuatu yang jahat, melainkan hasil dari perubahan budaya
- Saat pemrograman bergeser dari berpusat pada perusahaan ke berpusat pada komunitas, norma sosial melemah
- Solusinya adalah pemulihan budaya aturan penamaan
- Bukan melalui regulasi, melainkan lewat pemulihan profesionalisme, pendidikan, dan tekanan sosial
- Nama library harus mencerminkan fungsinya, dan bila perlu kata majemuk serta ungkapan yang panjang pun boleh digunakan
- Contoh: “http-request-validator” jauh lebih jelas daripada “zephyr”
- Pisahkan maskot dari nama
- Contoh: PostgreSQL menggunakan maskot gajah Slonik, tetapi nama produknya sendiri tetap mempertahankan makna fungsional
- Jika itu bukan produk konsumen yang benar-benar membutuhkan branding, maka kejernihan dan profesionalisme harus diutamakan
- Sebelum menempelkan “nama karakter anime favorit”, tanyakan pada diri sendiri: “apakah insinyur sipil akan memberi nama seperti ini pada sistem jembatan?”
- Kesimpulannya, maraknya nama tanpa makna harus dihentikan dan kita perlu kembali ke bahasa profesional yang jelas
- Kejelasan bukanlah kebosanan, melainkan penghormatan terhadap waktu dan sumber daya kognitif pengguna
7 komentar
Kalau tidak menuliskan contoh, daya persuasinya mungkin akan naik 10%..
Saya agak setuju, tapi sepertinya mereka tidak ingin stres karena harus memberi nama.
Nama yang lumayan bagus sudah dipakai orang lain semuanya.
Komentar Hacker News
Versi GNU dari Yacc disebut Bison. Pine adalah singkatan dari “Pine Is Not Elm”, dan UNIX berasal dari UNICS, permainan kata dari MULTICS. Saya tidak tahu dd berarti apa, nano adalah kloning dari pico, dan Postfix adalah gabungan dari ‘post’ dan ‘bug fix’. C++ adalah versi inkremental dari C, C adalah penerus B, dan B adalah penerus BCPL. Sebenarnya para pengembang bukan kehilangan ‘filsafat penamaan’; sejak awal mereka memang tidak pernah punya itu. Sebaliknya, saya rasa proyek modern seperti Clang, LLDB, jq, fzf, dan loc adalah contoh nama yang bagus. mise-en-place adalah metafora yang sempurna untuk fungsi mise
key=value, yang terasa tidak seperti UNIXPerintah UNIX seperti grep, awk, sed, cat, diff punya nama yang fungsional atau sistematis, tetapi sebenarnya hanya diff yang kira-kira bisa ditebak secara intuitif. Menyebut awk sebagai nama yang bagus itu berlebihan
-libertySaya menolak klaim bahwa “penamaan seperti ini adalah bunuh diri karier di bidang teknis”. Jika melihat daftar nama kode Departemen Pertahanan AS, justru banyak nama yang sengaja dibuat tidak transparan. Hoover Dam pun awalnya disebut Boulder Canyon Project, dan namanya tidak menjelaskan fungsi. Apakah Reitzlib nama yang lebih baik daripada Requests? Pada akhirnya, nama bergantung pada konteks
Nama seperti awk sebenarnya bukan nama yang bagus. Itu hanya inisial penulisnya, dan sama sekali tidak menyampaikan fungsi. Sekarang ada tab autocompletion, jadi tidak perlu lagi memendekkan nama hanya demi singkat
Saya setuju dengan tulisan sanggahan ini. Identitas eksternal berubah maknanya seiring waktu, jadi nama yang terlalu deskriptif sejak awal tidak akan bertahan lama. Selain itu, nama seperti “X Manager” atau “X Service” terlalu banyak sehingga sulit dibedakan
Saya pernah bekerja sebagai insinyur kalibrasi mesin di OEM otomotif, dan semua variabel serta fungsi ditulis dalam bentuk singkatan. Bulan pertama terasa sangat melelahkan sampai rasanya kepala mau pecah. Seorang rekan akhirnya berkata, “Ini seperti belajar bahasa baru,” dan memang begitu. Artinya, banyaknya nama teknis tidak otomatis mengurangi beban kognitif
Saya sulit setuju dengan klaim bahwa “nama fungsional lebih baik daripada pemasaran”. Nama berbasis fungsi pada akhirnya hanya menciptakan lautan akronim tanpa akhir. Situasi seperti tertukar antara ABDC dan ADBC pun muncul
Menarik juga melihat tulisan seperti ini muncul di HN. Mengambil nama seperti awk sebagai contoh lalu mengklaim “kita telah kehilangan hakikat penamaan” itu kontradiktif. Pada akhirnya ini tampak seperti ketidaksukaan pribadi terhadap nama yang lucu. Sebagai catatan, komentar ini ditulis di Firefox — dari namanya saja tidak mungkin tahu bahwa itu peramban web
Menanggapi klaim bahwa “nama deskriptif itu membosankan”, alat-alat di ruang operasi pun sebenarnya banyak yang memakai nama orang. Adson, Allis, Babcock, Kocher, dan lainnya sama sekali tidak menjelaskan fungsi. Pada akhirnya, begitu sudah terbiasa, nama itu menjadi bermakna. awk kurang bagus, tetapi diff adalah contoh yang lumayan
Menanggapi klaim bahwa “bidang kita seperti kebun binatang berisi kata benda acak”, saya suka nama yang menyenangkan. Proyek saya, Wimsey, adalah pustaka pengujian data, tetapi dari namanya saja orang tidak akan tahu. Tetap saja, saya menyukai nama seperti Python, Cron, dan Zellij yang mengandung rasa sayang dan humor. Teknologi pada akhirnya dibuat oleh manusia, dan harus ada unsur kegembiraan. Dibanding “brown-dog-2”, “cookie” terasa lebih manusiawi
Bahkan
awkpun rasanya bukan nama yang berbasis fungsi....Ada yang tahu
emacsartinya apa? Memang ada kepanjangannya, tapi nama akronim itu juga tidak bisa langsung dipahami dari sekali lihat, padahal itu nama... Dan untuk memberi nama hanya berdasarkan fungsi, sekarang proyeknya sudah terlalu banyak.Kalau lihat mereka menyalahkan GitHub, ini cuma nyinyiran gaya RMS aja wkwk