Menjadi Great Programmer (1): Pahami Satu Layer Abstraksi Di Bawah

Bayu Hendra Winata
Javan Cipta Solusi
Published in
3 min readJun 2, 2023

--

Kita bisa, tapi terlalu mahal, membuat web dengan binary code

Jon adalah seorang programmer. Dia terbiasa memakai Laravel untuk membuat banyak aplikasi web. Sejauh ini hasil pekerjaannya bagus. Dokumentasi dari Laravel, ditambah dengan hasil belajar di online course, dan tidak lupa sedikit bantuan StackOverflow, cukup untuk menghasilkan kode yang fungsional dan lolos QA.

Hingga di suatu sprint, ada satu user story “Sebagai User, saya bisa login ke aplikasi menggunakan akun LDAP”. Baru kali ini Jon mendengar tentang “LDAP”. Tapi tidak menjadi masalah. Konon katanya Google (dan ChatGPT) selalu punya jawaban dari setiap persoalan.

Dan benar saja, hasil eksplorasi kemudian menuntun Jon ke sebuah library https://ldaprecord.com/docs/laravel/v2/.

Sat set sat set…

Dokumentasi dibaca, contoh kode diikuti, tapi belum sesuai harapan. Proses login LDAP masih gagal.

Satu jam, dua jam, tiga jam.

Jon belum tahu dimana salahnya. Fungsi yang harusnya mengembalikan object User LDAP malah selalu menghasilkan null . Jon tidak tahu kenapanya.

Abstraksi itu keren… sampai…

Abstraksi adalah sebuah konsep untuk menyederhanakan sesuatu, menyembunyikan detil yang kurang penting, agar pekerjaan lebih efektif.

Contoh, Andi dan Budi datang ke sebuah restoran cepat saji:

  1. Andi berkata, “pesan ayam bagian paha satu, pake nasi, minumnya es teh”.
  2. Budi berkata, “pesan paket panas satu”.

Pada contoh di atas, apa yang dilakukan Budi lebih efektif. Dengan jumlah kata yang lebih sedikit (less effort), bisa mendapatkan hasil yang sama dengan Andi.

Ini adalah salah satu contoh abstraksi dalam kehidupan sehari-hari. Kita “membungkus” dan “memberi nama” beberapa hal yang berkaitan dan common (sering dibutuhkan), agar lebih mudah dirujuk.

… sampai ketika Istri Budi ngidam

Hingga suatu hari, istri Budi yang sedang ngidam meminta untuk dibelikan makanan di restoran yang sama dengan spesifikasi:

  • Ayam goreng bagian paha
  • Nasi setengah porsi dengan topping scrammble egg

Budi datang ke restoran yang sama, melihat daftar menu yang tersedia:

Lalu memutuskan pulang, karena apa yang diminta istrinya tidak tersedia.

Silakan dibayangkan reaksi istrinya ketika Budi sampai di rumah… 😅

Abstraksi itu keren, tapi ada limitasinya

Umumnya orang hanya tahu apa yang disediakan restoran dari menu yang dimunculkan display board. Ketika ingin memesan custom yang tidak ada di list, mereka mengurungkan niatnya karena berasumsi menu tersebut tidak tersedia. Hanya sebagian kecil yang paham bahwa ada banyak variasi menu lain yang bisa kita coba, meskipun tidak dimunculkan di daftar menu.

Library ldap yang disebutkan di atas adalah abstraksi. Jika ada isu, maka paham konsep LDAP dan fungsi-fungsi PHP untuk berinteraksi dengannya akan menjadi nilai tambah.

Eloquent adalah abstraksi. Jika ada isu, paham bagaimana Eloquent menghasilkan query akan menjadi nilai tambah. Paham bagaimana menulis query SQL akan menjadi nilai tambah yang lain.

Laravel adalah abstraksi bagaimana PHP meng-handle request-response. Maka paham PHP dan paham cara kerja website adalah nilai tambah seorang Laravel developer.

PHP adalah abstraksi, high level language dari bahasa C. Jika ingin menjadi programmer PHP hebat (misal menjadi kontributor), maka paham bahasa C merupakan nilai tambah.

Unlock limitasinya, dengan memahami satu layer di bawahnya

Laravel itu abstraksi yang keren. Jika ada fungsi yang belum tersedia, cek satu layer di bawahnya, apakah kita bisa melakukannya dengan plain PHP?

SpringBoot itu abstraksi yang keren. Jika ada fitur yang belum tersedia, cek satu layer di bawahnya, apakah Java bisa melakukannya?

Alurkerja-UI itu abstraksi yang keren. Jika ada komponen yang belum tersedia, cek satu layer di bawahnya, apakah kita bisa membuatnya dengan plain React?

Metronic UI itu abstraksi yang keren. Jika butuh template kustom, cek satu layer di bawahnya, apakah bisa kita bisa membuatknya dengan plain HTML-CSS-Javascript?

Abstraksi, biasanya, bisa menyelesaikan 80% kebutuhan. Sisa 20% nya, kita harus pahami satu layer di bawahnya. Jika memungkinkan, lakukan secara manual (native). Jika tidak memungkinkan, jangan ragu untuk pindah library/framework/bahasa lain.

--

--