Cerita Saya 23 Januari 2018

“Cerita”, “manusia suka dengan cerita”, dengan obrolan-obrolan, mendengarkan cerita dari orang lain, atau menceritakan cerita kepada orang lain. Saya sendiri lebih suka mendengarkan orang lain bercerita, daripada menceritakan sendiri suatu cerita. Tak ada cerita yang lebih sulit diceritakan selain menceritakan tentang diri sendiri. Tentu cerita yang saya maksudkan di sini adalah cerita yang dituturkan dengan lisan. Apakah penting saya menutlis tentang ini? Rasanya tidak penting untuk orang lain mengetahui, tentu bukan ini topiknya. 

sumber: dokumentasi pribadi

Kemarin malam, saya terlambat menyadari. Ada yang “ketinggalan” yang akan ditunjukkan kepada web agency secara daring. Web Agency ini berada di lokasi dimana selisih waktu saya dengannya adalah 4 jam lebih awal.  Besok pagi mereka ingin melihat suatu form dan menge-test form tersebut apakah sudah berjalan sesuai dengan keinginan mereka atau tidak. Form itu sebenarnya sudah fix. Sudah bisa menyimpan data ke database, dan data dari form tersebut juga berhasil terkirim ke email yang dituju (dengan segala kesulitan yang sudah dapat saya bayangkan). Jadi apa yang “ketinggalan”?

Ada satu inputan form menggunakan “JQuery AutoComplete”. Jadi kalau kita ketik satu karakter huruf atau beberapa karakter saja, maka akan memunculkan secara otomatis daftar dari kata yang ingin kita masukkan. Karena bagian saya adalah bagian “engine”-nya, maka saya tidak membuatnya, sudah ada orang lain yang mengerjakan bagian tersebut. Jadi ketika form itu diberikan kepada saya untuk saya garap pada bagian prosesnya, saya membiarkan bagian inputan autocomplete tersebut apa adanya.

Padahal klien menginginkan data pada autocomplete tersebut memunculkan suatu daftar nama wilayah. Data daftar tersebut sudah diberikan dalam bentuk Excell ([dot]xlsx) siangnya, dan saya baru mengeahui pada malamnya. Jadi form yang saya anggap sudah fix itu, ada yang tertinggal. Maka saya pun berusaha untuk menyelesaikannya kembali malam itu. Sebenarnya mudah, bikin table baru di database dan masukkan data itu ke table tersebut, terus panggil. Masalahnya tidak mungkin mengentri data itu secara manual karena data tersebut ada puluhan ribu baris. Saya yakin, jika saya input manual satu-satu, sampai besok juga tidak akan selesai dalam kondisi badan segar bugar. Satu-satunya cara adalah dengan mengimport data tersebut ke MySQL melalui PhpMyAdmin. Namun, sebelumnya file-nya harus disimpan ulang terlebih dahulu dalam bentuk CSV (comma delimited), dan urutan kolomnya saya modif dengan menambahkan kolom “id” yang nantinya akan digunakan sebagai kolom PRIMARY KEY. 

Masalah datang, saat saya meng-import data tersebut melalui PhpMyAdmin, lama saya menunggu prosesnya, dan tiba-tiba proses itu berhenti dengan memunculkan pesan “Fatal error: Maximum execution time of 300 seconds exceeded in C:\xampp\phpMyAdmin\libraries\dbi\DBIMysqli.php on line 202”. Maksimun waktu mengeksekusi adalah 300 detik, saya sudah lebih dari 300 detik sehingga proses disetop. Saya sudah mengutak-atik file php.ini dengan menambahkan waktu eksekusinya dengan 3 ribu detik, tapi berulang kali tetap saja error. Dimana masalahnya? Wah, sementara malam semakin larut. Saya pun ngulik di google untuk mendapatkan “petunjuk”, sampai akhirnya saya pun mencoba menginstal “MySQL For Excell” untuk memudahkan proses impor dari Excell ke MySQL, tapi apa yang saya dapat? MySQL For Excell tidak dapat terinstalasi di komputer saya. Dua kali mencoba menginstal, dua kali gagal. Saya juga menginstal MySQL Workbench dan semua aplikasi dari MySQL seperti MySQL Server, MySQL Shell, Utilities, dan lain-lain, dan semua itu butuh koneksi internet dan paket data tentunya. Alhamdulillah, paket data dapat meng-cover, dan saya heran kenapa paket data saya belum habis-habis juga padahal sudah saya gunakan dari bulan kemarin (saya tidak pernah memperhatikan kartu perdana kuota yang saya beli di counter). Singkat cerita, problem saya dapat teratasi di MySQL Workbench (saya mematikan MySQL (MariaDB) bawaan XAMPP) dimana disitu ada fitur untuk import data csv. Alhamdulillah. Sekarang data yang puluhan ribu itu ada di dalam tabel database saya. Problem saya solved saat hari telah berganti menjadi waktu dinihari.

