The Problem Solving Process

Gak ada kerjaan emang, ngapain coba cari-cari masalah. Buat tukang kode-kodean, masalah mah datang terus-terusan. Kayaknya gak ada habis-habisnya. Kemarin-kemarin, saya ikut salah satu course Java di EdX. Eh, taunya sebelum course mereka ngasih tips cara gimana ngehadapi masalah.

Dari pengelaman mereka, mereka bisa ngegeneralisasi gimana cara nyelesaiin masalah yang bener-bener nyelesaiin masalah. Maksudnya gini, masalahnya gak ngerembet kemana-mana.

Menurut mereka masalah itu hal yang harus diselesaikan, sebagai orang yang merasakan pendidikan formal ilmu komputer, saya selalu memandang masalah adalah hal yang pasti bisa diselesaikan, eh tapi gak semua deh (baca).

Di ilkom cara untuk memecahkan masalah dinamakan algoritma. Algoritma harus jelas, algoritma tidak boleh rancu. Dari sinilah saya selalu memandang bahwa masalah apapun pasti bisa diselesaikan, asalkan kita bisa tahu langkah-langkah yang diambil adalah langkah yang tepat.

Menurut mereka, berikut adalah langkah umum bagaimana seorang ilkom memecahkan masalah.

Problem Solving Process

Define and Analyze the Problem

Tahap ini adalah tahap di mana kita menemuka masalah, permasalahan muncul. Seringkali orang selalu memandang bahwa masalah itu adalah hal yang besar, menakutkan. Stop! pemikiran seperti itu justru akan memunculkan masalah-masalah lain. Tahap pertama dalam menyikapi masalah adalah mencari tahu dan memahami masalah itu sendiri.

Dalam programming, tahap ini adalah tahap dimana masalah di-formulasikan, apa initial state-nya? apa final state-nya?

Kemudian cari tahu informasi atau input apa saja yang diperlukan untuk mencapai output yang diharapkan.

Contoh masalah: Cari cara paling baik untuk traveling ke Bali!

Hal pertama adalah pahami betul masalahnya dan analisis. Apakah Bali yang disebutkan adalah Bali yang sama dengan yang kita maksud atau bukan. Lalu analisis apa definisi baik itu, apakah definisi baik dalam masalah itu adalah cara traveling paling murah? paling cepat? atau paling nyaman? Hal ini harus kita ketahui dahulu sebelum membuat solusi.

Develop a Solution

Kita sudah mengerti dan menganalisis masalah yang timbul. Setelah benar-benar paham apa permasalahannya, selanjutnya adalah menuliskan langkah-langkah yang detail untuk memecahkan masalah tersebut. Pada tahap ini dimana algoritma dibuat, buat use-case dari algoritma tersebut.

Contoh:

Masih dengan masalah yang sama, anggaplah bahwa permasalahannya adalah waktu tercepat ke Pulau Bali. Anggaplah saya dari Jakarta, secara intuitif kita sudah bisa menebak bahwa waktu paling cepat untuk ke Bali adalah dengan cara naik pesawat. Tetapi cari tahu terlebih dahulu record pesawat mana yang selalu tepat waktu dan yang tidak. Hal ini harus ditulis secara detail, selanjutnya kita bisa menemukan solusi harus terbang dengan pesawat apa.

Test and Evaluate the Solution

Masalah sudah dipahami, langkah-langkah penyelesaian maslah sudah dibuat, lalu apakah algoritma ini sudah benar??

Bisa jadi langsung benar, tetapi sangat jarang satu solusi bisa langsung benar. Untuk itu, memang diperlukan evaluasi dan pengujian algoritma yang telah kita buat untuk jenis masalah yang sama.

Contohnya dalam programing, jika saya membuat fungsi f(x) saya selalu menguji apakah fungsi f(x) bisa menghasilkan hasil yang benar untuk semua input, jangan abaikan angka-angka seperti {0, < 0, real number between 0 to 1}.

Document and Maintain the Solution

Tidak sampai di situ, terkadang masalah yang sama muncul dikemudian hari saat kita lupa bahwa masalah ini pernah terjadi di masa lalu. Untuk itu diperlukan dokumentasi dan pembaharuan terhadap solusi yang telah kita buat.

Saya selalu menyebut langkah ini adalah langkah ‘belajar dari sejarah’. Sejarah ada untuk dipelajari, bukan untuk dihafal, dengan tujuan jika terdapat masalah yang sama di masa sekarang, orang bisa belajar dari sejarah.

Dokumentasi memang langkah paling membosankan, tetapi saya setuju kalau langkah ini paling penting. Tanpa Newton, Einstein tidak akan menemukan E=MC2.

Referensi:
https://courses.edx.org/courses/course-v1:HKUSTx+COMP102.1x+4T2015/courseware/1ee4603833d742e698d27695d2aa25b5/95c6ecf8ec184a978980b3723f3bc973/

1 comment… add one
  • Eko Rizkiyanto Mar 5, 2018 @ 23:49

    Masalah apa saja yang sering masyarakat temukan sekarang….??

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.