It works on my machine
Qwertyuio : Ok, gue cek
(5 minutes later..)
Qwertyuio : Kok masih error?
Asdf : Lah ini di laptop gue bisa
Qwertyuio : Ah, tepu-tepu lu
Asdf : Coba nih liat sendiri, bisa kan..
(kemudian hening)
Yaa.. begitulah kira-kira percakapan yang sudah tidak asing
lagi di telinga. Gimanapun juga It Works on my machine bukan patokan sebuah pekerjaan bisa dianggap selesai, dan juga ga akan bisa dijadiin alasan pembelaan apapun, kecuali itu program cuman dipake buat komputermu doang. Drama-drama tentang "it works on my machine" tapi di
tempat lain ga jalan, "it works in development" tapi di production error
#NahLo! Kenapa tuh? Berikut akan kita bahas beberapa masalah dan solusinya :
1. Source Code
Jaman dulu nih sebelum negara api menyerang, hari ini client minta A besok minta
B lusa minta dibalikin ke A lagi, dan Alhamdulillah itu coding belum dibackup
dari sebulan yang lalu and that means harus coding ulang buat bisa balikin ke A
#nangisbombay. Kisah yang perih ini semakin menjadi ketika project yang
ditangani mempunyai skala lebih besar dengan tim coder lebih banyak. Kebayang dong ya ngoding sendiri aja ribetnya kaya gitu apakabar kalo coding rame-rame? Masalah sourcecode adalah one of the most biang kerok dibalik keributan antar programmer, ketika satu solution/satu project bahkan satu file dikeroyok bareng, yang satu ngerubah apa satunya ngehapus apa satu lagi nambahin apa tiba-tiba error aja. Hingga akhirnya tau yang namanya sourcecontrol, pertama
pake nyobain Tortoise SVN, kemudian saat ini beralih ke TFS, and maybe github will
be the next one. Nah diantara manfaatnya nih :
- Versioning yang rapih dan
traceable
- Backup/restore semudah dan secepat
menjetikkan jari tangan
- Menghindari perbedaan
keyakinansourcecode antar tim member
Semenjak pakai Sourcecontrol say good bye buat drama-drama lupa naruh coding dimana, uda ngerubah apa aja, bagian manaya, bingung mana file yg latest, ga bisa balikin ke versi sehari/sebulan/setahun lalu, salah-salahan siapa yang ngerubah ini itu, daan lain-lain. Pokoknya buat siapapun, siapapun yang belum nyobain ini barang ajaib you should try men! it will save you a lot.
2. Database
Selain
sourcode, diakui atau tidak database adalah salah satu penyebab masalah drama
tersebut, entah itu tentang skema maupun data. Setelah kenal dengan sourcecontrol untuk sourcecode, metode yang dipakai untuk sync database adalah dengan cara
setiap ada perubahan kita generate script, kemudian script tersebut dibuatkan
satu folder khusus pada sourcecontrol agar bisa dicommit/update setiap saat. Cara
yg uda better namun masih setengah manual sampai akhirnya pertemuan dengan RedGate itupun terjadi. Pertama dia punya SQL Compare dimana kita bisa melihat
perbedaan skema, struktur table, stored procedure, hingga data diantara 2
database, yang kedua dia punya SQL Source Control dimana bisa kita
sambungin dengan SourceControl yang kita pakai serta ada plugin buat langsung
nempel di SQL Server. Keyyen ga tuh? Hayuk melipir ke websitenya buat yang
pengen tau lebih jauh http://www.red-gate.com/products/
3. Environment
Dan
inilah yang paling bikin puyeng, karna nyari kutunya ga semudah urusan
sourcecode/database. Kalo udah nyangkut masalah environment emang ribet bin njlimet, sampai disinilah biasanya saya melambaikan bendera putih sebagi
seorang yang anti-rempong dengan setting ini-itu (hahaha, maunya
cuss langsung coding ajah). So far yang bisa dilakukan untuk
memiliki environment yg sama persis antara developer yang satu
dengan developer yang lain sehingga terhindar dari hal-hal yang
menimbulkan slek adalah menggunakan Virtual
Machine. Oh iya akhir-akhir ini juga lagi jaman teknologi container yang diusut oleh Docker, dimana
dia menyediakan platform terbuka untuk developer maupun sysadmin agar dapat
membangun, mengemas, dan menjalankan aplikasi dimanapun sebagai sebuah wadah
(container) yang ringan. Kalau penasaran silahkan googling untuk lebih
lengkapnya, saya sih cukup sampai disini saja buat masalah ini hehehe
#GengAntiRempong
Selain 3 hal diatas, kemungkinan perbedaan masih bisa
terjadi karna berbagai hal seperti masalah networking atau bahkan hal-hal nonteknis seperti miss-komunikasi. Namun semoga dengan
perkembangan teknologi yang semakin baik sampai hari ini masalah “it works
on my machine” bisa diminimalisir. Ok, sampai jumpa di artikel berikutnya rukun-rukun ya sama tim membernya :D