Dreaming of things

15May/0816

Algoritma, perlukah?

“Saya ingin bisa programming, apa yang pertama kali harus saya pelajari?”. Salah satu pertanyaan seperti ini terucap dari seorang mahasiswa ketika saya sedang menunggu bis usai mengajar. Waktu itu, sang mahasiswa baru saja mengikuti sebuah kelas IT center di tempat saya mencari tambahan biaya hidup, hehe.

Lalu saya jawab: “Algoritma“.

Sewaktu saya kuliah tingkat pertama, satu mata kuliah yang paling saya suka adalah Algoritma. Selain dosennya yang mumpuni, mata kuliah ini memang menarik perhatian saya. Dan jelas bahwasannya fase demi fase yang saya lewati dalam menekuni Software Engineering (Rekayasa Perangkat Lunak) ini berpangkal dari apa yang saya pelajari dari mata kuliah Algoritma.

Diakui atau tidak, fakta adanya bahwa banyak orang yang memiliki kapasitas yang memadai (lebih dari memadai malahan, kalau tidak ingin dibilang luar biasa) dalam Software Engineering atau Pemrograman, tanpa mempelajari materi-materi yang berkaitan dengan Pemrograman (seperti halnya Algoritma) secara formal. Dengan kata lain, kompetensi yang mereka miliki sebagai Software Engineer berasal dari proses pembelajaran otodidak. Bahkan bisa jadi mereka mengklaim dirinya tidak pernah belajar Algoritma sama sekali. Loh, kok bisa?? Ya bisa saja.. karena secara tidak sadar mereka sebenarnya mempelajari Algoritma ketika mendalami Pemrograman (yaa bisa dibilang sambil menyelam minum air, tapi tidak merasa kalau dirinya sedang minum air tersebut).

Di kantor saya tercinta ini, banyak orang-orang yang memiliki talenta dalam Software Engineering namun tidak memiliki latar belakang pendidikan formal yang berkaitan dengan Software Engineering. Atau, walaupun ada mata kuliah semacam itu di fakultasnya ketika kuliah dulu, namun mereka tidak mengambil mata kuliah tersebut. Ada yang dari Elektro, Matematika, dan lainnya, bukan dari Informatika, atau Ilmu Komputer. Tapi kondisi ini masih masuk akal, karena apa yang mereka pelajari di bangku kuliah, kurang-lebih isinya adalah logika dan logika. Masih bisa dikaitkan silsilahnya dengan Algoritma, mungkin masih satu kakek buyut yang sama, yaitu logika. Mereka yang sudah terbiasa dengan logika, Insyaa Alloh akan mudah mempelajari Algoritma-walaupun tidak disadari sebenarnya mereka mempelajarinya-ketika mendalami Pemrograman secara otodidak.

Yang menjadi masalah, kembali pada paragraf pertama.. Saya pernah mengajar Pemrograman di beberapa lembaga pelatihan IT, yang pesertanya adalah gado-gado. Ada pelajar SMU, pelajar fakultas Budaya, fakultas teknik, ada yang sudah berkeluarga, dan lain-lain. Niat mereka untuk belajar sudah baik, namun sayang sekali.. hasil akhir yang terjadi sering kali tidak memuaskan. Hanya sebagian saja yang pada akhirnya benar-benar mengerti bagaimana cara membuat sebuah program (apapun itu, sekalipun hanya sebuah program Hello World yang menakjubkan). Sisanya, mereka hanya mengerti bagaimana menampilkan pesan pada layar, bagaimana menampilkan nilai pada text box, atau yang sedikit lebih baik, bagaimana menghubungkan program yang dibuat dengan database bernama “x” dengan sebuah tabel bernama “y”, namun ketika database yang digunakan diubah menjadi database “a” dengan tabel yang bernama “b”, macet lah sudah program yang dibuatnya alias gagal maning gagal maning. Betapapun bagaimana saya mencoba menjelaskan dan mengulangnya, lagi-lagi hasilnya tidak banyak berubah.

