"Saya ada masalah yang nak diselesaikan. Saya tahu tulis program. 
Tapi saya tak tahu macamana untuk tulis program supaya dapat 
menyelesaikan masalah itu."

Masalah ini sebenarnya merupakan masalah yang paling, paling kerap 
dalam kalangan programmer. Dari programmer yang baru mula nak 
belajar, sehinggalah programmer yang sudah berbulu dan beruban.

Kita belajar programming language. Arahan semua sudah ada dalam 
kepala. Syntax pun, no problem. Semua sudah hafal.

Tapi ... bila terdapat satu situasi yang 'one kind', kita tak tahu 
bagaimana untuk menggabungkan apa yang sudah kita pelajari untuk 
mencari penyelesaian.

Sebenarnya masalah ini timbul jika kita tidak mempelajari programming 
mengikut metodologi yang betul. Kita mungkin terbawa-bawa cara 
pembelajaran yang kita anuti semasa di sekolah dulu. Di sekolah dulu, 
kita belajar untuk lulus peperiksaan -- dalam ertikata lain, dengan 
menghafal. Siapa pandai hafal, maka dia dapat A.

Programming merupakan satu disiplin yang amat berlainan dari ini. Ya, 
hafalan itu perlu kerana kita perlu mengetahui akan arahan-arahan 
yang terdapat dalam bahasa pemprograman. Tetapi lebih penting dari 
itu ialah kebolehan untuk 

i. menganalisis masalah, 
ii. menyamakan masalah ini dengan masalah-masalah yang pernah kita 
selesaikan dulu-dulu,
iii. dan menggabungkan arahan-arahan yang sesuai untuk mencapai 
penyelesaian tersebut.

Malangnya i, ii, dan iii, hanya boleh dipelajari melalui pengalaman 
praktikal. Ertinya, hanya dengan menghabiskan satu buku teks, tidak 
bermakna anda sudah tahu membuatnya. 

Dalam erti kata lain, anda perlu banyak membuat latihan (mulakan 
dengan yang mudah), dan pada masa yang sama banyak melihat contoh-
contoh penyelesaian.

Dalam dunia ini terdapat permutasi yang infinit di dalam jenis 
masalah yang perlu diselesaikan. Ada berjuta-juta jenis masalah 
pemprograman. Namun, berita baiknya, masalah-masalah ini kerapkali 
mempunyai persamaan, apa lagi jika masalah-masalah ini terkandung 
dalam domain yang sama. 

Setiap kali anda berjaya menyelesaikan satu masalah, ia sebenarnya 
merupakan benih yang boleh anda gunakan kembali untuk menyelesaikan 
masalah lain. Dan bila anda menyelesaikan masalah lain pula, secara 
tidak langsung anda menyemai benih lain pula.

Jadi sebab itu pensyarah-pensyarah amat tekankan agar kita membuat 
assignment sendiri, walaupun jawapan yang kita beri itu mungkin tidak 
100% baik. Kita [b]tidak boleh[/b] mendapat manfaat dengan hanya [b]
melihat[/b] penyelesaian orang lain; sebaliknya kita perlu 
mengarangnya sendiri. Semua orang, termasuk programmer yang terhandal 
sekalipun, bermula pada langkah paling bawah.

Bagi masalah yang lebih rumit, terdapat satu bidang khas yang memang 
dikhaskan untuk membantu programmer-programmer mencari dan 
mengaplikasikan penyelesaian. Bidang ini dipanggil "programming 
patterns". Patterns ialah cara-cara penyelesaian yang kerap digunakan 
dalam kategori-kategori masalah. Terdapat pelbagai pattern yang boleh 
anda pelajari dan gunakan, seperti singleton, elevator, (ya namanya 
semua pelik :) ), tetapi untuk mengaplikasikan sesuatu pattern, anda 
perlu tahu mengetahui di dalam kategori manakah terletaknya masalah 
anda.

---

Ditulis oleh Hazman Halid, Consultant Developer, IBM & Ford Motor 
Company, Dearborn, Michigan, USA.

    Source: geocities.com/tukangtaip