Rahasia Permainan Mimpi

February 18, 2008

Saya ingin memberi tahu sebuah rahasia kecil. Ternyata apa yang membuat kita bahagia, itu tidak ada hubungannya dengan apa yang ada di luar kita. Tapi murni dari pikiran kita. Basi ya? Bayangkan jika di tahun 1970-an, orang bisa hidup bahagia tanpa handphone. Tapi orang-orang di tahun itu mungkin butuh mobil untuk membahagiakan dirinya. Dan tidak ada pengaruh apa-apa meskipun tidak ada handphone. Tapi jaman sekarang, di Jakarta, rasanya seperti datang dari angkasa luar jika tidak punya handphone. Yang belum punya, rasanya inginn sekali punya. Apalagi yang berwarna. Yang ada kameranya. Yang bisa tivi, bisa blutut. Bisa macem-macem deh. Rasanya bahagia jika punya itu. Dan gelisah jika belum punya. Sampai dunia rasanya gelap gulita jika tidak ada handphone.

Kalau dilihat, sebetulnya nggak penting ada handphone atau tidak. Tapi image tentang punya handphone lebih nggaya, lebih bahagia, lebih modern, betul-betul membuat orang merasa memang lebih nggaya, lebih modern dan lebih bahagia jika mengantongi handphone. Padahal citra itu memang dihembuskan, dan tidak ada hubungannya dengan kebahagiaan kita. Mayoritas manusia memang mendasarkan kebahagiaannya terhadap sesuatu. Entah itu handphone, burung perkutut, istri, anak, suami, anthurium gelombang cinta. Jadi jika bahagianya karena hadirnya sesuatu di luar dirinya, maka ‘sesuatu’ tersebut akan digenggamnya sedemikian rupa, seolah-olah itulah sumber kebahagiannya. Dan di saat hilang dari tangannya, dunia seakan runtuh. Dan gantung diri adalah solusi.

Mengingat semua hal yang ada di sekitar kita itu datang dan pergi, mengapa kita deklarasikan perasaan kita untuk ‘attach’ terhadap ada dan tidaknya hal disekitar kita itu? Jika uang di tabungan menipis, kebutuhan banyak apakah hati menjadi sempit? Gaji belum keluar, anak sakit dan seterusnya, apakah membuat dada menjadi sesak? Jika tabungan bertambah terus, keuntungan berlimpah, apakah perasaan jadi lega. Senang? Mungkinkah hati dan pikiran kita, emosinya tidak tergantung dari ada dan tidaknya ‘sesuatu tersebut’. Jika bisa, maka kita bisa bahagia terus-terusan. Enak terus-terusan. Tidak perlu barang-barang. Tidak perlu definisi.

Bagaimana caranya?

Mrogram

February 12, 2008

Menulis program bagaikan menulis puisi. Begitu kata Matt, pentolannya WordPress. Sebagaimana menulis baris-baris kode, diperlukan kegairahan tertentu. Tapi selain kegairahan, juga abstraksi. Halah. Ruwet. Imajinasi. Pokoknya kemampuan untuk membayangkan sesuatu yang nggak ada wujudnya.

Antara Hayalan, Imajinasi dan Abstraksi

Kalau menghayal itu seperti menggambar dalam fikiran, segala sesuatu yang terjadi di sekitar yang kenyataannya tidak berhubungan, namun dalam gambar fikiran menjadi berhubungan. Nah imajinasi itu menggambar dalam fikiran, yang sebelumnya nggak ada. Liar dan bebas kemana-mana. Abstraksi, itu seperti imajinasi namun lebih terstruktur dan ikut kaidah-kaidah tertentu. Terikat. Ah itu definisi saya sendiri. Jangan dipercaya.

Lalu kembali ke mrogram. Ini seperti merancang sebuah urutan kerja sehingga menghasilkan sesuatu. Seperti membuat sepeda. Atau membuat jam dinding. Ruwet ya? Memang ngomongin barang nggak keliatan itu agak ruwet. Yang mudah? Mungkin seperti membuat mesin selep (mesin penggiling padi, yang bertugas memilahkan padi menjadi beras dan gabah). Bayangkan Anda duduk di pinggir sawah, melihat padi-padi yang sudah mulai menguning dan siap di panen. Sesekali bolehlah memetik padi yang masih muda. Kalau dikunyah rasanya manis. Kembali lagi ke mesin. Kita punya masalah ini padi harus diolah agar menjadi beras yang siap dijual.

Madzhab Prosedural
Jika Anda penganut madzhab prosedural, maka yang Anda lakukan adalah memisah mesin selep ke dalam tugas-tugas secara berurutan. Kurang lebih mesin selep akan dibagi menjadi:

  1. Mesin awur, yang mengeluarkan padi dan gabah dari batang padi.
  2. Mesin giling, yang memisahkan padi dan gabah.
  3. Mesin keluaran awur, yang mengolah keluaran mesin awur. Batang padi yang sudah tidak ada padinya karena dikeluarkan oleh mesin awur, akan dimasukkan ke dalam mesin keluaran, dan otomatis masuk ke dalam karung batang padi.
  4. Mesin keluaran giling, yang mengolah keluaran mesin giling. Gabah akan dimasukkan ke dalam karung gabah, dan padi akan dimasukkan ke dalam karung padi.