Apa yang salah? Peserta yang gado-gado ini tidak semua memiliki latar belakang, atau pengalaman, atau bakat alami terhadap logika. Bayangkan saja si pelajar dari fakultas Budaya itu, tidak pernah satu tetes pun di tempat kuliahnya diajarkan deret Fibonacci, atau peta Karnaugh, atau menghitung jarak terpendek dengan teori Graph, atau apapun itu yang masih satu silsilah dengan Algoritma. Mereka yang belum terbiasa terlatih dengan logika, sangat memerlukan Algoritma sebagai modal dasar pemorgraman. Harus diadakan secara sengaja dan dikhususkan tersendiri. Tanpa Algoritma, mereka hanya mengerti bagaimana seharusnya solusi dari sebuah kasus tanpa mengerti apa proses di balik solusi tersebut. Sehingga, ketika menemui kasus lainnya, mereka tidak bisa menemukan solusinya walaupun kasus ini mirip dengan kasus yang sebelumnya pernah dibahas. Mereka tau bagaimana menampilkan angka satu hingga lima pada sebuah combo box melalui perulangan (loop), namun ketika ada kasus membalikkan sebuah kata, mereka langsung bingung. Karena mereka tidak memahami proses yang sebenarnya terjadi pada perulangan tadi, mereka tidak mengerti sesungguhnya ada logika mengulang proses yang sama dengan memberikan inisialisasi dan kontrol pada proses perulangan tersebut. Yang mereka tau, dengan menulis baris-baris kode tersebut, maka akan menghasilkan angka satu hingga lima pada combo box, dan jika angka awal dan angka akhirnya diubah, maka akan berubah pula angka-angka yang akan muncul pada combo box. That’s it, hanya itu yang mereka tau, sementara konsep perulangan dibalik itu sendiri seperti apa, mereka tidak paham. Mengerti hasil dari satu baris syntax (kode), bukan berarti mengerti konsep atau dasar dibalik kode tersebut. Justru inilah yang penting, paham setiap proses dari tiap baris kode yang tertulis, bukan hanya mengerti apa yang dihasilkannya. Di sinilah peran dan kebutuhan akan Algoritma itu muncul untuk memantapkan logika.

Mengapa tidak diajarkan Algoritma saja sambil mengajarkan pemrograman di Lembaga Pelatihan IT seperti itu? Seandainya waktu yang ada masih cukup untuk mengajarkan Algoritma sembari membahas materi Pemrograman yang ada, Alhamdulillah, itu bagus. Tapi, di Lembaga Pelatihan IT seperti itu, biasanya dituntut untuk bisa menghabiskan materi sesuai dengan waktu yang sudah dijadwalkan, dan tidak ada waktu yang berlebih untuk mengajarkan sesuatu di luar target. Atau, itu hanya terjadi pada apa yang saya pernah alami saja yaa.. jangan-jangan di tempat lain tidak seperti itu, bisa memiliki waktu yang cukup untuk mengurai Algoritma sembari membahas Pemrograman.. semoga saja begitu.

Alangkah baiknya jika Lembaga Pelatihan IT yang memberikan materi Pemrograman, menyediakan pula materi Algoritma sebelum memasuki Pemrograman itu sendiri. Sehingga, para peserta sudah memilki konsep atau dasar-dasar Pemrograman dengan baik, memiliki logika yang sudah cukup matang untuk mempelajari Pemrograman lebih mendalam. Jika anda seseorang yang baru saja tertarik atau ingin mempelajari Pemrograman, sebaiknya pelajari Algoritma juga, kecuali anda memang memiliki bakat alami tersendiri terhadap logika ;D

Jadi, perlukah Algoritma (dipelajari secara tersendiri dalam Software Engineering atau Pemrograman)? Akan lebih baik seperti itu…

Catatan: Istilah Algoritma yang saya maksud dalam tulisan ini adalah Algoritma di dalam bidang komputer-lebih tepatnya, Algoritma Pemrograman-, karena Algoritma itu sendiri bisa digunakan dalam berbagai bidang sebagai sebuah istilah pada masing-masing bidang tersebut.

