"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.