Mengukur dan Mengelola Technical Debt dalam SDLC

Apa itu Technical Debt?

Proses development software biasanya dituntut untuk bisa mendeliver produk/fitur baru secepat mungkin dengan waktu yang sangat terbatas. Karena keterbatasan waktu tersebut sering kali engineer memikirkan fungsionalitas dari produk yang sedang dikerjakan, kurang memperhatikan jangka panjang, best practice, atau kualitas dari code yang sedang dikerjakan.

Pengerjaan yang demikian menghasilkan beberapa hal yang dikemudian hari akan menjadi issue, inilah yang disebut technical debt/tech debt. Hal seperti ini sangat wajar apalagi di lingkungan startup yang memiliki pace sangat cepat.

Too busy for efficiency. This image has been modified by me. Source: https://pbs.twimg.com/media/DTvOdk9VMAAwBQ5.png

Mungkin bagi non-engineer cukup susah menjelaskan tech debt, lebih mudahnya bisa diilustrasikan seperti gambar di atas. Dari ilustrasi tersebut fitur bisa diibaratkan box yang memiliki fungsi bisa membawa barang meski roda yang dibuat dalam bentuk kotak, jadi bisa diibaratkan engineer mengembangkan fitur sesuai fungsinya tapi tidak terlalu memikirkan jangka panjang dari code yang dibuat. Memang benar proses bisnis tetap berjalan dan fitur berjalan sesuai kebutuhan tetapi akan menjadi masalah di kemudian hari.

Nah roda kotak inilah tech debt yang dikemudian hari akan menjadi masalah jika tidak diperbaiki, namun keterbatasan waktu menjadi masalah juga karena terbentur dengan pengembangan produk/fitur baru mengikuti kebutuhan bisnis yang sedang berjalan.

Dampak Tech Debt

Tech Debt Impacts Everyone
Tech Debt Impacts Everyone

Karena Tech Debt jika tidak dikerjakan akan menimbulkan masalah di kemudian hari. Masalah yang ditimbulkan:

  • Mingkatnya bugs mengakibatkan beban kerja QA akan meningkat karena harus mereproduce bugs yang terjadi.
  • Performance dari fitur akan berkurang dan semakin lambat.
  • Bahkan bisa menjadi software mengalami downtime dan menganggu proses bisnis yang terjadi
  • Akibat dari masalah yang terjadi sebelumnya akan meningkatkan komplain dari user dan mengakibatkan beban kerja tim support akan bertambah.
  • Dan akhirnya konsumen tidak puas dengan software yang sudah dikembangkan.

Itulah dampak yang terjadi jika tech debt dibiarkan menumpuk dan memberi pengaruh negatif terhadap konsumen.

Apa Solusi untuk Tech Debt?

Yang bisa dilakukan adalah mengelola tech debt ini agar tidak mengganggu proses development dan bisnis yang berjalan. Kita tidak bisa menghapus tech debt karena tech debt akan terus terjadi seiring produk/fitur terus dikembangkan dan user yang bertambah.

Bagaimana Cara Mengelola Tech Debt?

Ada beberapa strategi dalam pengelolaan tech debt:

Pertama: Memberikan slot tech debt pada setiap sprint, jadi dalam sprint selain mengerjakan produk/fitur baru juga ada tech debt yang perlu dikerjakan.

Kedua: Dilakukan sprint cooldown, dimana ada sprint khusus untuk pengerjaan tech debt.

Dari kedua strategi tersebut yang jadi kendala dari sekian banyak tech debt yang ada, tech debt mana yang perlu dikerjakan terlebih dahulu.

Bagaimana menentukan prioritas tech debt?

Mengukur dan menentukan prioritas tech debt bisa dilakukan dengan konsep Focus on High-Leverage Activities dari buku The Effective Engineer yaitu:

Semakin tinggi leverage maka akan menjadi prioritas, untuk meningkatkan prioritas ada 2 hal yang perlu diperhatikan meningkatkan impact dan mengurangi waktu pengerjaan. Semakin tinggi impact dan semakin sedikit waktu pengerjaannya maka akan menjadi prioritas utama.

Jika konsep ini diimplementasikan dalam Tech Debt Management maka

Impact Produced: seberapa sering kejadian tech debt ini muncul. Salah satu cara mengidentifikasi Tech debt bisa melalui OPI (On Production Issue), OPI adalah insiden yang terjadi pada produk/fitur pada tingkat production. Setiap kali OPI yang sama berulang kali ada maka ini bisa menjadi angka untuk mengukur impact dari tech debt tersebut.

Time Invested: effort yang dibutuhkan untuk mengerjakan tech debt ini. Pengukuran effort bisa menggunakan T-Shirt Sizing.

T-shirt Sizing Agile Development

Jadi jika OPI sering terjadi dan waktu pengerjaan semakin sedikit maka Tech Debt tersebut akan menjadi prioritas untuk dikerjakan terlebih dahulu.

Kenapa perlu kita lakukan prioritas karena Tech Debt tidak akan bisa hilang selama software development masih terus berlangsung.

Thank you for reading, have a great day ^ _ ^

References:

  • https://www.easyagile.com/blog/agile-estimation-techniques/
  • https://www.youtube.com/watch?v=QnizCRe-sV8
  • https://blog.d46.us/effective-eng-summary/
  • https://medium.com/the-andela-way/what-technical-debt-is-and-how-its-measured-ff41603005e3