1 poin oleh GN⁺ 2024-09-28 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2024-09-28
Komentar Hacker News
  • Orang belajar dengan cara yang berbeda-beda

    • Lebih suka memahami konsep inti terlebih dahulu lalu melihat contoh
    • Banyak tutorial terlalu menuntun langkah demi langkah seperti merakit Lego
    • Ingin tahu bagaimana dan mengapa suatu keputusan diambil
    • Saat mempelajari library atau framework baru, membaca teks pengantar terlebih dahulu dan melewati contoh kode "Getting started"
    • Di bagian lanjutan ada lebih banyak pembahasan konsep, jadi itu dieksplorasi lebih dulu
  • Kemampuan menulis dan empati itu penting

    • Menulis kode dan membuat aplikasi adalah hal yang berbeda
    • Pengembang yang lebih berorientasi ke luar lebih memperhatikan arsitektur dan dokumentasi
    • Kesederhanaan itu penting
    • Menulis aplikasi mirip dengan menulis esai
    • Framework menghambat kemampuan pengembang dalam mengorganisasi
  • Tidak semua orang belajar dari contoh

    • Ada juga yang belajar dari umum ke spesifik
    • Orang seperti ini terpinggirkan dalam pendidikan K12
  • Kode ditulis untuk manusia

    • Yang penting adalah memahami masalah secara menyeluruh, bekerja sama dengan para pemangku kepentingan, dan merancang algoritme yang efisien
    • Menulis kode itu tidak sulit
  • Kutipan dari Code Complete

    • "Bagian kecil dari pemrograman adalah menulis program agar bisa dibaca komputer, dan bagian besarnya adalah menulis agar bisa dibaca manusia lain"
  • Menulis kode adalah untuk manusia

    • Komputer cukup dengan instruksi mesin
    • Kode adalah cara memformalkan pemikiran manusia
  • Pendapat tentang perkembangan IDE

    • Intellisense dasar memang membaik, tetapi konsep coding tidak banyak berubah
    • Akses ke alat dan library baru menjadi lebih mudah
    • Ingin menyerahkan pekerjaan coding kepada komputer dan fokus pada kreasi
    • Dibutuhkan alat yang dapat menangani detail-detail kecil bahasa secara otomatis
    • Ingin menampilkan beberapa metode di layar secara bersamaan
    • Ingin penanganan transformasi data dilakukan secara otomatis
  • Promosi posting blog

    • Menulis posting blog berjudul "Move Fast & Document Things"
    • Membagikan budaya menulis kode
  • Pendapat tentang cara belajar pemrograman

    • Belajar dengan menulis program-program kecil
    • Karena kurang dasar pengetahuan, tidak bisa melamar pekerjaan pengembangan perangkat lunak yang lebih baik
    • Penting untuk selalu mempelajari dasar-dasarnya
  • Pentingnya contoh dan konsep inti

    • Baik contoh maupun konsep inti sama-sama penting
    • Diperlukan konsep inti yang terdefinisi dengan baik dan terdokumentasi
    • Panduan "Getting Started" harus menyertakan contoh