Step kedua, adalah bagaimana cara memanggilnya di autocomplete, dan ini adalah tantangan dari sisi codingnya. Saya belum pernah melakukan ini sebelumnya, tentu saja, saya kembali ngulik di Google, untuk meminta petunjuk. Step ini adalah bagian tersulitnya, karena datanya sangat-sangat banyak, puluhan ribu, dipanggil dalam satu waktu, akan memakan resource dan jika tidak kuat akan berakibat hang pada browser. Lalu apa solusinya? Yang terpikirkan oleh saya kemudian adalah bagaimana membatasi jumlah data yang terpanggil sehingga tidak terlalu membebani browser. Masalahnya saya tidak tahu, apakah saya perlu membatasinya waktu pemanggilan di query MySQL, atau saat data itu ditampilkan dengan JQuery? Saya kemudian mencoba mencari pengaturan pada autocomplete apakah memungkinkan bagi saya untuk memberinya batasan. Setelah mencoba dan menguliknya, saya menyerah karena disamping autocomplete tidak memiliki opsi tersebut, juga saya gagal dalam mengimplementasikan sintaks yang kira-kira bisa membuatnya memiliki batasan dalam menampilkan jumlah baris data. Akhirnya saya menemukan jawaban yang tepat bisa memberikan solusi untuk masalah saya. Masalah saya menjadi solved, namun tetap memberikan satu catatan karena kinerjanya kurang memuaskan. Terdapat jeda waktu dalam hitungan detik sebelum autocomplete-nya muncul, memang hal wajar karena semua itu tergantung pada kecepatan internet dan kinerja web browser yang kita miliki, selain karena masalah teknologi yang dipakai. Menangani data besar ada tekniknya, dan saya belum benar-benar menguasainya. Bagi saya, hasilnya kurang perfect, tapi karena sudah solved, setidaknya ya sudahlah lagipula klien sudah menunggu: harus selesai hari ini juga, dan saya terlambat beberapa jam karena saya menyelesaikannya ketika hari sudah terang, ketika matahari sudah meninggi tepat di tengah-tengah langit, jam sebelas ke atas. Gara-gara ini, saya jadi kekurangan waktu tidur.

Mengerjakan project dimana awalnya saya merasa keberatan saat dilibatkan karena tahu bahwa kapasitas diri saya kurang, tapi apa salahnya dicoba, dan akhirnya jadi tahu dan bisa belajar. Mengerjakan project menjadi sebuah pengalaman, meski terkadang hal seperti itu bisa dilupakan dengan mudah jika tidak dicatat atau di dokumentasikan. Ada banyak cara bisa dilakukan untuk membuat dokumentasi saat kita mengerjakan project, bisa dilakukan proses perekaman layar, membuat video pribadi, atau dituliskan ke dalam catatan-catatan. Saat mengerjakan project memang lebih diutamakan adalah yang benar-benar memiliki skill atau pengalaman sehingga proses pengerjaan menjadi lebih cepat, untuk kasus saya, jelas ini tidak baik, karena waktu menjadi boros. Saya memang tidak terlalu kompeten, tapi saya tidak pernah menyerah (Insya Allah), dan selama ini lebih dari tiga tahun di dunia pemrograman saya belum pernah menyerah ketika dihadapkan pada suatu kasus, dan kasus itu akan terpecahkan biasanya jika tidak hari ini, bisa esok hari, tapi suatu kasus tidak pernah menjadi kasus dalam waktu lebih dari 2 x 24 jam. Semua kasus itu, jawabannya semua ada di Google kecuali jika kita punya kasus untuk penggunaan versi terbaru, maka kita harus bertanya sendiri di salah satu forum seperti StackOverFlow atau pada laman official mereka. Dan kita bertanya dengan speak English, bagi orang yang seperti saya yang penggunaan Englishnya pasif, tentu akan kesulitan untuk berinteraksi secara langsung. Faktor bahasa menjadi suatu kendala. Maka, disinilah arti penting bahasa Inggris jika kita ingin menjadi seorang yang berkiprah dalam dunia teknologi khususnya web developer karena akan mudah mengakses konten luas yang berbahasa Inggris. Dan saya heran dengan diri saya sendiri, kenapa saya tidak bisa bahasa Inggris? Padahal apa yang saya kerjakan tidak pernah jauh dari penggunaan bahasa tersebut, dan setiap kasus saya selalu mencari problem solvingnya dengan menggunakan kata kunci berbahasa Inggris. Tak banyak tutorial penggunaan teknologi terbaru yang ditulis dalam bahasa Indonesia. Orang Indonesia yang punya masalah pun, larinya ke laman-laman berbahasa Inggris. 