Menurut madzhab prosedural, ke empat mesin di atas dituangkan dalam fungsi. Setiap fungsi, sebagaimana mesin, membutuhkan masukan dan menghasilkan keluaran. Misal mesin awur, membutuhkan masukan batang padi yang baru saja dipanen, dan mengeluarkan gabah padi serta batang padi. Jika dituangkan dalam program kurang lebih begini:

function mesin_awur( batang_padi ){
return [ gabah_padi, batang padi ]
}

Begitu ya? hmm itu tulisan pakai tata bahasa apa ya? Maaf kalau nggak pakai tata bahasa algoritma. Nah begitulah kira-kira. Sehingga Anda sebagai perancang mesin giling dengan madzhab prosedural, kurang lebih punya mesin_awur(), mesin_giling(), mesin_keluaran_awur(), mesin_keluaran_giling(). Kurang lebih begitu.

Madzhab Obyek

Selain madzhab prosedural, dikenal pula madzhab baru yang bernama Madzhab obyek. Menurut aliran ini, setiap tugas harus dipisah-pisah obyeknya. Lalu obyek tersebut harus diidentifikasi apa saja yang dilakukannya. Dalam contoh di atas, mungkin hanya ada 2 obyek, yakni padi dan karung. Kalau dituangkan dalam program kira-kira.

class padi {
function digiling()
function dibelah()
function dimasukinkarung()
}

class karung {
function diisi()
function dipindah()
}

Betul begitu? Setelah saya baca lagi tulisan di atas, sebetulnya nggak genah, saya ini mau nulis apa. Reti ora son?

Tips Menghadapi Pelanggan dalam Pengembangan Software

February 11, 2008

Sudah lama nggak nulis tentang kerjaan. Ini saya mau nulis. Mungkin bermanfaat, terutama buat Anda yang freelancer, ronin, atau software house yang mengembangkan perangkat lunak berdasarkan permintaan pelanggan. Bisa juga untuk desainer web. Ini semua normatif dan non teknis.

  1. Hindari ngomong jorok
    Buat programmer web yang tiap hari ngurusin program, kata-kata CSS, Ajax, Javascript, PHP, Server, OOP adalah bahasa sehari-hari. Padahal kalau menghadapi pelanggan, itu adalah bahasa jorok yang harus dihindari. Jangan ngomongin jargon. Tetap fokus kepada kebutuhan pelanggan dan bagaimana menyelesaikan masalahnya. Memang di saat tertentu, kadang jargon dibutuhkan untuk menjelaskan sesuatu yang memang tidak ada padanannya. Tapi sebisa mungkin hindari. Jika memang terpaksa, jelaskan dengan sebisa mungkin.
  2. Kerjain PR-nya
    Kadang sebuah program tidak cukup hanya menjalankan fungsinya saja. Kemudahan dalam pengoperasiannya (kata preman pasar: faktor usability) biasanya sangat membantu pelanggan dalam meningkatkan produktifitas. Buat yang malas, mungkin kepikiran begini, jangankan memikirkan usability, software-nya jalan aja sudah bagus. Atau kalaupun jalan, dokumentasinya malas bikin. Yah, saya jamin, kalau begini tetap dipelihara, seumur hidup akan ngoding terus. hehehe.. itu juga kalau masih dipakai sama orang.
  3. Tepat Waktu
    Ini klasik dalam mengerjakan proyek. Tunda-tunda terus. Seperti sekolah dulu. Belajar kalau ada ujian. Kerjain proyek kalau sudah mepet deadline. Akhirnya minta kelonggaran waktu. Akhirnya biaya bengkak, pelanggan ngomel-ngomel. Padahal rumusnya simpel saja di mulut: jangan telat 🙂
  4. Tetap Berkomunikasi
    Kadang kala dalam pengerjaan, seringkali putus komunikasi dengan pelanggan. So, sering-seringlah komunikasi. Paling nggak kirim email, tanyain programnya dipakai atau tidak. Biasanya kalau sering ngobrol, sering muncul proyek-proyek sambilan lainnya. Di samping itu, hubungan personal yang baik, akan membantu saat ada masalah teknis atau administratif antar institusi.
    Atau kalau pas dalam pengerjaan, selalu beritakan kepada pelanggan. Meskipun program telat, programmer ngambeg atau pindah. Ya memang jangan semua urusan dapur, tapi semua hal yang nantinya akan berefek kepada pelanggan, beritakanlah.
  5. Semua pelanggan sama
    Mau besar, mau kecil, mereka semualah yang membayar hasil kerja. Perlakukanlah semuanya sama. Kan begitu diputuskan untuk diambil, Anda pasti sudah memutuskan bahwa itu proyek memang penting untuk diambil. Entah alasan harganya yang bagus atau kebutuhan teknisnya yang menantang.
  6. Jangan cuma sekedar bikinin program
    Selalu segarkan pengetahuan Anda tentang teknologi-teknologi baru, tren dan isu-isu hangat seputar bahasa pemrograman yang Anda gunakan. Ini semua efeknya untuk memperbaiki sistem yang Anda buat untuk pelanggan.

Hmm penting nggak sih nulis yang beginian? Mungkin Anda semua tahu apa yang seharusnya dilakukan, cuma pas ditengah-tengahnya tetap saja malas. Yah, anggap saja tulisan ini sebagai pengingat.