Pendidikan Pemrograman Yang Tidak Baik

Seperti telah saya tuliskan sebelumnya, belajar pemrograman secara formal itu perlu, tapi sayangnya beberapa tempat tidak mengajarkan pemrograman dengan baik. Berikut ini beberapa ciri pengajaran pemrograman yang tidak baik:

  1. Terlalu berfokus pada tools tertentu yang trend saat ini. Mahasiswa wajib memakai tools X (misalnya IDE-nya harus Microsoft Visual Studio, atau harus memakai Visual Prolog). Tools akan cepat sekali berganti. Ketika Anda diajari tools X, ketika lulus, tools tersebut mungkin sudah tidak ada, atau tidak didukung lagi. Ingin contoh? DBase dan Visual Basic. Dulu keduanya sempat menjadi tools yang “standar”, tapi sekarang tools tersebut tidak disupport lagi.
  2. Tidak mengikuti perkembangan zaman. Ini ekstreem sebaliknya dari yang pertama, ada yang masih mengajarkan kuliah C dengan standar Pre ANSI-C, dan menggunakan compiler Turbo C++ 2.0, yang dirilis kira-kira 20 tahun yang lalu, dan sudah tidak didukung lagi.
  3. Kurang mengajarkan aspek algoritma. Pada sebagian besar bahasa, sudah tersedia library standar untuk sorting, searching, dsb, tapi tanpa memahami kemampuan dan batasan setiap algoritma, Anda akan menemukan hambatan ketika memproses data dalam jumlah yang besar.
  4. Hanya mengajarkan paradigma tertentu. Umumnya paradigma yang dipakai sekarang adalah object-oriented yang digabung dengan procedural, tapi itu bukan satu-satunya cara menyelesaikan masalah.

Jangan heran jika ternyata lulusan sebuah sekolah/perguruan tinggi komputer tidak bisa memprogram jika pengajarannya tidak benar. Jika Anda ingin menyaring antara orang yang punya dasar pemrograman dan yang tidak, cobalah test sederhana ini.

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

Programmer yang baik akan bisa menuliskan solusinya di atas kertas (tanpa bantuan komputer), dalam beberapa menit.

Perlukah kuliah untuk bisa memprogram?

Perlukah “kuliah” (mengambil pendidikan formal di universitas) untuk bisa memprogram?. Jawaban singkatnya: perlu jika Anda ingin menjadi programmer yang baik (kecuali Anda orang jenius yang rajin belajar).

Sebelum memulai argumen saya, saya perlu memberitahu bahwa perbedaan antara programmer yang baik dan programmer yang buruk sangat besar. Dalam suatu riset yang membandingkan programmer terbaik dan programmer terburuk dalam suatu perusahaan, programmer yang terbaik dibanding programmer terburuk dapat membuat program 20 kali lebih cepat, dapat mendebug 25 kali lebih cepat, membuat program yang 5 kali lebih kecil yang berjalan 10 kali lebih cepat (buku Code Complete halaman 548).

Ketika kakek saya membuat rumah, dia tidak membutuhkan arsitek. Ketika bapak saya membuat rumah kami yang pertama, dia juga tidak membutuhkan arsitek. Bagi yang berpikiran sangat sempit, mungkin dia akan segera berpikir: sekolah arsitek itu tidak perlu, anak STM saja sudah cukup. Beberapa tukang bangunan yang cuma lulusan SD pun bisa membangun rumah sederhana di perkampungan.

Coba lihat berapa jumlah rumah di Indonesia yang dibangun tanpa arsitek. Sebagian juga berpikir arsitek itu tidak perlu, mereka bahkan tidak tahu harga pasir termurah di desa ini di mana. Anda yang berpikiran waras tentunya akan segera melihat, bahwa membuat gedung tinggi, apalagi pencakar langit, tidak bisa dilakukan orang yang tidak memiliki pendidikan arsitektur.