Selama mengerjakan project ini, saya jadi tahu bagaimana menghosting Laravel, mengatur settingan email sehingga bisa digunakan untuk mengirimkan pesan, dan mencici sedikit kerja remote itu, meski saya merasa tidak melakukannya dengan menggunakan identitas personal. Kerja remote itu sebagian besar orang mengatakan menyenangkan dalam arti tidak perlu ke kantor. Kerja bisa dilakukan dimana saja. Di dalam rumah, di dalam kamar, di dalam kebun, taman, halaman, cafe, keadaan santai, selonjoran, duduk, atau dalam keadaan apapun, kita bisa melakukannya asal memenuhi deadline. 

Kalau saya, kerja remote atau jarak jauh itu kurang menyenangkan, entahlah mungkin pandangan ini akan berubah jika saya sudah merasakan bagaimana rasanya bekerja di dalam ruang kantor atau istilah kerennya onsite, atau ketika sudah memiliki keluarga di rumah. Kenapa dikatakan kurang menyenangkan? Saya punya masalah dengan waktu dan tempat. Saya tidak bisa melakukanya di ruang dimana disitu saya tidur, misalnya di kamar. Saya tidak bisa melakukannya di rumah, tempat saya mungkin akan mendapatkan gangguan seperti kunjungan teman, atau siapa saja. Rumah bukan tempat untuk bekerja dan melakukan aktifitas pekerjaan. Akan terasa tidak nyaman tentunya. Namun, rumah memang lebih baik ketika kita ingin lebih fokus di waktu tertentu yang lebih tenang semisal pada malam hari. Saya adalah penganut paham “meletakkan sesuatu pada tempat dan waktunya”, meski pun terkadang saya sering menabrak prinsip tersebut. Hal paling sulit adalah mood, kalau di rumah, mood itu bisa naik bisa turun, tapi kalau di tempat yang khusus untuk bekerja, mood itu mau tidak mau, akan terbentuk sendiri, memberi efek psikologis tertentu. Lingkungan yang pas akan membentuk mentalitas dalam berkreasi.

Ya, itu adalah cerita saya hari ini, pengalaman yang berharga. Cerita ini sebenarnya tidak penting untuk dibagikan, tapi saya merasa blog ini harus saya isi bagaimana pun caranya karena membiarkannya lama tak terisi tidak baik juga tentunya apalagi blog ini memerlukan modal domain untuk bisa terus “mengudara”. Menulis di blog dengan sibuk menulis coding adalah dua pekerjaan yang berbeda jenis dan sama-sama memakan waktu. Biasanya untuk menulis satu postingan saja, saya bisa memakan waktu hingga berjam-jam, antara satu, dua, hingga tiga jam tergantung pada kontennya. Menulis coding sendiri adalah pekerjaan utama untk menyelesaikan tugas yang ada, dan yang namanya tugas entah kenapa menjadi sesuatu yang lama-lama apabila kita mengerjakannya menjadi jenuh, mungkin saja karena kita memang belum sepenuhnya menginginkan atau ada hal lain yang terpikirkan. Satu hal yang penting adalah jaga kesehatan, coding itu penting tapi tetaplah untuk menjadi bagian dari kehidupan. Anda harus tetap untuk melakukan aktifitas lain, seperti makan dan tidur dengan cukup, serta kegiatan lain seperti mandi, dan sholat.

Comments