Comments (16) Trackbacks (0)
  1. Klo gw jar… no 1 Belajar seneng dulu aja wkakaka…..

  2. huahahaha masJAY, gw tuh ketawa muli dan nungguin apalagi tuh tulisan “randomize” doooh mules mules gw bacanya huahahahaha

    *mau komen di “leave a message” ga bisa jadi komen di sini deh “

  3. @Ekskalibyur:
    haha.. betul juga ya, mi..

    @teDay:
    Waks, ada teDay nongol di sini ;D
    “ketawa muli” bahasa mana tuh, teDay? hiaaaa.. mules mules dehh sono ke belakang ;P Bisa ko leave a message nya..

  4. Harusnya belajar bahasa inggris dulu baru bisa belajar Algoritma… because English level will cause a real problem in your “Kantor Tercinta”…. :D Huehuehueheheheheh…. kikikikikikik.. Atau bahasa Arab aja kan Algoritma = Algorism dari nama: Al-Khwarizmi, Persian Persian Islamic mathematician, astronomer, astrologer and geographer… :D

  5. @Himaone: hehe.. kinda big deal for english in “kantor tercinta” ;D what a “katrok” and “ndeso” english of mine, that’s why they put me on the english class kekekek..

  6. Seneng bisa baca n mampir di websitenya. Bagusss desaign nya. Salam kenal..

    Btw, ini pula yg terjadi dikantor. Kami ada training unt programer baru. Baru kali ini ada peserta yg blank banget ttg algoritma. Bingung pisan mau ngejelasinnya dari mana. karena unt yg sederhana aja beliau blm faham meski latar pendidikan IT juga. Cuma dia biasa ngutak atik design grafisnya. Menurut saya aga susah..karena ini seperti meminta seniman belajar koding. Agak repot kan beda otak kanan n kiri. Saya mau usahakan cari modul2 algoritma dr inet. Tp gak ada yg lengkap. Tau yg lengkap di situs apa? Thx.

  7. @ari:

    Salam kenal juga.. terimakasih sudah berkunjung ^^. Saya juga senang kalau website ini bisa memberikan manfaat untuk orang lain.

    Untuk modul algoritma berbahasa indonesia yang lengkap dan sistematis, saya juga belum pernah coba cari, kalau nanti ada, InsyaaAlloh saya akan kabari. Untuk yang berbahasa inggris, ada buku yang cukup bagus (masih berupa draft) di http://www.cs.berkeley.edu/~vazirani/algorithms.html.

    Btw, sudah coba cari di ilmukomputer.com? Di situ ada kategori tersendiri untuk algoritma. Mungkin kalau ingin cari algoritma yang spesifik, bisa langsung cari di Search Engine atau Wikipedia, seperti misalnya Algoritma untuk sorting ada di http://en.wikipedia.org/wiki/Sorting_algorithm.

  8. kalo gw sih sama kaya exca..

    belajar menikmatinya dulu juga :D

  9. TOPBGT deh uraian algoritmanya.Tp bolehkan mintauntuk pejelasan algoritma yang lainnya lagi doooong.

  10. perkenalkan..ku anak baru informatika @ STMIK di Jogja,di kampus aku ada MK Logika dan Algoritma,tapi dosen kami sangat kurang dalam menjelaskan Algoritma shg kami sekarang agak merasa jenuh tentang MK Algoritma..
    Lha,,untuk itu boleh donk minta tips supaya kami lebih mudah dan senang mempelajari algoritma..!
    Terimakasih sebelumnya…

  11. @Usep:
    InsyaaAlloh saya ada rencana bikin tulisan lebih banyak lagi tentang algoritma dan implementasinya. Sekarang ini masih fokus nyicil tulisan seputar agile software engineering ;D

    @@/ri3f:
    Salam kenal juga : ) Sebenernya, untuk belajar apapun, supaya lebih mudah dan lebih menyenangkan adalah membuat metoda pembelajaran yang lebih interaktif. Tapi sebelum itu semua, niat adalah hal pertama yang harus @/ri3f miliki. Niatkan untuk belajar dengan baik. Saya punya empat fase siklus belajar: baca, coba, pahami, berbagi : ) Setidaknya, tiga yang pertama harus @/ri3f tempuh dengan niat yang sungguh2.

    Jika ingin belajar algoritma yang interaktif, bisa cari di internet. Ini contoh Bubble Sort yang interaktif http://lecture.ecc.u-tokyo.ac.jp/~ueda/JavaApplet/BubbleSort.html dan http://www.cs.auckland.ac.nz/software/AlgAnim/sorting.html. Semoga membantu : )

  12. thank you…

  13. assalammu’alaikum …saya sependapat dengan tutorial anda..karena cita cita yang tinggi saja untuk menguasai pemograman tidak cukup..karena sebenarnya cita-cita itu hanya akan kesampaian apabila mereka mengetahui bagaimana cara memprogram..ya..tentu saja cara memprogram tersebut akan diperkenalkan pada pelajaran logika algoritma tersebut..setelah itu bahasa mesin tingkat tinggi akan semakin mudah mereka pelajari..seperti java,javafx,bahkan dot net teknologi..apa yang salah dalam belajar mereka sehingga mereka tidak mengerti konsep pemograman adalah karena setiap bahasa pemograman memiliki aturan tersendiri..dan di sebalik itu ada konsep teknologi yang melatar belakangi bahasa pemograman itu sendiri..contohnya dot net..,apabila hanya mempelajari bahasa pemogramannya saja tanpa mengerti menggunakan alat bantunya mengenai bagaimana menambahkan suatu control dan lain sebagainya..ya..tentu saja masalah yang ditemukan akan terasa sangat rumit..jadi kesimpulannya adalah mereka harus memahami bagaimana menggunakan suatu bahasa pemograman tersebut dan memahami sintaks-sintaks atau aturan bahasa pemograman itu sendiri..wassalamm..good luck..

  14. @payflow_charisma:

    Wa’alaykumussalaam warohmatulloh

    Salam kenal ya, mas payflow_charisma : )
    Terimakasih sudah bersedia membaca tulisan saya ;D Saya setuju, sebuah pondasi perlu dibangun terlebih dahulu sebelum bangunan itu sendiri : )

  15. Salamualaikum ALL.., temen kakak saya yang master dalam pemrograman komputer awalnya dari training2 yg seperti pk jay jelaskan tadi padahal basic dia ilmu sosial loh pk jay, hanya memang dia terus menempa dan ditempa apalagi setelah dia kerja di company kakak sy yg bergerak di information system development, kerjanya tiap hari ya bergumul dengan programing gitu lah

  16. @Jamil Akbar:

    Wa’alaykumussalaam warohmatulloh..

    Betul mas, kita semua harus terus belajar.. Di dalam Software Engineering (Rekayasa Perangkat Lunak), programming saja tidak cukup. Di dalam nya terdapat rangkaian proses yang kontinyu, terintegrasi, dan sirkular (dalam Agile development biasa disebut ‘iteratif’) sehingga setiap proses nya membutuhkan knowledge yang memadai : )


Leave a comment


No trackbacks yet.