Membuat program komputer sederhana, dan aplikasi bisnis untuk sebuah perusahaan kecil bisa dilakukan tanpa perlu kuliah. Kebanyakan aplikasi bisnis hanyalah menerjemahkan ke logika bisnis ke dalam program sederhana yang sudah difasilitasi dengan aneka library. Tapi jika Anda berpikir membuat aplikasi bisnis yang besar hanya sekedar membuat form dan report Anda salah besar. Bagaimana Anda bisa membuat sistem yang bisa menangani ratusan ribu transaksi per detik?

Continue reading Perlukah kuliah untuk bisa memprogram?

Cinta

Menurut Kamus besar Bahasa Indonesia (KBBI):

cin·ta a 1 suka sekali; sayang benar 2 kasih sekali; terpikat

Cinta pertama saya adalah pada programming. Sebelum saya jatuh cinta pada seorang gadis, saya sudah lebih dulu jatuh cinta pada programming. Mungkin sebagian akan berpikir bahwa cinta pada programming adalah hal yang aneh, tapi banyak orang di dunia ini yang sangat cinta pada bidangnya. Kadang sulit mengerti kecintaan seseorang pada sesuatu jika Anda belum melihatnya sendiri. Saya mungkin tidak akan bisa mengerti mengapa Paul Erdős sangat menyukai matematika (The Man Who Loved Only Numbers) jika saya tidak bekerja dengan seorang professor matematika yang sangat menyukai bidangnya.

Saya suka memprogram, karena dalam banyak hal itu lebih mudah dilakukan daripada keahlian lain. Belajar piano butuh waktu bertahun-tahun, tapi memprogram midi synthetizer tidak butuh waktu lama. Belajar kode morse akan butuh beberapa minggu, tapi membuat program untuk menerjemahkan kode morse dapat dilakukan dalam waktu singkat. Membuat jam mekanik akan butuh waktu lama, tapi membuat jam digital di layar komputer hanya butuh waktu yang sangat singkat.

Memprogram merupakan gabungan dari science (karena kita harus memahami algoritma), engineering (terutama ketika membuat program yang besar), dan seni. Membuat program bisa disamakan dengan banyak hal. Membuat program itu seperti menghasilkan suatu karya seni, seperti membuat lukisan atau puisi, atau lagu. Memprogram itu seperti merancang sebuah gedung, atau pesawat. Membuat program itu seperti menyelesaikan sebuah teka-teki, seperti menyelesaikan sudoku, mengisi teka teki silang, atau menyelesaikan rubik. Memprogram merupakan gabungan dari semuanya itu.

Memprogram juga tidak butuh biaya besar. Komputer bisa didapatkan dengan biaya yang sangat murah. Meskipun komputer bisa membantu untuk memprogram,  tidak dibutuhkan komputer untuk mulai memprogram. Saya belajar assembly di atas kertas dengan tutorial dari sebuah tabloid ketika saya masih di bangku sekolah menengah. Ketika saya mengambil  pelajaran pemrograman di ITB,  para mahasiswa diharapkan dapat memprogram di atas kertas. Ujian pemrograman pun memakai kertas (selain ujian praktik di lab).

Sebuah program bisa berguna bagi banyak orang. Sebuah program bisa menghasilkan uang. Sebuah program juga bisa merusak komputer, atau melakukan hal apapun yang kita inginkan. Dalam level tertentu, memprogram itu seperti bermain tuhan. Memprogram juga akan membuat kita tertarik pada banyak hal (misalnya aneka pertanyaan filosofis mengenai determinisme, aneka pembuktian matematis, dll).

Jika Anda juga memiliki kecintaan yang sama terhadap programming, Anda bisa menuliskannya di komentar. Jika Anda tertarik untuk menulis banyak mengenai programming, Anda juga bisa meminta dibuatkan domain namaanda.cintaprogramming.com (misalnya http://yohanes.cintaprogramming.com).