Dalam setiap proyek pengembangan software, kita mengenal istilah investasi untuk Pengembangan. Sederhananya, kita melakukan sebuah effort besar di awal dengan biaya tertentu, dengan harapan ke depannya, kita bisa menurunkan biaya rutin. Ada sebuah konsep yang sama pentingnya dengan strategi investasi, namun sering kali diabaikan oleh para founder startup, yaitu technical debt (atau boleh dibilang hutang teknis). Anda bisa memandangnya sebagai sisi lain dari dua mata uang investasi, dan hal ini begitu penting dalam melaksanakan inovasi digital.
Technical debt menjadi sesuatu yang memerlukan perhatian dan pemahaman kita yang seharusnya dianggap sama pentingnya dibanding tren terkini dalam investasi digital. Dalam artikel ini, kita akan memulai perjalanan untuk mengungkap misteri technical debt, memahaminya dengan lebih baik seiring pemahaman kita tentang investasi di lanskap digital.
Analogi Technical Debt
Bayangkan kita sedang membangun istana pasir di pantai. kita memulai dengan fondasi yang kokoh dan secara bertahap membentuk pasir menjadi struktur yang rumit. Namun, saat itu kita terburu-buru untuk menyelesaikannya dan memutuskan untuk mengambil jalan pintas, menggunakan pasir lembap yang lebih mudah dibentuk tetapi sebenarnya tidak terlalu kokoh. Pada awalnya, istana pasir ini sangat disukai karena cepat untuk dibangun dan terlihat cukup kokoh. Namun seiring berjalannya waktu, kita menyadari bahwa istana pasir kita terkikis lebih cepat dari yang diperkirakan. Hal ini terjadi karena kompromi yang kita buat sebelumnya. Kompromi tersebut (menggunakan pasir lembap) adalah utang teknis (technical debt) dalam dunia pengembangan Software.
Technical debt dapat diibaratkan seperti mengambil jalan pintas ketika membangun perangkat lunak. Sama seperti istana pasir, kita mungkin menghemat waktu pada awalnya, namun kita harus membayar harganya nanti, dan biasanya bersifat recurring (rutin).
Terdengar familiar? Ya, hutang teknis adalah kebalikan dari investasi. Investasi membutuhkan biaya di awal yang nantinya akan mengurangi biaya rutin ke depannya. Hutang teknis muncul dari penghematan biaya pada awalnya yang nantinya akan meningkatkan biara rutin ke depannya.
Hutang Teknis: Kebalikan dari Investasi
Sekarang, mari kita membalikkan keadaan dan menghubungkan utang teknis dengan investasi. Saat kita menginvestasikan uang kita, kita memasukkannya ke dalam aset yang kita harap akan tumbuh seiring berjalannya waktu – misalnya saham, obligasi, atau real estat. Dalam pengembangan produk digital, ketika kita menginvestasikan waktu dan sumber daya untuk menciptakan kode berkualitas tinggi, arsitektur yang solid, dan solusi yang efisien, pada dasarnya kita sedang membangun aset untuk masa depan. Aset-aset ini akan memberikan hasil dalam hal pemeliharaan yang lebih mudah, pembaruan yang lebih cepat, dan skalabilitas yang lancar.
Sebaliknya, hutang teknis muncul ketika kita membuat pilihan yang mungkin tampak bermanfaat dalam jangka pendek namun menghambat kelangsungan produk kita dalam jangka panjang. Ini mirip seperti keengganan berinvestasi. Di awal memang tidak masalah, namun keep in mind bahwa kita memiliki hutang! Hati-hati dalam mengkompromikan sesuatu yang mungkin memberi kita keuntungan cepat namun pada akhirnya membahayakan stabilitas di masa yang akan datang.
Technical Debt pada Startup
Ada beberapa technical debt yang umum dilakukan para hacker startup:
- Tidak Adanya Dokumentasi: Saat startup sedang berusaha untuk cepat meluncurkan produk, dokumentasi sering kali dikesampingkan. Sebenarnya tidak apa-apa, namun paling tidak, ada penjelasan tentang API-API ataupun asset template yang digunakan. Kode yang tidak terdokumentasi dengan baik dapat menyebabkan kesulitan untuk skalabilitas di saat pengembang baru ingin berkontribusi. Biasanya, tidak adanya dokumentasi menyebabkan waktu adaptasi developer baru jadi jauh lebih lama hanya untuk memahami bagaimana komponen-komponen penting bekerja.
- Perbaikan Sementara (Quick Fixes): Di tengah tekanan untuk merilis fitur-fitur baru dengan cepat, pengembang mungkin mengambil jalan pintas dengan mengimplementasikan solusi cepat yang tidak sepenuhnya sesuai dengan arsitektur atau standar yang ada. Ini dapat menghasilkan spageti (kode yang rumit), sulit untuk dimengerti, dan rentan (tidak robust) terhadap masalah mendatang.
- Ketergantungan pada Teknologi Tertentu: Memilih teknologi tertentu hanya karena cepat atau populer pada saat itu, tanpa mempertimbangkan bagaimana teknologi tersebut akan berkembang. Pertanyaan yang paling penting adalah atau apakah teknologi tersebut cocok untuk kebutuhan jangka panjang, atau malah menciptakan hutang teknis.
- Keamanan yang Terlupakan: Jika fokus pada keamanan pada awal pembangunan, akan sangat lama bagi startup untuk mendeliver solusi. Hal ini menimbulkan beberapa kerentanan (mungkin kecil) yang ada pada produk. Padahal, memperbaiki kerentanan keamanan di kemudian hari bisa jauh lebih rumit dan mahal daripada mengatasinya sejak awal.
- Penundaan Pembayaran Hutang Teknis: Technical debt memang wajar adanya, namun kecepatan peluncuran produk sering lebih dipilih dibandingkan membayar hutang teknis.
Penting untuk dipahami bahwa sementara beberapa kompromi mungkin diperlukan untuk merilis cepat, mengabaikan teknikal debt sepenuhnya dapat berdampak negatif pada kemampuan produk untuk berkembang dan bersaing di pasar.
Hancurkan Tembok Itu: Mengatasi Hutang Teknis yang Belum Terselesaikan
Hutang teknis yang belum terselesaikan dapat diibaratkan seperti tembok yang menghalangi kemajuan kita. Setiap masalah yang belum terselesaikan ibarat batu bata yang menjadi penghalang antara kita dan produk digital yang lebih lancar dan efisien. Awalnya, batu bata itu pendek dan dapat kita langkahi. Lama kelamaan, kita harus melompatinya. Timbul lah suatu masa di mana batu bata tersebut sudah membentuk tembok yang tidak dapat kita panjat.
Untuk mengatasi hal ini, sangat penting untuk mengidentifikasi tembok (blockers) yang ada sesegera mungkin berkaitan dengan technical debt. Selanjutnya, prioritaskan tembok mana yang harus dihancurkan terlebih dahulu. Hal ini mungkin memerlukan dedikasi waktu dan sumber daya untuk refactoring code, menyederhanakan proses, dan mengoptimalkan kinerja. Namun, menghancurkan technical debt itu ibarat investasi. Kita tidak hanya memastikan produk yang lebih sehat namun juga membebaskan tim kita untuk fokus pada inovasi dibandingkan melawan konsekuensi dari jalan pintas di masa lalu.
Kesimpulannya, technical debt tidak bisa dianggap enteng dalam dunia pengembangan produk digital. Sama seperti kita merencanakan investasi dengan cermat untuk pertumbuhan di masa depan, kita juga harus berinvestasi dengan membayar hutang-hutang teknis yang ada dengan membuat kode yang berkualitas dan arsitektur yang baik. Tentunya, kita pun harus menghindari jebakan utang teknis berikutnya saat sedang membayarkan hutang. Jangan sampai pula technical debt kita berbunga. Ingat, setiap utang teknis yang belum terselesaikan ibarat tembok yang menghalangi jalan kita. Robohkanlah utang tersebut dan bangun fondasi yang mendorong inovasi berkelanjutan.