Mengapa coding melatih kita untuk berpikir? Karena pemrograman melibatkan pemecahan masalah. Pemecahan masalah adalah salah satu tools kuat untuk belajar. Bahkan belajar melalui pemecahan masalah ini telah lama diaplikasikan pula pada dunia pendidikan, seperti pada model pembelajaran problem based learning yang memicu pemecahan masalah sebagai esensi utama dari pembelajaran.
Begitu pula dengan cara berpikir seorang programmer. Pada dasarnya, saat memprogram suatu aplikasi, seorang programmer terus dihadapkan pada berbagai permasalahan yang harus dipecahkan. Hal tersebut telah disadari oleh para ilmuwan komputer, sehingga banyak dibentuk berbagai metode pemecahan masalah yang salah satunya menjadi fundamental ilmu komputer, yakni computational thinking yang memecah masalah menjadi beberapa parameter kecil sehingga lebih mudah untuk diselesaikan.
“Everyone should learn to program a computer, because it teaches you to think“. (– Steve Jobs)
– Steve Jobs
Namun tentunya pemecahan masalah yang akan dibahas di sini adalah pemecahan masalah dalam scope umum yang dapat diterapkan pada bidang apa saja. Hanya saja, pemecahan masalah ini diambil dari cara berpikir seorang programmer.
Ini mungkin cara biasa yang dilakukan seorang programmer ketika menyelesaikan masalah pada program yang sedang ia kerjakan :
- Mencoba solusi.
- Jika itu tidak berhasil, coba yang lain.
- Jika itu tidak berhasil, ulangi langkah kedua hingga saya beruntung dapat memecahkannya.
Sebetulnya cara pemecahan masalah seperti itu sah-sah saja, apalagi dalam keadaan sehari-hari ketika mengerjakan suatu pekerjaan yang harus segera diselesaikan. Namun, sebetulnya terdapat cara pemecahan masalah yang jauh lebih efektif. Caranya adalah dengan membuat kerangka kerja dalam memecahkan masalah.
Ambil contoh kita akan menggunakan kerangka berpikir yang telah dikembangkan oleh orang lain seperti computational thinking, maka kita akan memecah masalah menjadi parameter-parameter lebih kecil, yakni:
- Decomposition, merupakan pembagian masalah menjadi bagian-bagian yang lebih kecil atau sederhana.
- Pattern recognition, yakni mencari atau mengenali kesamaan pola dalam maupun antar masalah yang ingin dipecahkan.
- Abstraction, melihat permasalahan secara mendasar sehingga dapat melihat jangkauan luas yang lebih penting dan mengabaikan detil kecil yang sebetulnya kurang relevan.
- Algorithm, mengembangkan sistem, sekuen, atau langkah-langkah solusi yang dapat diterapkan secara menyeluruh terhadap pola yang sama sehingga lebih efektif dan efisien.
Mungkin terdengar terlalu teknis dan terlalu kompleks, namun bukan itu intinya. Tahap problem solving di atas hanyalah sebagai contoh kerangka kerja sistematis untuk diikuti sebagai referensi kasar.
Mengapa? Karena sejatinya pemecahan masalah sistematis yang dilakukan oleh setiap orang akan berbeda-beda. Pada intinya kita harus membagi suatu masalah menjadi sub-masalah yang lebih kecil, sehingga kita dapat lebih mudah menyelesaikannya. Melalui dasar pemikiran tersebut, kembangkanlah metode pemecahan masalah sistematis menurut cara kita sendiri.
Jangan pecahkan masalah, justru pecahkan menjadi bagian-bagian lebih kecil terlebih dahulu. Apa yang harus dilakukan oleh kita sebetulnya sesederhana:
- Pahami
- Buat rencana
- Bagi-bagi menjadi bagian kecil
Saat kita masih terbentur dengan masalah tersebut, maka tidak ada jalan lain, dalam artian mau tidak mau hal yang membuat kita stuck ini adalah bagian dari latihan. Ya, selain memecahkannya secara sistematis, pada akhirnya latihan adalah salah satu hal yang tetap harus dilakukan dalam mengasah kemampuan pemecahan masalah kita. Oleh karena itu, latihan menjadi kunci kedua dari problem solving ini.
“Practice makes perfect. After a long time of practicing, our work will become natural, skillfull, swift, and steady.” (– Bruce Lee)
Jadi pada intinya pelajaran terbesar yang dapat ditarik adalah membagi masalah menjadi bagian-bagian kecil terlebih dahulu, lalu menyelesaikannya satu persatu. Pemecahan masalah adalah inti utama dari cara berpikir seorang Programmer. Selanjutnya, kita harus terus mengasah kemampuan problem solving, karena pada akhirnya kemampuan ini adalah hal yang harus dilatih agar kita dapat menguasainya dengan baik.
Problem solving adalah kemampuan yang sangat penting untuk dimiliki dalam bidang apa pun. Apalagi dalam menghadapi era revolusi industri 4.0 yang semakin cepat dan pintar ini. Kita harus memiliki kemampuan problem solving yang kuat agar tidak menjadi korban industri yang semakin canggih dan cepat ini agar tetap memiliki daya saing tinggi bahkan jika disandingkan dengan kecerdasan buatan.