Makna pragmatic
Sebelum membahas mengenai pragmatic programmer, kita harus mengerti apa yang dimaksud dengan pragmatic. Siapapun bisa googling untuk mencari tahu apa yang dimaksud dengan kata “pragmatic”. Tapi saya mencoba untuk mendemostrasikan apa yang dimaksud dengan pragmatic yang sebenarnya.
Anggap saja ada yang bertanya ke kita “Jam berapa sekarang?”.
Secara literal, orang tersebut benar-benar menanyakan jam berapa saat ini. Maka tanggapan kita adalah memberitahukan sekarang jam berapa dengan menjawab “sekarang jam tujuh malam”.
Akan tetapi secara pragmatis, bisa jadi orang tersebut menanyakan “kenapa kamu terlambat datang?”. Oleh karena itu alih-alih memberitahukan jam berapa saat ini, kita menjelaskan alasan mengapa kita datang terlambat.
Atau anggap saja ada yang bertanya ke kita “bisakah kamu memberikan kecap manis itu ke saya?”.
Secara literal, orang tersebut menanyakan apakah kita bisa memberikan kecap manis yang ada di depan kita ke dia. Maka tanggapan kita secara literal adalah menjawab “ya” atau “tidak”.
Tetapi jika kita bersikap pragmatis, kita paham bahwa yang dimaksud sebenarnya adalah “Maukah kita memberikan kecap manis tersebut ke dia?”. Maka alih-alih kita menjawab “ya” atau “tidak”, maka kita langsung memberikan kecap manis itu ke orang yang bertanya tersebut.
So, what makes a pragmatic programmer?
Setiap developer itu unik. Mereka memiliki kelemahan dan kelebihan masing-masing. Mereka memiliki preferensi dan ketidaksukaan masing-masing. Seiring waktu, mereka menciptakan lingkungan pribadi mereka sendiri.
Lingkungan itu akan mencerminkan kepribadian developer sama kuatnya seperti halnya hobi, pakaian, hingga potongan rambutnya. Namun, jika kita seorang programmer yang pragmatis, kita akan terlihat memiliki karakteristik seperti berikut ini:
Early adopter/fast adapter
Kita memiliki naluri terhadap teknologi dan suka mencoba berbagai hal. Ketika diberi sesuatu yang baru, kita dapat menangkapnya dengan cepat dan mengintegrasikannya dengan seluruh wawasan yang kita punya. Our confidence is born of experience.
Memiliki keingintahuan yang sangat tinggi
Kita cenderung bertanya “wow kodemu rapi sekali. bagaimana caramu melakukannya? Apakah kamu memiliki masalah dalam menggunakan library tersebut? Lalu, bagaimana cara implementasinya ya?”. You are a pack rat for little facts, each of which may affect some decision years from now.
Critical thinker
Kita jarang menerima pekerjaan tanpa diberikan maksud dari apa yang akan dikerjakan terlebih dahulu. Ketika kita mendapatkan sebuah pekerjaan, lalu atasan kita berkata “pekerjaan ini harus dilakukan karena akan memberikan solusi ke banyak orang”, mulailah kita mencium pekerjaan tersebut sebagai tantangan.
Realistic
Kita mencoba memahami root cause dari setiap masalah yang kita hadapi. Karakteristik realistis ini memberi kita perasaan yang baik tentang betapa sulitnya berbagai hal, dan berapa lama hal itu akan terjadi. Memahami bahwa suatu proses harus sulit atau akan memakan waktu cukup lama untuk diselesaikan, memberikan kita kekuatan dan perhitungan yang tepat untuk tetap melakukannya.
Orang yang serba tahu (generalis)
Kita berusaha keras untuk terbiasa dengan berbagai teknologi dan lingkungan, dan kita berupaya untuk mengikuti tren teknologi baru. Meskipun pekerjaan kita saat ini mengharuskan untuk menjadi seseorang yang spesialis, kita akan selalu dapat pindah ke bidang dan tantangan baru.
Selain keempat karakteristik di atas, ada dua tips dasar yang menjadikan diri kita sebagai programmer pragmatis:
- Care about your craft
Tidak ada gunanya mengembangkan software atau aplikasi, kecuali kita melakukannya dengan kepedulian dan kehati-hatian.
- Think! about your work
Alih-alih berpikir untuk menjadi pragmatis programmer, lebih baik berpikir terhadap apa yang kita kerjakan hari ini. Fokus terhadap yang proyek yang kita kerjakan sekarang. Never run on autopilot. Teruslah berpikir, selalu kritis terhadap pekerjaan kita. Secara tidak langsung, kita telah menerapkan mantra programmer pragmatis: THINK.
Individual yang pragmatis di tim yang besar
Beberapa orang merasa bahwa tidak ada ruang untuk individualitas di tim yang besar atau di proyek yang kompleks. Mereka bilang “software construction is an engineering discipline. Hal itu akan rusak jika salah seorang dari tim tersebut membuat keputusan untuk diri mereka sendiri”.
Hal tersebut sangat tidak benar.
The construction of software should be an engineering discipline. Namun, ini tidak menghalangi keahlian tiap individu. Coba bayangkan sebuah museum yang dibangun pada saat ratusan tahun yang lalu. Pekerjaan pembangunan tersebut dilakukan puluhan, atau mungkin ratusan orang, yang tersebar di beberapa dekade. Lalu pekerjaan tersebut dilanjutkan ke orang yang berbeda tiap dekadenya. Keilmuwan dalam membangun museum tersebut juga berkembang tiap dekadenya, sehingga pekerja yang melanjutkan pembangunan tersebut memiliki keilmuan yang berkembang. Tiap individu dari pekerja tersebut dapat berkontribusi dengan kemampuan individu yang dia miliki, tanpa harus mengesampingkan kemampuannya sebagai bagian dari tim yang membangun museum tersebut.
Poinnya adalah proses yang berkelanjutan
Seorang turis yang mengunjungi Kebun Raya Bogor bertanya kepada tukang kebun bagaimana dia membuat rumput di taman tersebut begitu indah. “Gampang sekali”, kata tukang kebun tersebut. “Kamu cukup menyiraminya tiap hari, memotongnya setiap sore, dan membersihkan kotoran di sekitar rumput tersebut seminggu sekali”.
“Hanya itu?”, kata turis tersebut.
“Tentu saja”, jawab tukang kebun dengan santai. “Lakukan sepuluh tahun dan kamu akan memiliki halaman yang bagus”
Untuk membuat rumput yang indah di halaman rumah seperti halnya rumput yang adai di Kebun Raya Bogor, membutuhkan cukup sedikit perawatan yang dilakukan setiap hari secara konsisten. Begitu pula dengan dengan programmer yang hebat.
Perusahaan konsultan di Jepang sering kali mengucapkan kata kaizen dalam percakapannya. “Kaizen” dalam istilah jepang adalah sebuah konsep terus-menerus melakukan perbaikan kecil. Hal itu dianggap sebagai salah satu alasan utama mengapa industri manufaktur di Jepang mengalami peningkatan yang cukup drastis dalam hal produktifitas. Sehingga konsep tersebut disalin secara luas di seluruh dunia.
Kaizen juga berlaku untuk individu.
Setiap hari, niatkan diri kita bekerja untuk menambah skill yang kita miliki secara terus menerus, meskipun dalam skala yang kecil. Berbeda dengan rumput di Kebun Raya Bogor yang perlu waktu puluhan tahun, kita akan segera melihat hasilnya dalam hitungan hari. Selama bertahun-tahun, kita akan kagum bagaimana pengalaman kita telah berkembang dan skill kita juga jauh meningkat dari sebelumnya.