Menulis kode untuk komputer itu sulit, tetapi menulis kode untuk manusia lebih sulit
- Menulis kode untuk komputer saja sudah sulit. Karena kita harus memecah tujuan bisnis yang besar menjadi instruksi logis yang kecil.
- Namun, menulis kode untuk manusia lebih sulit. Ini adalah pekerjaan yang menggabungkan ilmu komputer dan psikologi.
- Seperti kata Richard Feynman, bayangkan betapa sulitnya fisika jika elektron punya emosi. Ini adalah analogi yang tepat untuk menjelaskan pemrograman bagi manusia.
Awal penggunaan itu sendiri adalah produk
- Mendengarkan umpan balik pengguna itu penting, tetapi sebagian besar umpan balik datang dari power user yang sering memakai produk.
- Ada bias survivorship. Kita hampir tidak pernah mendengar umpan balik dari pengguna yang bahkan belum memulai.
- Produk konsumen telah lama mengoptimalkan proses onboarding. Alat pengembang juga harus begitu.
- Proses onboarding harus dianggap sebagai bagian dari produk, dan pengaturan harus diminimalkan agar pengguna bisa memakai produk dalam hitungan menit.
Manusia belajar dari contoh, bukan dari 'konsep inti'
- Manusia sangat unggul dalam pattern matching. Sebaliknya, komputer mengikuti logika yang ketat.
- Banyak dokumentasi alat pengembang ditulis seperti program komputer. Ini tidak cocok untuk manusia.
- Belajar melalui contoh lebih efektif. Contoh membantu pengguna memahami alat tersebut.
Terjebak dalam perangkap keberhasilan
- Mode dasar dalam pemrograman adalah memperbaiki error. Pengguna menghabiskan sebagian besar waktunya untuk memperbaiki error.
- Penting untuk mengarahkan error menuju keberhasilan.
- Error harus dijadikan peluang untuk membimbing pengguna ke jalur yang benar. Sertakan snippet kode dalam penanganan exception, dan berikan bantuan melalui pesan peringatan.
Menghindari kelebihan beban konseptual
- Keharusan memahami konsep baru menimbulkan friksi.
- 2–3 konsep masih tidak masalah, tetapi mempelajari 8 konsep baru terasa memberatkan.
- Framework yang ideal adalah yang memberikan fitur kuat dengan sedikit konsep. Misalnya, React memberikan kemampuan yang kuat dengan beberapa konsep sederhana.
Prinsip bebek konseptual
- Saat memperkenalkan konsep baru, penting untuk memakai istilah yang familier bagi pengguna.
- Misalnya, lebih baik menyebut evaluasi nilai baru sebagai 'fungsi'. Ini memungkinkan pengguna memanfaatkan model mental yang sudah mereka miliki.
Programmability
- Pengguna akan melakukan pekerjaan kreatif di dalam codebase.
- Hampir semua hal dalam framework harus bisa diprogram.
- Buat agar bisa dipanggil langsung dari kode alih-alih lewat CLI, dan ubah konfigurasi menjadi SDK atau API.
Hati-hati dengan magic, default, dan syntactic sugar
- Default dan fitur seperti magic harus diperkenalkan dengan hati-hati.
- Jika default tidak berlaku setidaknya untuk 97% kasus, dan magic tidak berlaku setidaknya untuk 99% kasus, sebaiknya jangan diperkenalkan.
- Coding bukan golf. Jangan menjadikan penulisan kode seminimal mungkin sebagai tujuan; utamakan keterbacaan.
Menulis kode untuk manusia itu sulit
- Sebagian besar hal harus immutable.
- 'Scaffolding' (pembuatan kode otomatis) sebaiknya dihindari.
- Feedback loop harus dibuat sangat cepat.
- Siapkan prosedur pembuangan agar pengguna bisa menanganinya dengan mudah.
- Gunakan pengujian otomatis untuk snippet kode di dokumentasi dan contoh.
Ringkasan GN⁺
- Artikel ini membahas sulitnya menulis kode untuk manusia dan cara mengatasinya.
- Membuat alat pengembang yang ramah pengguna itu penting, dan itu dimulai dari proses onboarding.
- Belajar lewat contoh itu efektif, dan kuncinya adalah mengarahkan error menuju keberhasilan.
- Saat memperkenalkan konsep baru, gunakan istilah yang familier bagi pengguna dan pertimbangkan programmability.
- Fitur seperti default dan magic harus diperkenalkan dengan hati-hati, dan keterbacaan harus lebih diutamakan.
1 komentar
Komentar Hacker News
Orang belajar dengan cara yang berbeda-beda
Kemampuan menulis dan empati itu penting
Tidak semua orang belajar dari contoh
Kode ditulis untuk manusia
Kutipan dari Code Complete
Menulis kode adalah untuk manusia
Pendapat tentang perkembangan IDE
Promosi posting blog
Pendapat tentang cara belajar pemrograman
Pentingnya contoh dan konsep inti