Categories: Cerita

Bertanya Pada Akar Masalah

Seringkali baik itu di forum, medos, ataupun japri banyak yang bertanya mengenai masalah pada program. Pertanyaan yang diharapkan adalah pertanyaan yang fokus ke akar masalahnya, si penanya bisa menanyakan hal tersebut setelah mengutak ngatik sampe pusing, mendebug, searching, dan sebagainya. Sehingga penjawab tidak perlu menelusuri terlalu dalam akar masalah nya. Namun kadang kadang yang terjadi seperti ini

  • pertanyaan : Ini kok datanya nggak muncul?
    • bisa database/model layer nya
    • bisa di controller nya
    • bisa di view layer nya
    • bisa di kelas/fungsi lain (baik itu m/v/c/….) yang dijalankan diluar fungsi ini. (side effect)
    • dan lain lain

Sedangkan yang diharapkan :

bagaimana cara convert json jadi array php? (kasus : ingin melakukan loop dari data array json)

  • Ini kok datanya tidak muncul?
    • model /repository nya saya coba generate ke query sql, query sql nya di jalanin manual, data tampil
    • di controller saya coba dd/echo/return data dari model/repository, tapi setelah di json_encode saya liat datanya bukan jadi array (nggak ada tulisan array nya)
    • pertanyaan : bagaimana cara convert json jadi array php? (fokus ke akar masalah)
    • atau jika penanya nggak sabar, pasti akan langsung googling dan menemukan jawabannya ( https://stackoverflow.com/questions/5164404/json-decode-to-array ) 😀

Atau yang lebih parah lagi biasanya untuk yang baru masuk di pemrograman, menanyakan hal yang sebenernya bisa dijawab jika mau menjalankan kode nya di kepala (simulasi sendiri corat coret kertas atau pake debugger)

Solusi

Untuk solusinya sendiri menurut saya tergantung kasusnya, pertama kasusnya sedang belajar pemrograman dasar/dan sebagainya. Kedua kasusnya membuat aplikasi/proyek/dsb seperti web, mobile, desktop, console, dsb yang “production ready” alias untuk belajar beneran bukan sekedar untuk tugas/nilai/

Kalau yang jam terbangnya sudah tinggi mungkin bisa tau langsung dimana letak kesalahannya. Berikut menurut saya solusi untuk yang baru masuk ke programan

. Kalau tidak, bisa juga menggunakan “pitfalls”(“batu sandungan” / kesalahan yang umum dilakukan) yang bisa di cari di internet (tergantung bahasa/program/kasusnya nya).

Misal kalo di competitive proggmming masalah runtime error umumnya 2 : akses memory yang salah (misal akses array diluar batas) atau pembagian dengan 0. Misal lagi kalau di java biasanya yang baru masuk kena error null pointer, suruh dia belajar pointer dulu 😀

Apa itu debugging?

Debugging is the process of finding and resolving defects or problems within a computer program that prevent correct operation of computer software or a system.

Debugging tactics can involve interactive debugging, control flow analysis, unit testingintegration testinglog file analysis, monitoring at the application or system level, memory dumps, and profiling.

Debugging adalah sebuah metode yang dilakukan oleh para pemrogram dan pengembang perangkat lunak untuk menganalisis alur kerja program, mencari dan mengurangi bug, atau kerusakan di dalam sebuah program komputer atau perangkat keras sehingga dapat bekerja sesuai dengan harapan.

https://en.wikipedia.org/wiki/Debugging

Gampangnya, kita jalanin baris per baris kode kita seusai runtutan dari awal hingga selesai. Tapi nggak gitu juga, bisa dibikin :

  • Bukan baris per baris, tapi kita bisa tandain dimana program bakal jalan dan di “pause” (breakpoint)
  • “pause”

Kesimpulan

Pertama, bertanya langsung ke akar masalahnya dengan cara mencoba mencari nya (misal dengan debugign). Kedua Hindari debugging. karena debugging bikin pusing dan memakan waktu yang lama 😀

Herbert Abdillah

Test

Recent Posts

Disk 1 tb sisa 100 gb

Berikut ini detail breakdown nya Docker

7 months ago

Langchain JsonOutputParser Invalid json output Error

Sometimes json output from llm like this : {"key": "value"}``` that langchain JsonOutputParser regex cant…

8 months ago

Tontonan Bagus

https://www.youtube.com/watch?v=ZAqIoDhornk (more…)

8 months ago

Ada Apa Didalam Sistem Operasi (Linux). Apa yang membedakan distribusi Linux seperti Ubuntu, Redhat, Alpine?

#include <stdio.h> int main() { FILE *f_ptr; char f_content[256]; char output[512]; f_ptr = fopen("/tmp/1337", "r");…

11 months ago

Convert OpenSSL 1 in Ruby Gem to OpenSSL 3

Version 3 have different interface Example: https://github.com/herbertabdillah/fabric-gateway-ruby/commit/c7377aaf2e62de1e2ac309965a09b5c7c72a2c7e (more…)

2 years ago

Catatan Belajar Ruby on Rails dari aliran Java dan Php

Telah di edit. Sumber Asli : https://twitter.com/nateberkopec/status/1250603032523370496/photo/1 Ruby on Rails merupakan framework web MVC menggunakan…

3 years ago