Otak yang macet dan program yang error adalah makanan sehari-hari ketika baru belajar programming. Tiga konsep di bawah ini mungkin bisa membantumu mengatasi permasalahan ini.
Belajar tidak harus selalu fokus
Mungkin kamu familiar dengan mode fokus ketika belajar, dimana di mode ini kamu memaksimalkan perhatianmu pada satu hal saja dan meminimalisir distraksi.
Banyak anggapan kalau mode fokus ini adalah satu-satunya mode untuk belajar. Padahal seringkali, jika terlalu fokus, kamu malah bisa stuck ketika menghadapi suatu permasalahan.
Karena di mode ini otakmu berusaha berpikir cepat dengan mengingat-ingat hal yang pernah kamu lakukan sebelumnya dalam memecahkan masalah.
Hal ini bagus jika kamu sudah familiar dengan permasalahan yang ada, tapi bagaimana jika kamu dihadapkan dengan hal yang benar-benar baru?
Di sini kamu perlu beralih ke mode berpikir lain, yaitu mode tersebar (atau diffuse mode), dimana kamu membiarkan pikiranmu tersebar ke berbagai arah, menghubungkan ide satu dengan ide lainnya.
Mode fokus dan tersebar (gambar dari instructables.com)
Jika otak diibaratkan seperti mesin pinball, di mode fokus jarak antara bumper yang ada rapat-rapat sehingga pikiranmu terpusat di satu area saja.
Sementara di mode tersebar jarak antara bumper lebih renggang sehingga pikiranmu bisa lebih leluasa untuk loncat dan menghubungkan berbagai ide.
Mode tersebar membantumu melihat gambaran besar dari permasalahan yang kamu hadapi dan juga menghubungkan permasalahan baru dengan konsep-konsep yang telah kamu pelajari sebelumnya.
Cara terbaik untuk pindah ke mode tersebar ini adalah dengan melakukan hal-hal yang tidak menguras otak.
Contohnya seperti berjalan, menyetir, atau cukup dengan pindah ke permasalahan baru ketika otakmu sudah macet menghadapi permasalahan sebelumnya.
Pernah gak sih kamu mendapatkan inspirasi ketika sedang mandi? Nah, ini salah satu contoh ketika otakmu rileks dan berpikir menggunakan mode tersebar.
Jangan belajar secara pasif
Mungkin kamu pernah menonton video atau mengikuti lecture yang membuatmu merasa paham akan suatu materi, tapi ketika kamu coba terapkan lagi sendiri ternyata tidak banyak yang kamu ingat.
Atau kamu telah selesai mengerjakan challenges Codecademy, tapi setelahnya pelajaran yang kamu dapat terasa menguap begitu saja ketika harus diaplikasikan kembali.
Di contoh-contoh di atas ini kamu belajar secara pasif, dimana kamu hanya menyimak atau mengikuti materi yang disodorkan saja.
Ketika kamu mengerjakan Codecademy pun ada panduan yang tinggal kamu ikuti, biarpun harus kamu ketik sendiri juga.
Demonstrasi atau panduan yang kamu terima dan ikuti ini memberikan ilusi kalau kamu sudah paham, walaupun kenyataannya materi-materi yang telah kamu pelajari ini belum tentu sudah nyantol di otakmu.
Yang perlu kamu lakukan agar materi-materi yang kamu pelajari ini awet adalah dengan belajar secara aktif, yang terjadi ketika kamu menghadapi tantangan tanpa dipandu proses pemecahan permasalahannya.
Bukan hanya otot, otakmu juga perlu olahraga (gambar dari the-scientist.com)
Salah satu cara belajar aktif yang cukup efektif adalah active recall, dimana kamu memaksa otakmu untuk berpikir dan memanggil kembali materi-materi yang telah kamu pelajari sebelumnya.
Contoh cara belajar programming dengan metode active recall bisa kamu lihat di sini. Cek tautan ini juga kalau kamu mau belajar mengenai metode ini secara lebih mendalam.
Kamu juga belajar secara aktif ketika kamu berinisiatif mencaritahu hal-hal yang tidak kamu pahami seiring dengan pengerjaan soal.
Kamu harus terbiasa menyusun algoritma atau langkah-langkah pengerjaan sendiri, dan proses penyusunan algoritma ini lah yang akan lebih awet bertahan di otakmu.
Jika kamu sudah membuat langkah-langkah pemecahan masalah berdasarkan logikamu sendiri (bukan mengikuti logika orang lain), dan kodemu pun sudah diketik sendiri untuk menciptakan muscle memory, maka percaya deh, kalau materi-materi yang kamu pelajari akan lebih nyantol di otak.
Bertanya (bisa ke orang lain maupun ke benda mati)
Ketika kamu menghadapi suatu permasalahan di programmu, salah satu hal yang akan kamu lakukan adalah bertanya ke orang lain.
Dalam bertanya ada etiketnya juga. Pastikan kalau kamu tidak menghabiskan waktu orang lain dengan pertanyaan yang tidak deskriptif seperti: “Tolong bantu dong, kok programku masih bermasalah ya?”
Bandingkan dengan pertanyaan ini: “Jadi aku sedang mengerjakan program A, di program ini aku mau mengimplementasikan B, aku sudah mencoba C dan D tapi kok masih seperti ini output-nya. Sepertinya permasalahannya di E, tapi aku gak yakin juga. Kira-kira gimana ya cara mengatasinya?”
Contoh di atas adalah pertanyaan yang lebih baik, karena kamu menjelaskan:
- Latar belakang dari program yang kamu kerjakan.
- Hal apa yang mau kamu implementasikan.
- Langkah-langkah apa saja yang sudah kamu coba tempuh.
- Asumsi tentang mengapa permasalahan ini muncul.
Setidaknya dengan bertanya seperti ini kamu menunjukkan kalau kamu menghargai waktu orang yang kamu tanya. Mereka jadi tidak perlu menebak-nebak dari awal kira-kira permasalahannya muncul dari mana.
Selain itu, kamu juga membantu dirimu sendiri.
Seringkali permasalahan muncul karena kamu tidak paham mengenai hal yang telah kamu lakukan. Menjelaskan permasalahan secara detail dalam bahasa yang mudah dimengerti bisa membantumu memahami kodemu.
Karena kadang dengan memformulasikan pertanyaan dan mencoba mendeskripsikan permasalahannya saja kamu sudah bisa mendapatkan solusi.
Pernah gak kamu langsung menemukan jawaban ketika sedang menjelaskan suatu permasalahan?
Nah, ini salah satu contoh betapa bergunanya pertanyaan dan penjelasan yang mendetail untuk membantumu memecahkan permasalahanmu.
Bebek-bebek ini siap mendengarkan curhatan programming-mu (gambar dari gitduck.com)
Lalu bagaimana jika tidak ada orang yang bisa kamu tanya?
Kamu bisa menggunakan metode rubber duck debugging dimana kamu menjelaskan permasalahan di kodemu kepada bebek mainan (atau benda apa pun).
Seperti ini caranya:
- Jelaskan kodemu, hasil akhirnya dan apa yang ingin kamu capai. Berikan gambaran umum agar si bebek bisa mengikuti.
- Deskripsikan flow program yang bermasalah baris per baris kepada si bebek tanpa melewatkan satu langkah pun. Semakin detail penjelasanmu, proses debugging pun akan semakin mudah.
- Bayangkan si bebek sangat penasaran akan seluk-beluk programmu, jadi kamu harus bisa meng-cover semua hal yang ingin dia mengerti.
- Apakah kamu sudah menemukan solusinya? Banyak programmer menemukan solusi ketika mereka menjelaskan langkah-langkah suatu aplikasi terhadap si bebek. Saltik, salah variabel atau salah sintaksis bisa terdeteksi melalui proses rubber duck debugging ini.
...
Dari tiga konsep yang telah dijelaskan di atas, berikut kesimpulan yang bisa kamu ambil:
- Agar proses pembelajaran optimal, kamu harus bisa pindah dari mode fokus ke mode tersebar dan sebaliknya. Ketika otakmu macet, pindah ke permasalahan lain atau lakukan hal yang bisa membuatmu rileks dulu sebelum kembali fokus mencari solusinya lagi.
- Menonton video atau mengikuti instruksi saja tidak cukup. Kamu perlu belajar secara aktif dan mengetes pemahamanmu serta menggali kembali materi yang telah kamu pelajari sebelumnya.
- Ketika ada masalah dan kamu ingin bertanya, jelaskan programmu sedetail mungkin dalam bahasa yang bebek mainan pun bisa mengerti. Seringkali, orang-orang mendapatkan solusi dari proses penjelasan dan formulasi pertanyaan ini.
Referensi
Abdaal, Ali (2019). How my friend ranked 1st at Medical School — The Active Recall Framework. https://www.youtube.com/watch?v=fDbxPVn02VU
Monteiro, Thiago (2019). Improve how you code: Understanding Rubber Duck Debugging. https://gitduck.com/blog/improve-how-to-code-with-rubber-duck-debugging/
Oakley, Barbara. (2014). A Mind For Numbers: How to Excel at Math and Science (Even If You Flunked Algebra).
Omi, Shu. (2020). How I Use Notion for Studying — Learn to Code with Active Recalling. https://www.youtube.com/watch?v=fDbxPVn02VU