ah, teori!

kali ini, saya sedang ingin menulis tentang sesuatu yang sudah agak lama menunggu dalam pikiran saya. tidak mengganggu sih. tapi berhubung saya sering bersinggungan dengan kontradiksi terkait teori dan praktek dan dikotomi yang meliputinya (kamu ngomong apa sih yud?), maka jadilah topik kali ini untuk tulisan kali ini.

teori. praktek. ah, sebenarnya bagaimana sih ini?


“in theory, there is no difference between theory and practice. in practice, there is.”

 

sedikit anekdot, sedikit pengantar

beberapa waktu yang lalu di tempat kerja, saya memberikan beberapa kopi bahan untuk dipelajari seorang rekan dalam tim. sebenarnya kalau dibilang seperti itu juga bukannya saya mengajar juga sih, kira-kira ini lebih ke arah persiapan sebelum mulai engagement dalam pekerjaan berikutnya.

topik saat itu tentang pendekatan untuk pengembangan perangkat lunak untuk pekerjaan yang baru akan dimulai. kebetulan anak ini seorang gadis support engineer, sedikit junior di bawah saya, jadi suasananya relatif santai.

“kalau aku sebenernya nggak suka kebanyakan teori sih,” katanya. “langsung praktek aja kalau bisa.”

saya ingat saya sedikit mengangkat alis. bukan kenapa-kenapa, tapi berhubung saya juga sudah cukup sering mendengar ungkapan senada dari lebih cukup banyak orang, jadi bagaimana, ya.

“bisa sih kalau mau langsung,” kata saya. “tapi ini sesuatu yang jangka panjang, jadi mending belajar dulu konsepnya. kalau ditanya ‘bisa apa enggak’, bisa. banyak orang langsung mulai, tapi pemahamannya keropos. jadinya nggak bagus. susah juga.”

setelahnya saya sedikit cerita bahwa cukup banyak pengembangan perangkat lunak yang dikembangkan secara serabutan, dan bagaimana hasilnya jauh dari sempurna dan sering malah tidak selesai, dan bagaimana kami tidak perlu melihat jauh-jauh untuk menemukan contoh yang, kalau menurut saya, ‘kekurangberhasilan yang tidak perlu’. di sekitar kami juga banyak kok.

bukan karena teori itu jadi serba sempurna dan harus selalu diikuti, kata saya. tapi kalau fondasinya saja nggak bagus, kita nggak akan bisa menghasilkan sesuatu yang berkualitas.

setidaknya, demikian yang saya coba ungkapkan. entah apakah ini sesuatu yang bisa dengan mudah dipahami atau tidak, sih.

setelahnya, mau tidak mau saya jadi kepikiran juga.

 

dilema ‘teori’ dan ‘praktek’

sejujurnya, kadang ini sedikit dilema buat saya.

di satu sisi, saya paham bahwa kemampuan abstraksi dan dasar teoretis dalam pekerjaan teknik adalah hal yang seringkali dianggap ‘buang-buang waktu’. tapi di sisi lain —dan ini sesuatu yang sudah saya lihat, dengar, dan alami sendiri— dalam pekerjaan yang sifatnya teknik, tidak banyak hal yang lebih berbahaya daripada implementasi dengan pemahaman yang keropos dan setengah-setengah.

contoh, misalkan saya seorang arsitek. ada dasar ilmu bagaimana aliran pipa harus dibangun, berapa kemiringannya, kenapa seperti itu. ada saatnya kita harus menggunakan fondasi tipe tertentu, desain seperti apa yang optimal secara jumlah material per harga. itu bukan sesuatu yang bisa sembarangan diabaikan.

demikian juga kalau misalnya saya seorang insinyur mesin, saya tidak bisa sembarangan memutuskan bahwa baut roda bisa dikurangi satu atau bahwa saya bisa sembarangan memasang jumper pada aki mobil. saya tahu cara seperti itu akan bisa membuat mobil berjalan, tapi kan jadi berbahaya!

menurut saya, ini termasuk hal-hal yang membedakan antara tukang dan arsitek, atau montir dan insinyur. bukan berarti salah satu jadi lebih tidak penting, tapi bahwa untuk setiap pekerjaan yang sifatnya teknik, betapapun pragmatisnya, ada pakem dan teori yang tidak bisa sembarangan diterapkan tanpa pembelajaran secara serius. ada dasar pengetahuan yang dibentuk dari pengalaman-pengalaman orang lain, sehingga menjadi teori yang bisa diuji dan direplikasi.

walaupun, ya, memang mudah sekali untuk mengabaikan hal tersebut demi sebuah asumsi: ‘ah, yang penting ini bisa jalan dulu!’

 

jadi, sebenarnya ‘teori’ itu apa sih?

seorang dosen di mata kuliah Manajemen Proyek dulu dengan ringkas mengungkapkan sudut pandangnya sebagai berikut.

“betul, pengalaman itu adalah guru terbaik. orang-orang cerdas belajar dari pengalaman. tapi lebih baik lagi kalau kita bisa belajar dari pengalaman orang lain.

