Membangun Skema Teknis yang Baik untuk Produk Startup (Bagian 1)
Kami berbincang dengan Risman Adnan tentang bagaimana mensinergikan berbagai unsur teknis dalam pengembangan produk startup
Ini adalah bagian pertama dari dua tulisan. Silakan simak tulisan bagian kedua di tautan ini.
Beberapa waktu lalu saya berkesempatan untuk mewawancara Risman Adnan yang saat ini menjabat sebagai Direktur Samsung R&D Institute Indonesia (SRIN). Pada sesi wawancara kali ini tema yang diperbincangkan ialah seputar bagaimana menciptakan pondasi kode yang baik untuk sebuah produk software di kancah startup. Saya mengawali pertanyaan dengan meminta pendapat terkait kematangan produk tech-startup yang ada di Indonesia saat ini. Hype startup yang kian bertumbuh, dan makin banyaknya penggelontoran funding menjadikan salah satu indikasi sektor ini berpotensi untuk dibawa go global.
Mengawali perbincangan ini Risman berujar:
“Jika funding adalah semangat utama sebuah startup, maka itu bukan awal yang baik untuk terciptanya produk yang berkualitas. Bahkan mungkin tidak ada relevansinya sama sekali.”
Menurut Risman funding terkadang memang menjadi komponen penting sebuah startup untuk scaling-up, tapi di saat starting-up banyak sekali hal lain yang harus lebih dipikirkan selain funding. Proses mengembangkan produk yang berkualitas, meluncurkan produk ke marketplace, mendapatkan pelanggan, belajar dari kesalahan, dan iterasi perbaikan. Semua kegiatan tersebut adalah proses mendasar untuk keberhasilan produk startup. Dalam menjalankan proses mendasar tersebut, para startup seperti sedang mengikuti sebuah perlombaan maraton, siapa yang paling siap, kuat dan cepat akan menang.
"Lalu apakah orang bisa ikut lari maraton dengan motivasi yang salah? Biasanya kelelahan di tengah jalan."
Produk yang berkualitas biasanya datang dari founder yang berkualitas, bahkan ide bisnis dan aspek teknologi pun mungkin menjadi faktor kedua karena sifatnya yang sangat dinamis. Demikian Risman menanggapi faktor terciptanya sebuah produk berkualitas untuk startup. Ia menegaskan:
“Saya selalu tekankan bahwa fisika dari proses membuat software adalah fisika dari orang-orang yang membuatnya.”
Founder yang berkualitas akan mencari segala macam cara untuk membuat produk berkualitas dari awal, semuanya harus benar dari awal. Dari visi bisnis mereka cenderung ‘keras kepala’, walaupun mungkin fleksibel dari sisi detail teknologi, tetapi sangat mengerti pentingnya teknologi dan dampaknya terhadap bisnis yang dijalankan.
“Ini bukan soal usia, tapi soal maturity in thinking, dan saya jarang menemukan founder seperti ini di Indonesia. Mungkin ada, tapi sangat sedikit, dan saya ingin sekali bertemu mereka.”
Tentu kita sepakat, bahwa membuat software berkualitas itu bukanlah hal yang mudah, terlebih kualitas juga tidak mudah untuk diuji. Di sisi lain tanpa adanya sebuah pengujian, tidak mungkin sebuah produk akan terlahir berkualitas. Pengujian tersebut menurut Risman tidak hanya seputar penggodokan konstruksi software (code), namun termasuk di dalamnya aspek bisnis dan operasional.
“Proses pengujian tersebut seperti ship-iterate marathon, yang membutuhkan konsistensi fokus dan energi lebih. Sayangnya gap antara engineer yang handal dan buruk sangat besar di industri software lokal, bahkan juga di level global."
Teknik dan metode untuk pengujian saat ini sudah cukup banyak, tetapi disiplin, motivasi dan interaksi dari individu pembuatnya yang akan menentukan kualitas akhir.
“Menilai kualitas produk biasanya dari menilai kualitas engineer yang membuatnya. Dan dari pemikiran saya pribadi, masih butuh waktu lama untuk menghasilkan engineer berkualitas di Indonesia. Parameternya terlalu banyak, tapi melihat perkembangan pasar yang ada saat ini saya optimis sosok-sosok berkualitas itu akan terlahir dalam 5-10 tahun ke depan. Mungkin sekarang mereka sedang melakukan kesalahan, dan saya berharap mereka belajar dari kesalahan tersebut,” pungkas Risman.
Hukum mendasar yang harus diikuti para founder dan engineer untuk menghasilkan produk software yang berkualitas
Banyak faktor yang berpengaruh untuk sebuah kesuksesan produk startup yang harus diikuti dari proses menginisiasi hingga eksekusi. Menariknya, bagi Risman, hal yang paling mendasar justru bukan terkait apakah itu pemrograman berbasis obyek atau prosedural atau fungsional, bukan pula tentang Agile/SCRUM, Pair atau Extreme Programming. Menurutnya semua itu hanya metode dan teknik untuk membantu konstruksi dan pengujian software yang dapat dipilih saat dibutuhkan, karena semua akan kembali ke faktor terpenting, yakni people.
Dari yang disampaikan Risman, terangkum tiga proses mendasar yang dapat diikuti untuk terciptanya produk software berkualitas, yaitu:
1. Hire great engineer
Mereka yang patut direkrut adalah orang-orang yang memiliki pondasi analitik kuat, kemampuan pemecahan masalah, keterampilan membuat kode, disiplin, fokus, semangat, memiliki rasa ingin tahu, memiliki motivasi dan ambisi. Terkait poin ini, Risman menyampaikan, “Angka pribadi saya, minimal 40 persen kualitas datang dari faktor ini. Bukan hanya dari aspek individual perorangan, tetapi juga secara kolektif dalam satu tim."
2. Set engineering culture
Kultur ini bukan soal teknologi, tapi soal prinsip-prinsip dasar yang menyatu dengan aktivitas keseharian tim. Bukan pula konsep teoritis, tapi mindset dan aktivitas yang dilakukan secara terus menerus. Karena ini mencakup culture of learning, engineering, communication, trust, time management dan lain-lain. Menurut Risman faktor ini berpengaruh 30 persen terhadap kualitas produk.
3. Commitment to the right process
Ini bukan soal metodologi mana yang terbaik atau tools yang paling mahal, tetapi metodologi dan tools mana yang paling sesuai dengan people dan culture startup, yang dapat memfasilitasi proses mencakup fase perencanaan, analisis, desain, konstruksi, pengujian dan iterasi perbaikan. Hal ini menurutnya berpengaruh 30 persen terhadap kualitas produk, namun lebih dinamis, karena terkadang persentase tergantung pada tipe proyek yang dikerjakan.
Definisi tradisional kualitas di level kode adalah ketepatan dan efisiensi
Faktanya dalam sebuah startup, bahkan korporasi sekalipun, tidak mudah untuk mendapatkan engineer yang mampu menulis kode dengan benar, apalagi efisien. Dikatakan Risman dasar dari penulisan kode yang benar adalah pengetahuan terhadap building blocks yang digunakan, karena program tidak berjalan dalam vacum (OS, runtime, language, library, framework), dan yang paling penting tetapi sering diabaikan adalah desain dan spesifikasi dari kode. Risman mengatakan:
“Kesalahan yang sering dilakukan adalah memiliki pola pikir bahwa progres yang nyata dihasilkan dari kecepatan kode yang dihasilkan, bukan pemahaman masalah serta ketelitian desain dan spesifikasi. Istilah umum untuk fenomena ini adalah -code first, think later- atau hajarrr blehhh!!!!”
Engineer yang baik akan meluangkan cukup waktu untuk benar-benar memahami domain masalah, melakukan pembandingan bagaimana engineer lain menyelesaikan masalah yang sama (biasanya dengan membaca buku, artikel atau paper), dan dengan pengetahuannya ia akan mendesain code based, toolset dan shared library/framework serta menuangkannya ke dalam spesifikasi yang dipahami oleh tim sebelum konstruksi dimulai. Namun hal-hal dasar tersebut malah sering yang diabaikan oleh startup, mungkin karena terbatasnya engineer atau memang kurang diprioritaskan, atau dikejar timeline.
“Terkesan ideal, lambat dan tidak praktikal, tetapi menurut pendapat saya hanya itu satu-satunya jalan untuk menulis kode yang benar. Anda akan sangat terkejut jika mengetahui sebesar apa kesalahan kode bisa terjadi tanpa desain yang benar.”
Teknik pemrograman yang ada saat ini berkembang begitu cepat, dan pekerjaan engineering saat ini menurut Risman adalah membangun sesuatu di atas sesuatu yang sudah pernah ada bersama orang-orang yang sangat mungkin membuat kesalahan. Jika menyangkut kualitas, menurutnya jangan pernah berpikir bahwa coder adalah orang yang paling cerdas di ruang kerja, karena mungkin sebaliknya. Dan yang paling penting adalah setiap tim pengembang harus terus berevolusi dan memperbaiki diri agar menjadi lebih baik dalam desain kode.
Efisiensi kode adalah fitur yang didesain oleh engineer, bukan hadiah pemilihan library dan framework
Efisiensi kode menjadi hal mendasar yang tak kalah pentingnya. Hal ini mencangkup dengan apakah kode yang dihasilkan bekerja secara efisien dengan performa yang dapat diterima oleh pengguna. Untuk menghasilkan kode yang efisien tentu engineer harus dibekali dengan pengetahuan mendalam mengenal algoritma dan building blocks, terutama yang terkait langsung dengan performa.
“Sering kali saya temukan masih banyak engineer yang tidak bisa membuat data structure dan memilih algoritma search atau sorting yang efisien. Mereka memiliki ketergantungan pada fitur library dan framework yang digunakan tanpa mengenal karakteristik dari fitur yang mereka gunakan,” kata Risman.
Ia melanjutkan, “Diskusi yang sering terdengar adalah seputar pilih mana antara Java vs .NET, Scala vs Erlang atau Python vs Ruby. Ingat bahwa efisiensi kode adalah fitur yang didesain oleh engineer, bukan hadiah dari pemilihan library dan framework.”
Banyak yang berpikir untuk bisnis di level startup faktor tersebut di atas bisa disusun ulang untuk menjadi prioritas setelah beres dalam urusan monetisasi. Setelah menghasilkan revenue baru merekrut lebih banyak engineer untuk refactoring dan optimization.
Bagi Risman hal ini mungkin juga adalah hal yang benar. Jika mereka benar-benar yakin akan bisnisnya, untuk merilis MVP (Minimum Viable Product) yang diterima konsumer hal-hal fundamental seperti ini tidak akan disepelekan, karena bisa merusak bisnis itu sendiri. Sampai level tertentu harus dipikirkan, tetapi tidak perlu over-thinking.
Risiko terbesar adalah ketika menyangkut core business dan operation, ketika software bermasalah dan bisnis tidak beroperasi dengan efisien
Diceritakan oleh Risman, bahwa ada kemungkinan biaya perbaikan satu bug dalam sebuah software akan sama atau lebih tinggi dari biaya produksi secara keseluruhan yang sudah berjalan sebelumnya. Satu bug tersebut mungkin kesalahan kecil pada kode, tetapi bisa menurunkan kepercayaan konsumer secara derastis. Selama bisnisnya belum menghasilkan revenue besar dari produk tersebut mungkin tidak terlalu risau karena masih terus bisa diperbaiki. Tapi untuk bisnis besar yang sudah berjalan risikonya sangat tinggi.
“Salah satu bank di Indonesia pernah terganggu operasinya selama tiga hari karena kesalahan estimasi network load dan kodenya tidak didesain untuk itu. Atau Anda mungkin pernah mendengar layanan online commerce yang fraud dan memiliki kesalahan logika program? Itu sudah biasa.”
Penting bagi sebuah startup untuk menjadikan kesiapan membuat kesalahan dan kiat menghadapi masalah sebagai mindest utama. Jangan takut membuat kesalahan karena itu sangat normal, selama bisa belajar dan terus memperbaiki. Penulisan kode yang benar dan efisien harus dipikirkan untuk mendukung inti utama dari bisnis.
Menurut Risman, beberapa geeky founder sering over-thinking di sisi teknis, tetapi under-thinking di sisi bisnis. Business is all about fun and profit. Kesenangan geeky founder adalah membuat kode sebaik mungkin tetapi tidak banyak meluangkan waktu untuk memikirkan bisnis utamanya. Mereka akan dapatkan fun, bukan profit.
“Faktanya memikirkan profitability jauh lebih sulit dalam pengalaman saya. Hanya orang-orang yang stubborn di sisi bisnis yang fun melakukannya, tetapi mereka sering bekerja dengan orang-orang yang stubborn untuk fun di sisi kode. Ini harus diseimbangkan dalam maraton startup. Cerate, ship, make mistake, learn, fix improve and iterate. The fastest in that process will win,” pungkas Risman.
Sign up for our
newsletter