teori itu kan pengalaman-pengalaman orang, bertahun-tahun, terkristalisasi jadi bidang ilmu, sehingga bisa kita terapkan.”

sebagai seseorang yang dulu berpendapat bahwa ‘apapun bisa dilakukan kalau kita tahu caranya’, mau tidak mau omongan tersebut membuat saya sedikit terperangah. soalnya, ya, benar juga sih. sudah ada orang-orang yang lebih dulu mencoba, sudah ada hasilnya, sudah diketahui pendekatan mana yang lebih sering berhasil dan mana yang kurang sering berhasil, kenapa juga tidak berkaca dari pengalaman yang sudah ada?

kalau kita bicara sains (dan teknik sebagai turunannya), sebuah teori baru bisa dianggap teruji kalau bisa direplikasi. diulang-ulang, ditemukan polanya. teori itupun bisa diperbaiki dan dimodifikasi sekiranya ada pola baru yang tidak sesuai, demikian proses pengujiannya juga tidak bisa asal-asalan. sehingga dengan demikian, proses bertindak kita terbentuk dengan mengikuti kaidah-kaidah yang selalu mengalami proses uji dan evaluasi.

tentu saja ini membawa kita ke masalah berikutnya…

 

tapi kan nggak semua teori itu bisa diterapkan!

pada dasarnya, hal ini memang jawabannya sederhana: ya memang seperti itu. bahwa ada perbedaan antara teori dan praktek, semua orang juga tahu. secara ringkas, kita semua juga paham: “in theory there is no difference between theory and practice. in practice, there is!”

tapi di sisi lain, justru karena yang namanya teori itu tidak bisa diterapkan semua, makanya perlu dipahami. kenapa seperti itu? karena ketika kita bisa memahami dasar ilmu atau landasan teori secara komprehensif, kita bisa dengan mudah memilah-milah mana yang bisa diterapkan dan mana yang tidak, dengan trade-off dan resiko untuk masing-masing keputusan.

contoh sederhananya begini. dalam teori pengembangan perangkat lunak, misalnya, yang namanya pengujian (= ‘software testing’) itu hal yang mutlak harus dilakukan. secara ideal, ada dokumen-dokumen yang dibuat, ada langkah-langkah yang jelas diperlukan, ada banyak teknik dan pendekatan. tapi ketika dihadapkan dengan keadaan di lapangan, tidak selalu bisa dilakukan. ada kendala resource terbatas, tenggat waktu yang ketat dan sebagainya. lantas apa berarti sebuah perangkat lunak tidak perlu diuji? ya tidak bisa juga.

oleh karena itu, ada keputusan-keputusan yang harus diambil. seperti apa syarat minimal kualitas yang dibutuhkan? bisakah dikurangi di sini atau di sana, resikonya apa? kalau misalnya saya mengembangkan perangkat lunak untuk reaktor nuklir, mau tidak mau saya akan harus melakukan pengujian secara tuntas. resikonya terlalu tinggi! tapi kalau misalnya saya sebatas membuat perangkat lunak yang tidak mission-critical, resiko sampai batas tertentu bisa ditoleransi.

di sini, fondasi yang solid tentang dasar ilmu seorang insinyur atau dokter, misalnya, akan memudahkan pengambilan keputusan tentang mana yang harus dikorbankan, mana yang bisa ditinggalkan, sebesar apa resiko yang mungkin timbul dengan pilihan tidak ideal yang akan diambil. jadi ada semacam disonansi di sini, bahwa semakin seseorang paham akan landasan keilmuannya, semakin dia bisa paham kapan dia bisa bertindak tidak sesuai teori atau tulisan di buku.

karena, ya memang benar, teori itu tidak selalu bisa untuk semua keadaan. sederhananya sih, kalau menurut saya, anda baru bisa dianggap paham teori kalau anda tahu kapan harus melanggarnya.

nah, bingung kan? coba baca lagi makanya. :mrgreen:

 

jadi?

teori itu penting. praktek itu penting. hasil itu penting.

tapi kalau ditanya apakah jadinya sesederhana ‘kalau paham teori dan bisa mempraktekkannya, hasilnya akan bagus’, ya belum tentu juga. manusia punya keterbatasan, makanya pengalamannya juga terbatas, makanya ilmu pengetahuan juga terbatas. tapi setidaknya, ada resiko-resiko yang bisa diminimalisir, ada metode yang terstruktur sehingga kita bisa mendapatkan hasil yang lebih terukur. jadi, kemungkinan berhasilnya juga lebih tinggi, seperti itu kira-kiranya sih.

bottom line-nya, teori adalah pengalaman-pengalaman orang lain. praktek adalah pengalaman-pengalaman kita sendiri. tidak selalu pengalaman orang sesuai pengalaman kita, tapi seringnya, hampir selalu ada yang bisa dipelajari dari pengalaman orang-orang yang sudah berhasil duluan.

jadi dengan demikian, kita tidak perlu bingung dan muter-muter di jalan yang sama lagi, gitu lho.